How would you plot this on a zorro chart?
Originally Posted by boatman
There is a page in the manual about this:

Code
bar(vars Open, vars High, vars Low, vars Close, vars Price, DATE Start, DATE Time): int 
User-supplied function for defining a bar; used to create special bar types such as Renko Bars or Range Bars, or to replace the mean price by a different algorithm. The function is called whenever a new price quote arrives or a price tick is read from a historical file. It can modify the candle and determine when the bar ends.

Parameters:
Open, High,
Low, Close, Price  Series with two elements of the corresponding price; f.i. Close[1] is the close price of the previous bar, and Close[0] is the most recent price. The prices of the current bar can be modified by the bar function. Price is the mean price and can be omitted when not used in the function. 
 
Start Optional start time of the bar in the OLE DATE format. Can be omitted when not used in the function.  
Time Optional time of the most recent tick resp. price quote. Can be omitted when not used in the function. 

Returns:
0 - close the bar at the normal end of the BarPeriod.
1 - close the bar now.
4 - keep the bar open until closed by returning 1, and call the bar function at every price tick. 
8 - call the bar function only once at the end of every bar. 


This code will create HA bars and plot the up bars as blue and down bars as magenta. The code sets up the HA bars during the initial run of the script. The variables in the run function (Open, High, Low, Close and Price) now refer to the HAOpen, HAHigh, HALow etc so just call these to apply them in your script.

Code
	// Haiken Ashi Bars
int bar(vars Open,vars High,vars Low,vars Close)
{
  Close[0] = (Open[0]+High[0]+Low[0]+Close[0])/4;
  Open[0] = (Open[1]+Close[1])/2;
  High[0] = max(High[0],max(Open[0],Close[0]));
  Low[0] = min(Low[0],min(Open[0],Close[0]));
  return 8;
}

function run() {
	vars Open = series(priceOpen());
	vars High = series(priceHigh());
	vars Low = series(priceLow());
	vars Close = series(priceClose());
	vars Price = series(price());
	ColorUp = BLUE;
	ColorDn = MAGENTA;
}


To identify the change in colour, you could do (I haven't tested this, but you get the idea):

Code
bool change;
if ((Close[0] > Close[1] and Close[1] < Close[2]) or (Close[0] < Close[1] and Close[1] > Close[2])) change = true;





How would you plot this on a zorro chart?