// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("MACDPrediction");

SetBarsRequired(10000,0);
function EMAn ( Cnext , r3)
{
return ( 2 * Cnext + ( r3 - 1 ) * EMA ( C , r3 ) ) / ( r3 + 1 ) ;
}
function MACDn ( Cnext , r1 , r2 )
{
return EMAn ( Cnext ,r1 ) - EMAn ( Cnext , r2 ) ;
}

r1 = Optimize("Fast avg", 12, 5, 20, 1 );
r2 = Optimize("Slow avg", 26, 20, 50, 1 );
r3 = Optimize("Signal avg", 9, 6, 12, 1 );
 
det = 500 ;
perc = 25/100 ;
Clast = SelectedValue ( C ) ;
Plot( ml = MACD(r1, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1,r2), ParamColor("MACD color", colorRed ), ParamStyle("MACD style") );
Plot( sl = Signal(r1,r2,r3), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
Plot( ml-sl, "MACD Histogram", IIf(ml-sl > 0,colorBrightGreen,colorRed ), styleNoTitle | ParamStyle("Histogram style",styleHistogram | styleNoLabel, maskHistogram ));
MACDlast = SelectedValue(MACD());

// ************************************************************************************************** //
// RMO adding here.
SwingTrd1 = 100 * (Close 
							- ((MA(C,2)+MA(MA(C,2),2)
							+MA(MA(MA(C,2),2),2) 
							+MA(MA(MA(MA(C,2),2),2),2) 
							+MA(MA(MA(MA(MA(C,2),2),2),2),2) 
							+MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2) 
							+MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2),2)
							+MA(MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2),2),2)
							+MA(MA(MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2),2), 2),2)
							+MA(MA(MA(MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2), 2),2),2),2))/10))
							/(HHV(C,10)-LLV(C,10));
RMOtrend = EMA(SwingTrd1,81);
// Finish RMO conditions.

// ************************************************************************************************** //
// IMCHIKUMO Adding here.
prds = Param( "Standard Line Periods", 13, 5, 26, 1 );
turn = Param( "Turning Line Periods", 3, 3, 10, 1 );
delay = Param( "Delayed Line Periods", 12, 4, 25, 1 );
span = Param( "Spans Periods", 16, 10, 52, 1 );

TL = ( HHV( H, turn ) + LLV( L, turn ) ) / 2;
SL = ( HHV( H, prds ) + LLV( L, prds ) ) / 2;
DL = Ref( C, delay );
Sp1 = ( SL + TL ) / 2;
Sp2 = ( HHV( H, span ) + LLV( L, span ) ) / 2;

// Finish IMICHIKUMO funcition.

// ************************************************************************************************** //
// BUY and SELL condition.

//Buy= (TL > Min(Ref(Sp1,-12),Ref(Sp2,-12))) AND (RMOtrend > 0) AND (TL > SL);
//Sell = (SL > TL) AND (H < Min(Ref(Sp1,-12),Ref(Sp2,-12)));

Buy= (MACD(12,26)> Signal(12,26,9)) AND (RMOtrend > 0) AND (TL > SL) AND (TL > Min(Ref(Sp1,-12),Ref(Sp2,-12)));
Sell = ( Signal(12, 26, 9) > MACD(12,26) ) AND (SL > TL) AND (H < Min(Ref(Sp1,-12),Ref(Sp2,-12)));


PlotShapes(IIf(Buy,shapeUpArrow,shapeNone) ,colorBrightGreen);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed);
Plot ( 0 ,"", colorBlack ,styleDashed ) ;
_SECTION_END();