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

Hc=(O+H+L+O)/4; // CLOSE REPLACED BY OPEN
Ho = AMA( Ref( Hc, -1 ), 0.5 );
pds = Optimize("pds ",Param("pds ",1,1,14,1),1,14,1);//4
period = Optimize("period ",Param("period ",1,1,14,1),1,14,1);


function DetrendedPriceOsc( Periods )
{
return Hc - AMA(Ref( MA( Hc, Periods ), -( 1 + Periods/2 ) ),0.5);
}

myArray1 = ( RSIa( DetrendedPriceOsc( period ),pds ) + Ref(RSIa(DetrendedPriceOsc( period ),pds),-1) + Ref(RSIa(DetrendedPriceOsc( period ),pds),-2) +Ref(RSIa(DetrendedPriceOsc( period ),pds),-3))/4 ;
myArray2 = ( RSIa( Ho,pds )+ Ref(RSIa( Ho,pds ),-1) +Ref(RSIa( Ho,pds ),-2) + Ref(RSIa(Ho,pds),-3))/4 ;


Plot( myArray1 , " RSI_myArray1 ", IIf( myArray1 >Ref(myArray1 ,-1), colorGreen, colorRed ));
Plot( myArray2 , " RSI_myArray2 ", IIf( myArray2 >Ref(myArray2 ,-1), colorGreen, colorRed ));

Plot(80,"RESISTENCE",colorRed, styleLine|styleDashed | styleThick);
Plot(50,"",colorBlack, styleLine|styleDashed | styleThick);
Plot(20,"SUPPORT",colorBlue, styleLine|styleDashed | styleThick);

Buy=Cover=Cross(myarray1,myarray2) ;
Short=Sell=Cross(myarray2,myarray1) ;

Plot ( 2, "", IIf( Buy , colorGreen, IIf( Short, colorRed, colorPink )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );

ExRem(Buy,Sell);
ExRem(Short,Cover);

PlotShapes( Buy * shapeUpTriangle, colorBrightGreen, 0); 
PlotShapes( Short * shapeDownTriangle, colorOrange, 0); 
PlotShapes( Sell * shapeSmallCircle, colorRed, 0,myarray1,Offset=25); 
PlotShapes( Cover * shapeSmallCircle, colorDarkGreen, 0,myarray1,Offset=-25); 

ApplyStop(stopTypeLoss, stopModePercent, Optimize( "stopTypeLoss", 3.0, 2.5, 2.5, 0.5 ) ,1, True );
ApplyStop(stopTypeProfit , stopModePercent, Optimize( "stopTypeProfit ", 2.5, 2.5, 2.5, 0.5 ) ,1, True );
ApplyStop(stopTypeTrailing , stopModePercent, Optimize( "stopTypeProfit ", 3.5, 2.5, 2.5, 0.5 ) ,1, True );

// change the questionmarks the the value which is used to plot the indicator
base_array=myarray1;

////////////////////////////// HIGHLY IMPORTANT ////////////////////

//ACTIVATE STOPS IN SETTINGS
e = Equity(1,0); /* Highly Important!!. "Removes all extra signals, evaluates 
stops AND writes BACK signals to Sell/Cover arrays". As it should be!!*/

PlotShapes( Buy* shapeUpArrow , colorBlack, 0); 
PlotShapes( Short* shapeDownArrow , colorBlack, 0);

/*
1 - regular exit
2 - Max. loss
3 - profit target
4 - trailing
5 - ruin stop
6 - n-bar stop
*/

PlotShapes(IIf(Ref(Cover==2,-1), shapeCircle, shapeNone),colorRed,0,base_array,0); //stoploss
PlotShapes(IIf(Ref(Cover==3,-1), shapeCircle, shapeNone),colorGreen,0,base_array,0); //profit target

PlotShapes(IIf(Ref(Sell==2,-1), shapeCircle, shapeNone),colorRed,0,base_array,0); //stoploss
PlotShapes(IIf(Ref(Sell==3,-1), shapeCircle, shapeNone),colorGreen,0,base_array,0); //profit target

////////////////////////////////////////////////////////////////////////////////
OffsetBuy = Param("Offset_Buy (green)", -9, -25, 25, 1 );
OffsetSell = Param("Offset_Sell (blue)", 2, -25, 25, 1 );
OffsetShort = Param("Offset_Short (red)", 7, -25, 25, 1 );
OffsetCover = Param("Offset_Cover (orange)", -4, -25, 25, 1 );

OND=Ref(O,1); //OPEN NEXT DAY
base_arrayBUY=base_array+OffsetBuy ; //just for offset
base_arraySELL=base_array+OffsetSell ; //just for offset
base_arraySHORT=base_array+OffsetShort ; //just for offset
base_arrayCOVER=base_array+OffsetCover ; //just for offset

for( i = 0; i < BarCount; i++ ) 
{ 
if( Buy[i] ) PlotText( "EL " + OND[ i ], i, base_arrayBUY[ i ], colorGreen );
if( Sell[i] AND NOT Short[i] ) PlotText( "LE " + OND[ i ], i, base_arraySELL[ i ], colorBlue);
if( Short[i] ) PlotText( "ES " + OND[ i ], i, base_arraySHORT[ i ], colorRed); 
if( Cover[i] AND NOT Buy[i] ) PlotText( "SE " + OND[ i ], i, base_arrayCOVER[ i ], colorOrange); 
}
_SECTION_END();

_SECTION_BEGIN("trending ribbon");
GraphXSpace=15;
uptrend=Buy;
downtrend=Short;
Plot( 2, "ribbon",IIf( uptrend, colorGreen, IIf( downtrend, colorRed, colorLavender )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );
_SECTION_END();