Hiken Ashi Indecator

THE LORD

Active Member
#1
SECTION_BEGIN("Hekin Ashi");
function ZeroLagTEMA( array, period )
{
TMA1 = TEMA( array, period );
TMA2 = TEMA( TMA1, period );
Diff = TMA1 - TMA2;
return TMA1 + Diff ;
}

/////////////////////// Heikin-Ashi code
HaClose = (O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );

avp = Param("Up TEMA avg", 34, 1, 100 );
avpdn = Param("Dn TEMA avg", 34, 1, 100 );

// Velvoort is using not original, but modified Heikin-Ashi close
HaClose = ( HaClose + HaOpen + Max( H, HaOpen ) + Min( L, HaOpen ) )/4;

// up average
ZlHa = ZeroLagTEMA( HaClose, avp );
ZlCl = ZeroLagTEMA( ( H + L ) / 2, avp );
ZlDif = ZlCl - ZlHa;

keep1 = Hold( HaClose >= HaOpen, 2 );
keep2 = ZlDif >= 0;
keeping = keep1 OR keep2;
keepall = keeping OR ( Ref( keeping, -1 ) AND ( C > O ) OR C >= Ref( C, -1 ) );
keep3 = abs( C - O ) < ( H - L ) * 0.35 AND H >= Ref( L, -1 );
utr = keepall OR ( Ref( keepall, -1 ) AND keep3 );

// dn average
ZlHa = ZeroLagTEMA( HaClose, avpdn );
ZlCl = ZeroLagTEMA( ( H + L ) / 2, avpdn );
ZlDif = ZlCl - ZlHa;

keep1 = Hold( HaClose < HaOpen, 2 );
keep2 = ZlDif < 0;
keeping = keep1 OR keep2;
keepall = keeping OR ( Ref( keeping, -1 ) AND ( C < O ) OR C < Ref( C, -1 ) );
keep3 = abs( C - O ) < ( H - L ) * 0.35 AND L <= Ref( H, -1 );
dtr = keepall OR ( Ref( keepall, -1 ) AND keep3 );

upw = dtr == 0 AND Ref( dtr, -1 ) AND utr;
dnw = utr == 0 AND Ref( utr, -1 ) AND dtr;

Haco = Flip( upw, dnw );


if( ParamToggle("Chart Type", "Price with color back|HACO wave" ) )
{
Plot( Haco, "Haco", colorRed );
}
else
{
Plot( C, "Close", colorBlack, ParamStyle( "Style", styleCandle, maskPrice ) );
Plot( 1, "", IIf( Haco , colorPaleGreen, colorPink ), styleArea | styleOwnScale| styleNoLabel, 0, 1 );
}


def_Buy = GetFnData("Beta")>1.1 AND V>1000 AND V>EMA(V,50) AND Close>10;
def_Sell =GetFnData("Beta")>1.1 AND V>1000 AND V>EMA(V,50) AND Close>10;


//Buy = def_Buy AND Flip(upw,dnw) AND Ref(Flip(dnw,upw),-1);
//Sell = def_Sell AND Flip(dnw,upw) AND Ref(Flip(upw,dnw),-1);


sector = SectorID(1);
industry = IndustryID(1);



//...........................................
Haco=Flip(upw,dnw);

hc = Haco - Ref(Haco,-1);hc = Ref(hc,-1);
Buy = IIf(hc == 1,1,0); BuyPrice = O;
Sell = IIf(hc == -1,1,0); SellPrice = O;
Cover = Buy; CoverPrice = O;
Short = Sell; ShortPrice = O;
Filter = Buy OR Sell;

PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15);
PlotShapes(IIf(Buy,shapeHollowUpArrow,shapeNone),colorWhite,0,L,-15);
PlotShapes(IIf(Buy,shapeHollowSmallCircle,shapeNone),colorWhite,0,BuyPrice,0);

PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15);
PlotShapes(IIf(Sell,shapeHollowDownArrow,shapeNone),colorWhite,0,H,-15);
PlotShapes(IIf(Sell,shapeHollowSmallCircle,shapeNone),colorWhite,0,SellPrice,0);

PlotShapes(IIf(Short,shapeDownTriangle,shapeNone),colorYellow,0,H,IIf(Short AND Sell,-30,-15));
PlotShapes(IIf(Short,shapeHollowDownTriangle,shapeNone),colorWhite,0,H,IIf(Short AND Sell,-30,-15));
PlotShapes(IIf(Short,shapeHollowCircle,shapeNone),colorWhite,0,ShortPrice,0);

PlotShapes(IIf(Cover,shapeUpTriangle,shapeNone),colorLightBlue,0,L,IIf(Cover AND Buy,-30,-15));
PlotShapes(IIf(Cover,shapeHollowUpTriangle,shapeNone),colorWhite,0,L,IIf(Cover AND Buy,-30,-15));
PlotShapes(IIf(Cover,shapeHollowCircle,shapeNone),colorWhite,0,CoverPrice,0);


AddColumn(IIf(Buy, 66,IIf(Sell, 83,Null )),"Buy/Sell",formatChar,IIf(Buy,colorGreen,IIf(Sell,colorRed,colorDefault)),colorDefault,width = 60);
AddColumn(C,"Close",0,IIf(C>Ref(C,-1),colorGreen,IIf(C<Ref(C,-1),colorRed,colorBlue)));
AddColumn(ROC(C,1),"Change %",0,IIf(C>Ref(C,-1),colorGreen,IIf(C<Ref(C,-1),colorRed,colorBlue)));
AddColumn(V,"Volume",1.0,IIf(V>Ref(V,-1)AND C>Ref(C,-1),colorGreen,IIf(V>Ref(V,-1)AND C<Ref(C,-1),colorRed,colorBlue)),colorDefault);
AddColumn(GetFnData("Beta"),"Beta");
AddTextColumn(Sector,"Sector Name" );
AddTextColumn(Industry,"Industry Name");
AddColumn(GetFnData("InsiderHoldPercent"),"Insider Hold Percent");
AddColumn(GetFnData("InstitutionHoldPercent"),"Institution Hold Percent");
_SECTION_END();
 
#3
Hi
Nice of you. But there are many words with gaps resulting into errors. I would appreciate your cleaning the same. Warm regards.SRJC
 
#6
This might be useful too:

/*
Heikin-Ashi(Koma-Ashi) with Moving Average Type
*/
SetChartOptions(2, chartWrapTitle);

// Calculate Moving Average
MAPeriod = Param("MA Period", 15, 1, 100);
MAOpen = EMA(Open, MAPeriod);
MAHigh = EMA(High, MAPeriod);
MALow = EMA(Low, MAPeriod);
MAClose = EMA(Close, MAPeriod);

HaClose = (MAOpen + MAHigh + MALow + MAClose) / 4;
HaOpen = AMA(Ref(HaClose, -1), 0.5);

// for graph collapse
for(i = 0; i <= MAPeriod; i++) HaClose = Null;
/*
// same
// HaOpen = (Ref(HaOpen, -1) + Ref(HaClose, -1)) / 2;
HaOpen[ 0 ] = HaClose[ 0 ];
for(i = 1; i < BarCount; i++) {
HaOpen = (HaOpen[i - 1] + HaClose[i - 1]) / 2;
}
*/

HaHigh = Max(MAHigh, Max(HaClose, HaOpen));
HaLow = Min(MALow, Min(HaClose, HaOpen));

// outs comments
"BarIndex = " + BarIndex();
"Open = " + Open;
"High = " + High;
"Low = " + Low;
"Close = "+ Close;
"HaOpen = " + HaOpen;
"HaHigh = " + HaHigh;
"HaLow = " + HaLow;
"HaClose = "+ HaClose;

// Plot graphs
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} HaOpen %g, HaHigh %g,
HaLow %g, HaClose %g (%.1f%%) {{VALUES}}",
HaOpen, HaHigh, HaLow, HaClose, SelectedValue(ROC( HaClose, 1))));
PlotOHLC(HaOpen, HaHigh, HaLow, HaClose, _DEFAULT_NAME(), ParamColor("Color",
colorBlack), styleCandle);

_SECTION_BEGIN("Colour Tap");
SetChartBkGradientFill( ParamColor("BgTop", ColorRGB( 172,172,172 )),

ParamColor("BgBottom", ColorRGB( 172,172,172 )),ParamColor("titleblock",ColorRGB( 172,172,172 )));
_SECTION_END();
 

Similar threads