// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("TSI");
SetChartBkColor(ParamColor("Panel Color",colorLightGrey));
SetChartBkGradientFill(ParamColor("Upper Chart",colorLightGrey),ParamColor("Lower Chart",colorLightGrey));

r=Param("TSI period 'R':",7,1,100,1);
s=Param("TSI period 'S':",27,1,100,1);
u=Param("TSI period 'U':",1,1,100,1);
sig=Param("Signal period:",7,1,100,1);

parmTSILStyle = ParamStyle("TSI Line Style", styleLine|styleThick);
parmTSILUpColor = ParamColor("TSI Line UpColor", colorGreen);
parmTSILDwnColor = ParamColor("TSI Line DownColor", colorRed);
parmTSISStyle = ParamStyle("TSI SignalLine Style", styleLine| styleThick);
parmTSISUpColor = ParamColor("TSI SignalLine UpColor", colorGreen);
parmTSISDwnColor = ParamColor("TSI SignalLine DownColor", colorRed);
parmHistUpColor = ParamColor("TSI Histogram UpColor", colorLime);
parmHistDwnColor = ParamColor("TSI Histogram DownColor", colorOrange);

 
Mtm = C - Ref ( C, -1 );
AbsMtm = abs ( Mtm );
Num_T = EMA ( EMA( EMA ( Mtm, r ), s ), u );
Den_T = EMA ( EMA( EMA ( AbsMtm, r ), s ), u);

TSI = 100 * Nz ( Num_T / Den_T );
TSIL = 100 * Nz ( Num_T / Den_T );

//Green TSIL Line=Rising; Red TSIL Line=Falling
col = IIf( TSIL > Ref( TSIL, -1 ), parmTSILUpColor, parmTSILDwnColor);
Plot( TSIL, "TSI("+r+","+s+","+u+")", col, parmTSILStyle);
Plot(0,"",ParamColor( "Color ZeroLine",colorBlueGrey),styleLine);
//Green EMA TSI,sig Line=Rising; Red EMA TSI,sig Line=Falling
col = IIf( EMA(TSI,sig) > Ref( EMA(TSI,sig), -1 ), parmTSISUpColor, parmTSISDwnColor );
Plot( EMA(TSI,sig), "", col, parmTSISStyle);
//Histogram Momentum
Disp1=ParamToggle("Histogram Momentum","Show|Hide",1);
HistColM= IIf( TSI > Ref(TSI,-1),parmHistUpColor,parmHistDwnColor);
if(Disp1){
Plot(TSI,"",HistColM,ParamStyle("Histogram style",styleHistogram|styleThick,maskHistogram));}
//Histogram Standard
HistColS= IIf(TSI>0,parmHistUpColor,parmHistDwnColor);
Plot(TSI,"",HistColS,ParamStyle("Histogram style",styleHistogram|styleThick,maskHistogram));
//Signals
mybuy=  TSIL > Ref( TSIL, -1 ) AND EMA(TSI,sig) > Ref( EMA(TSI,sig), -1 ) AND TSIL>EMA(TSI,sig) ;
mysell= TSIL < Ref( TSIL, -1 ) AND EMA(TSI,sig) < Ref( EMA(TSI,sig), -1 ) AND TSIL<EMA(TSI,sig) ;
Buy = ExRem(myBuy, mysell);
Sell = ExRem(mysell, myBuy);
Disp2=ParamToggle("Buy and Sell Arrows","Show|Hide",1);
if(Disp2){
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorDarkGreen,0);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorDarkRed,0);}
Title =FullName();
_SECTION_END();