heiken ashi smoothed with superimposed regular candles for accurate price action.
iOS really needs a heikin ashi smoothed option, which should also be allowed to be superimposed over the top of normal 'live price action' candlesticks if required as this set up is very useful visually for determining trends as part a very well know heikin ashi set up.

-
Anonymous commented
Yes! Please add it!!
-
Anonymous commented
Heiken Ashi averaging technique - if this can be implemented then it would be same as average price bar which is solid tool for trading.
– haClose = (Open + High + Low + Close) / 4 – haOpen = (haOpen(previous bar) +
haClose(previous bar))/2
– haHigh = Maximum(High, haOpen) – haLow = Minimum(Low,haOpen)
-
vforvitiello commented
YES PLEASE ADD THIS INDICATOR!!!
-
Nato commented
Heiken Ashi Indicator Smoothed:
MaMetod: Moving Average calculation metod it can be:
MODE_SMA: 0MODE_EMA: 1
MODE_SMMA: 2 (default)
MODE_LWMA: 3
MaPeriod: It uses this number of BARs on your selected timeframe for calculation of Heiken Ashi Indicator
MaMetod2: Moving Average calculation metod it can be:
MODE_SMA: 0
MODE_EMA: 1
MODE_SMMA: 2
MODE_LWMA: 3 (default)
MaPeriod2: It uses this number of BARs on your selected timeframe for calculation of Heiken Ashi Indicator -
Nato commented
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_color4 Lime
//---- parameters
extern int MaMetod =2;
extern int MaPeriod=6;
extern int MaMetod2 =3;
extern int MaPeriod2=2;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init()
{
//---- indicators
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_HISTOGRAM,0,1,Red);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,0,1,Lime);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM,0,3,Red);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_HISTOGRAM,0,3,Lime);
SetIndexBuffer(3,ExtMapBuffer4);
//----
SetIndexDrawBegin(0,5);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexBuffer(4,ExtMapBuffer5);
SetIndexBuffer(5,ExtMapBuffer6);
SetIndexBuffer(6,ExtMapBuffer7);
SetIndexBuffer(7,ExtMapBuffer8);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double maOpen,maClose,maLow,maHigh;
double haOpen,haHigh,haLow,haClose;
if(Bars<=10) return(0);int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(counted_bars==0) limit-=1+MathMax(1,MathMax(MaPeriod,MaPeriod2));int pos=limit;
while(pos>=0)
{
maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
maLow=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_LOW,pos);
maHigh=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_HIGH,pos);
//----
haOpen=(ExtMapBuffer5[pos+1]+ExtMapBuffer6[pos+1])/2;
haClose=(maOpen+maHigh+maLow+maClose)/4;
haHigh=MathMax(maHigh,MathMax(haOpen,haClose));
haLow=MathMin(maLow,MathMin(haOpen,haClose));
if(haOpen<haClose)
{
ExtMapBuffer7[pos]=haLow;
ExtMapBuffer8[pos]=haHigh;
}
else
{
ExtMapBuffer7[pos]=haHigh;
ExtMapBuffer8[pos]=haLow;
}
ExtMapBuffer5[pos]=haOpen;
ExtMapBuffer6[pos]=haClose;
pos--;
}
int i;
for(i=0; i<limit; i++) ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer7,0,MaPeriod2,0,MaMetod2,i);
for(i=0; i<limit; i++) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer8,0,MaPeriod2,0,MaMetod2,i);
for(i=0; i<limit; i++) ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer5,0,MaPeriod2,0,MaMetod2,i);
for(i=0; i<limit; i++) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer6,0,MaPeriod2,0,MaMetod2,i);
//----
return(0);
}
//+------------------------------------------------------------------+ -
Mark commented
would be great to choose the smoothing method. example, simple moving average, exponential moving average, hull moving average...
-
Fernando commented
Good!
-
John commented
I liked this idea
-
Renato Silva commented
I'd suggest deploying Heikin ashi smoothed and also would like the values of the indicators applied the Heikin ashi chart and not the original OHLC.