Help required to correct code - ADX Monthly Buy-Sell

#1
Dear Members,
Being a novice in programming, I'm trying to code ADX to give a Buy/Sell signal wherein, in the earlier candle, ADX is above or below PDI / MDI and an arrow plotted when it crosses the PDI /MDI - On Monthly time frame.

Request you to pl check and help to correct the code

/*_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
*/

_SECTION_BEGIN("ADX");
range = Param("Periods", 14, 2, 200, 1 );
Plot( ADX(range), _DEFAULT_NAME(), ParamColor( "ADX color", colorBlue ), ParamStyle("ADX style", styleThick ) );
Plot( PDI(range), "+DI", ParamColor( "+DI color", colorGreen ), ParamStyle("+DI style") );
Plot( MDI(range), "-DI", ParamColor( "-DI color", colorRed ), ParamStyle("-DI style") );
_SECTION_END();
// 1 3 2 3 2 3 4 3 4 3 2

/*ADX_BuyCross_Top1= ((Ref(ADX(14),-1) > ADX(14)) AND (Ref(PDI(14),-1) < PDI(14))) AND PDI(14) > MDI(14);
ADX_BuyCross_TopCross= ADX(14) < PDI(14);
ADX_TOPBuy = ADX_BuyCross_Top1 == True AND ADX_BuyCross_TopCross == True;
//(Cross(ADX(14),(PDI(14) OR MDI(14))== True));
ADX_BuyCross_Bott1= ((Ref(ADX(14),-1) < ADX(14)) AND (Ref(MDI(14),-1) > MDI(14))) AND PDI(14) > MDI(14);
ADX_BuyCross_Bott= ADX(14) > MDI(14);
ADX_BOTTBuy = ADX_BuyCross_Bott1 == True AND ADX_BuyCross_Bott == True;

ADX_SellCross_Top1= ((Ref(ADX(14),-1) > ADX(14)) AND (Ref(MDI(14),-1) < MDI(14))) AND MDI(14) > PDI(14);
ADX_SellCross_TopCross= ADX(14) < MDI(14);
ADX_TOPSell = ADX_SellCross_Top1 == True AND ADX_SellCross_TopCross == True;
//(Cross(ADX(14),(PDI(14) OR MDI(14))== True));
ADX_SellCross_Bott1= ((Ref(ADX(14),-1) < ADX(14)) AND (Ref(MDI(14),-1) < MDI(14))) AND MDI(14) > PDI(14);
ADX_SellCross_Bott= ADX(14) > PDI(14);
ADX_BOTTSell = ADX_SellCross_Bott1 == True AND ADX_SellCross_Bott == True;
*/

TimeFrameSet( inMonthly );
ADX_M=ADX(14);
ADX_BuyCross_Top1= ((Ref(ADX(14),-1) > ADX(14)) AND (Ref(PDI(14),-1) < PDI(14))) AND (PDI(14) > MDI(14))== True;
ADX_BuyCross_TopCross= (Ref(ADX(14),-1) > PDI(14)) AND Cross(ADX(14), PDI(14)==True) ;
ADX_TOPBuy = ADX_BuyCross_Top1 OR ADX_BuyCross_TopCross == True;
//(Cross(ADX(14),(PDI(14) OR MDI(14))== True));
ADX_BuyCross_Bott1= ((Ref(ADX(14),-1) < ADX(14)) AND (Ref(PDI(14),-1) < PDI(14))) AND (PDI(14) > MDI(14));
ADX_BuyCross_Bott= (Ref(ADX(14),-1) < MDI(14)) AND Cross(ADX(14), MDI(14));
ADX_BOTTBuy = ADX_BuyCross_Bott1 AND ADX_BuyCross_Bott == True;

ADX_SellCross_Top1= ((Ref(ADX(14),-1) > ADX(14)) AND (Ref(MDI(14),-1) < MDI(14))) AND MDI(14) > PDI(14);
ADX_SellCross_TopCross= ADX(14) < MDI(14);
ADX_TOPSell = ADX_SellCross_Top1 == True AND ADX_SellCross_TopCross == True;
//(Cross(ADX(14),(PDI(14) OR MDI(14))== True));
ADX_SellCross_Bott1= ((Ref(ADX(14),-1) < ADX(14)) AND (Ref(MDI(14),-1) < MDI(14))) AND MDI(14) > PDI(14);
ADX_SellCross_Bott= ADX(14) > PDI(14);
ADX_BOTTSell = ADX_SellCross_Bott1 == True AND ADX_SellCross_Bott == True;MACD_Mthly = TimeFrameExpand( ADX_M, inMonthly );

Buy = ADX_BOTTBuy OR ADX_BOTTBuy == True; //(ADX_TOPBuy = ADX_BuyCross_Top1 OR ADX_BOTTBuy = ADX_BuyCross_Bott1) == True;
Sell = ADX_TOPSell = (ADX_SellCross_Top1 OR ADX_BOTTSell = ADX_SellCross_Bott1) == True;

shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
PlotShapes(shape, IIf(Buy, colorGreen, colorRed), 0, IIf(Buy, Low, High));

Attaching the sample expected o/p. please



Warm Regards...RB
 

Similar threads