MTF NMA
Multi-Time Frame (MTF) NickMA AFL in Amibroker incorporates NickMA across different time frames. Integrated with Amibroker data feed, this AFL assesses NickMA signals from various time frames, aiding traders in identifying potential trends or reversals. Utilizing Amibroker data feed capabilities, MTF NMA enhances traders’ ability to make informed decisions based on NickMA analysis across multiple time frames.
/ //NMA System Modified by Cas _SECTION_BEGIN("graph"); SetChartOptions(0,chartShowArrows|chartShowDates); gxs=Param("GRAPH spaceing",10,5,50,5); GraphXSpace = gxs; strWeekday = StrMid("SunMonTueWedThuFriSat", SelectedValue(DayOfWeek())*3,3); _SECTION_END(); _SECTION_BEGIN("NMA "); k = Optimize("K",Param("K",1.75,1,5,0.25),1,5,0.25); Per= Optimize("atr",Param("atr",10,3,30,1),3,30,1); j=(O+H+L+C)/4; nm= (H-L); rfsctor = WMA(nm, PER); revers = K * rfsctor; Trend = 1; NW[0] = 0; for(i = 1; i < BarCount; i++) { if(Trend[i-1] == 1) { if(j[i] < NW[i-1]) { Trend[i] = -1; NW[i] = j[i] + Revers[i]; } else { Trend[i] = 1; if((j[i] - Revers[i]) > NW[i-1]) { NW[i] = j[i] - Revers[i]; } else { NW[i] = NW[i-1]; } } } if(Trend[i-1] == -1) { if(j[i] > NW[i-1]) { Trend[i] = 1; NW[i] = j[i] - Revers[i]; } else { Trend[i] = -1; if((j[i] + Revers[i]) < NW[i-1]) { NW[i] = j[i] + Revers[i]; } else { NW[i] = NW[i-1]; } } } } Plot(NW, "", IIf(Trend == 1, 6, 4), 4); //---------------trading ------------- Buy=Cross(j,nw); Short=Cross(nw,j); Sell=Cross(nw,j); Cover=Cross(j,nw); Buy=ExRem(Buy,Sell); Sell=ExRem(Sell,Buy); Short=ExRem(Short,Cover); Cover=ExRem(Cover,Short); PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorSkyblue, 0,Low,-15); PlotShapes(IIf(Sell, shapeHollowDownArrow, shapeNone),colorLightYellow, 0,High,-15); PlotShapes(IIf(Cover, shapeHollowUpArrow, shapeNone),colorTan, 0,Low,-25); PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorGold, 0,High,-25); //-----------end-------------- Long=Flip(Buy,Sell OR Cover); Shrt=Flip(Sell,Buy OR Cover); NOTrade= NOT (Long OR shrt); BuyPrice=ValueWhen(Buy,C); SellPrice=ValueWhen(Sell,C); ShortPrice=ValueWhen(Short,C); CoverPrice=ValueWhen(Cover,C); _SECTION_END(); grid_day = IIf(Day()!=Ref(Day(),-1),1,0); Plot(grid_day,"",colorDarkGrey,styleHistogram|styleDashed|styleNoLabel|styleOwnScale); ///-------------------------------------------------------------------------------------------------- Candletype=ParamList("Candle Type","Candle|Heinkin",0); UpCandle = ParamColor("Up Color", colorBrightGreen ); DownCandle = ParamColor("Down Color", colorDarkRed ); Consolidation = ParamColor("Consolidation", colorBlack ); BG2a=HHV(LLV(L,4)+ATR(4),8); BR2a=LLV(HHV(H,4)-ATR(4),8); if(Candletype=="Candle") { Candlecolor = IIf(Close>BG2a ,UpCandle,IIf(Close < BR2a,DownCandle,Consolidation)); SetBarFillColor( IIf(OBG2a,EncodeColor(colorLime)+" UP",WriteIf(Close M5,EncodeColor(colorLime)+" UP",WriteIf(Cm5 M15,EncodeColor(colorLime)+" UP",WriteIf(Cm15 M30,EncodeColor(colorLime)+" UP",WriteIf(Cm30 H1,EncodeColor(colorLime)+" UP",WriteIf(CH1 H4,EncodeColor(colorLime)+" UP",WriteIf(Ch4 BGH ,UpCandle,IIf(ac < BRH,DownCandle,Consolidation)); SetBarFillColor( IIf(aO BGH,EncodeColor(colorLime)+" UP",WriteIf(aC H5,EncodeColor(colorLime)+" UP",WriteIf(cH5 H15,EncodeColor(colorLime)+" UP",WriteIf(cH15 H30,EncodeColor(colorLime)+" UP",WriteIf(cH30 H1A,EncodeColor(colorLime)+" UP",WriteIf(Ch1A H4,EncodeColor(colorLime)+" UP",WriteIf(Ch4 HBG ,colorAqua,IIf(Hac < HBR,colorCustom12,colorGrey50)); if( SetForeign(Vr) ) {Plot(2, "", Co,styleArea+styleOwnScale | styleNoLabel, -1, 100); }else{ Plot(2, "", 1,styleArea+styleOwnScale | styleNoLabel, -1, 100);} //===================================================================================== TimeFrameSet( 2*Interval() ); BG2H=HHV(LLV(HaL,4)+ATR(4),8); BR2H=LLV(HHV(HaH,4)-ATR(4),8); C1H=HaC; TimeFrameRestore(); M5H = TimeFrameExpand(BG2H,2*Interval(),expandFirst ); MM5H=TimeFrameExpand( BR2H,2*Interval(),expandFirst ); cM5H=TimeFrameExpand( C1H, 2*Interval(),expandFirst ); TimeFrameSet( 4*Interval() ); BG2H=HHV(LLV(HaL,4)+ATR(4),8); BR2H=LLV(HHV(HaH,4)-ATR(4),8); C1H=HaC; TimeFrameRestore(); M15H = TimeFrameExpand(BG2H,4*Interval(),expandFirst ); MM15H=TimeFrameExpand(BR2H,4*Interval(),expandFirst ); cM15H=TimeFrameExpand( C1H,4*Interval(),expandFirst ); TimeFrameSet( 6*Interval() ); BG2H=HHV(LLV(HaL,4)+ATR(4),8); BR2H=LLV(HHV(HaH,4)-ATR(4),8); C1H=HaC; TimeFrameRestore(); M30H = TimeFrameExpand(BG2H,6*Interval(),expandFirst ); MM30H=TimeFrameExpand(BR2H,6*Interval(),expandFirst ); cM30H=TimeFrameExpand( C1H,6*Interval(),expandFirst ); TimeFrameSet( 8*Interval() ); BG2H=HHV(LLV(HaL,4)+ATR(4),8); BR2H=LLV(HHV(HaH,4)-ATR(4),8); C1H=HaC; TimeFrameRestore(); H1H = TimeFrameExpand(BG2H ,8*Interval(),expandFirst ); HH1H=TimeFrameExpand( BR2H,8*Interval(),expandFirst ); Ch1H=TimeFrameExpand( C1H,8*Interval(),expandFirst ); TimeFrameSet( 16*Interval() ); BG2H=HHV(LLV(HaL,4)+ATR(4),8); BR2H=LLV(HHV(HaH,4)-ATR(4),8); C1H=HaC; TimeFrameRestore(); H4H = TimeFrameExpand( BG2H,16*Interval(),expandFirst ); HH4H=TimeFrameExpand( BR2H,16*Interval(),expandFirst ); cH4H = TimeFrameExpand( C1H,16*Interval(),expandFirst ); RestorePriceArrays(); Comm2=("\n "+VR+ " - Phase in ")+"\n "+ EncodeColor(colorLightYellow)+(""+Interval(2)+":")+ WriteIf(Hac>HBG,EncodeColor(colorLime)+" UP",WriteIf(Hac < HBR,EncodeColor(colorRed)+" DN",EncodeColor(colorGrey50)+" ~~"))+ EncodeColor(colorLightYellow)+(" "+2*Interval()/60+"m:")+ WriteIf(cM5H>M5H,EncodeColor(colorLime)+" UP",WriteIf(cM5H M15H,EncodeColor(colorLime)+" UP",WriteIf(cM15H M30H,EncodeColor(colorLime)+" UP",WriteIf(cM30H H1H,EncodeColor(colorLime)+" UP",WriteIf(Ch1H H4H,EncodeColor(colorLime)+" UP",WriteIf(cH4H