// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("sheroune"); 
 
SetChartBkColor( colorBlack ) ; 
f = Param("fast ema",12,1,50,1);
s = Param("Slow ema",26,2,100,1); 
t = Param ("signal",9,1,50,1);
A1=EMA(C,f)-EMA(C,s); 
a2 = EMA(a1,t);
Hist = a1-a2; 
em = EMA(Hist,2);
D1=14;

ST33=StochD(14);
Ar=EMA(RSI(5),13);
RSI13 = EMA( ar, 13 );

Bar_col = IIf( st33 > 80,colorBlue,IIf( st33 < 20,colorOrange,IIf(st33 > Ref(st33,-1), colorBrightGreen,  colorRed)));
Plot(C,"",bar_col,styleBar+styleThick);
em34 = EMA(C,34);
em20 = EMA(C,20);
Plot(em34,"",colorWhite,styleThick);
Plot(em20,"",colorAqua,styleThick);
PlotOHLC(em34,IIf(em34 > em20,em34,em20),IIf(em34 < em20,em34,em20),em34,"",IIf(em20 > em34,colorBlue,colorBrown),styleCloud+styleNoLabel);

_SECTION_END();

_SECTION_BEGIN("Support-Resistance");
SupRes=ParamToggle("Sup-Res","No|Yes",1);
SupResA = Param("Sup-Res A Period",20,0,100,1); 
SupResB = Param("Sup-Res B Period",25,0,100,1);

Res1 = ParamColor("Resistance High", colorRed );
Res2 = ParamColor("Resistance Low", colorDarkRed );
Sup1 = ParamColor("Support High", colorDarkGreen );
Sup2 = ParamColor("Support Low", colorBrightGreen );
if(SupRes)
{
MaxGraph = 12;
BuyOffSet = SupResA;//Optimize("BuyOffSet",18,15,20,1);
SellOffset = BuyOffSet;//Optimize("SellOffset",2,2,14,2);
RegLength = 5;//Optimize("RegLength",5, 2,11,2);
BuyATRPeriod = 2;//Optimize("BuyATRPeriod",2,2,5,1);
SellATRPeriod = BuyATRPeriod;//Optimize("SellATRPeriod",4,2,11,2);
ATRMultiplier = 0.5;//Optimize("ATRMultiplier",1,0.7,1.25,.05);
SuppA = HHV(H-ATRMultiplier*ATR(BuyATRPeriod),BuyOffset); /* RED */
RessB = LLV(L+ATRMultiplier*ATR(SellATRPeriod),SellOffset); /* GREEN */
Plot(SuppA,"",sup1,ParamStyle("Sup-Res A Style", styleDashed|styleNoTitle) );
Plot(RessB,"",res2,ParamStyle("Sup-Res A Style", styleDashed|styleNoTitle) ); 

nn=SupResB;
mmm=100;
TYP=(High + Low + 2*Close)/4;
CI=(TYP-MA(TYP,14))/(0.015*StDev(TYP,14));
CCCI=EMA(CI,5)+mmm;
Hh=HHV(H,nn);
Ll=LLV(L,nn);
MM=(Hh+Ll)/2;
CCCC=EMA(CCCI*(Hh-Ll)/(2*mmm)+Ll,5);
Plot(Hh,"",Res1, ParamStyle("Sup-Res B Style", styleThick|styleNoTitle) );
Plot(Ll,"",Sup2, ParamStyle("Sup-Res B Style", styleThick|styleNoTitle) ) ;
}
_SECTION_END();



_SECTION_BEGIN("Pivot");
nBars = Param("Number of bars", 12, 5, 40);
bShowTCZ = Param("Show TCZ", 1, 0, 1); 
nExploreBarIdx = 0;
nExploreDate = 0;
nCurDateNum = 0;
DN = DateNum();
DT = DateTime();
bTCZLong = False;
bTCZShort = False;
nAnchorPivIdx = 0;
ADX8 = ADX(8);
if(Status("action")==1) {
	bDraw = True;
	bUseLastVis = 1;
} else {
	bDraw = False;
	bUseLastVis = False;
	bTrace = 1;
	nExploreDate = Status("rangetodate");
	for (i=LastValue(BarIndex());i>=0;i--) {
		nCurDateNum = DN[i];
		if (nCurDateNum == nExploreDate) {
			nExploreBarIdx = i;
		}
	}
}
GraphXSpace=7;
if (bDraw) {
}
aHPivs = H - H;
aLPivs = L - L;
aHPivHighs = H - H;
aLPivLows = L - L;
aHPivIdxs = H - H;
aLPivIdxs = L - L;
aAddedHPivs = H - H;
aAddedLPivs = L - L;
aLegVol = H - H;
aRetrcVol = H - H;
nHPivs = 0;
nLPivs = 0;
lastHPIdx = 0;
lastLPIdx = 0;
lastHPH = 0;
lastLPL = 0;
curPivBarIdx = 0;
aHHVBars = HHVBars(H, nBars);
aLLVBars = LLVBars(L, nBars);
aHHV = HHV(H, nBars);
aLLV = LLV(L, nBars);
nLastVisBar = LastValue(
	Highest(IIf(Status("barvisible"), BarIndex(), 0)));
curBar = IIf(nlastVisBar > 0 AND bUseLastVis, nlastVisBar, 
	IIf(Status("action")==4 AND nExploreBarIdx > 0, nExploreBarIdx,
	LastValue(BarIndex())));
curTrend = "";
if (aLLVBars[curBar] < aHHVBars[curBar]) 
	curTrend = "D";
else 
	curTrend = "U";
if (curBar >= 120) {
	for (i=0; i<120; i++) { 
		curBar = IIf(nlastVisBar > 0 AND bUseLastVis, 
			nlastVisBar-i, 
			IIf(Status("action")==4 AND nExploreBarIdx > 0, 
			nExploreBarIdx-i,
			LastValue(BarIndex())-i));
		if (aLLVBars[curBar] < aHHVBars[curBar]) {
			if (curTrend == "U") {
				curTrend = "D";
				curPivBarIdx = curBar - aLLVBars[curBar];
				aLPivs[curPivBarIdx] = 1;
				aLPivLows[nLPivs] = L[curPivBarIdx];
				aLPivIdxs[nLPivs] = curPivBarIdx;
				nLPivs++;
			}
		} else {
			if (curTrend == "D") {
				curTrend = "U";
				curPivBarIdx = curBar - aHHVBars[curBar];
				aHPivs[curPivBarIdx] = 1;
				aHPivHighs[nHPivs] = H[curPivBarIdx];
				aHPivIdxs[nHPivs] = curPivBarIdx;
				nHPivs++;
			}
		}		
	} 
}
curBar = 
	IIf(nlastVisBar > 0 AND bUseLastVis, 
	nlastVisBar, 
	IIf(Status("action")==4 AND nExploreBarIdx > 0, 
	nExploreBarIdx,
	LastValue(BarIndex()))
	);
if (nHPivs >= 2 AND nLPivs >= 2) {
	lastLPIdx = aLPivIdxs[0];
	lastLPL = aLPivLows[0];
	lastHPIdx = aHPivIdxs[0];
	lastHPH = aHPivHighs[0];
	nLastHOrLPivIdx = Max(lastLPIdx, lastHPIdx);
	nAddPivsRng = curBar - nLastHOrLPivIdx;
	aLLVAfterLastPiv = LLV(L, nAddPivsRng);  
	nLLVAfterLastPiv = aLLVAfterLastPiv[curBar];
	aLLVIdxAfterLastPiv = LLVBars(L, nAddPivsRng);  
	nLLVIdxAfterLastPiv = curBar - aLLVIdxAfterLastPiv[curBar];
	aHHVAfterLastPiv = HHV(H, nAddPivsRng); 
	nHHVAfterLastPiv = aHHVAfterLastPiv[curBar];
	aHHVIdxAfterLastPiv = HHVBars(H, nAddPivsRng); 
	nHHVIdxAfterLastPiv = curBar - aHHVIdxAfterLastPiv[curBar];
	if (lastHPIdx > lastLPIdx) {
	
		/*	There are at least two possibilities here. One is that
	   		the previous high was higher, indicating that this is a 
	   		possible short retracement or one in the making.
	   		The other is that the previous high was lower, indicating 
	   		that this is a possible long retracement in the working. 
			However, both depend on opposing pivots. E.g., if I find 
			higher highs, what if I have lower lows?  
		
			If the highs are descending, then I can consider:
	   			- a lower low, and leave it at that
	   			- a higher high and higher low
	   			- a lower low and another lower high
		*/
		if (aHPivHighs[0] < aHPivHighs[1]) {
	
			if (nLLVAfterLastPiv < aLPivLows[0] AND 
				(nLLVIdxAfterLastPiv - lastHPIdx - 1) >= 1
				AND nLLVIdxAfterLastPiv != curBar	) {
	
				// -- OK, we'll add this as a pivot. 
				//    Mark it for plotting...
				aLPivs[nLLVIdxAfterLastPiv] = 1;
				aAddedLPivs[nLLVIdxAfterLastPiv] = 1;
		
				//    ...and then rearrange elements in the 
				//    pivot information arrays
				for (j=0; j<nLPivs; j++) {
					aLPivLows[nLPivs-j] = aLPivLows[nLPivs-(j+1)];
					aLPivIdxs[nLPivs-j] = aLPivIdxs[nLPivs-(j+1)];
				}
				aLPivLows[0] = nLLVAfterLastPiv;
				aLPivIdxs[0] = nLLVIdxAfterLastPiv;
				nLPivs++;
	
			// -- Test whether to add piv given last piv is high 
			//    AND we have lower highs	
			}
	
		// -- Here, the last piv is a high piv, and we have 
		//    higher-highs. The most likely addition is a 
		//    Low piv that is a retracement.
		} else {
	
			if (nLLVAfterLastPiv > aLPivLows[0] AND 
				(nLLVIdxAfterLastPiv - lastHPIdx - 1) >= 1
				AND nLLVIdxAfterLastPiv != curBar	) {
	
				// -- OK, we'll add this as a pivot. 
				//    Mark it for plotting...
				aLPivs[nLLVIdxAfterLastPiv] = 1;
				aAddedLPivs[nLLVIdxAfterLastPiv] = 1;
		
				//    ...and then rearrange elements in the 
				//    pivot information arrays
				for (j=0; j<nLPivs; j++) {
					aLPivLows[nLPivs-j] = aLPivLows[nLPivs-(j+1)];
					aLPivIdxs[nLPivs-j] = aLPivIdxs[nLPivs-(j+1)];
				}
				aLPivLows[0] = nLLVAfterLastPiv;
				aLPivIdxs[0] = nLLVIdxAfterLastPiv;
				nLPivs++;
	
			// -- Test whether to add piv given last piv is high 
			//    AND we have lower highs	
			}	
		// -- The last piv is a high and we have higher highs 
		//    OR lower highs
		}
	
	/* ****************************************************************
		Still finding missed pivot(s). Here, the last piv is a low piv.
	**************************************************************** */
	} else {
	
		// -- First case, lower highs
		if (aHPivHighs[0] < aHPivHighs[1]) {
	
			if (nHHVAfterLastPiv < aHPivHighs[0] AND 
				(nHHVIdxAfterLastPiv - lastLPIdx - 1) >= 1
				AND nHHVIdxAfterLastPiv != curBar	) {
	
				// -- OK, we'll add this as a pivot. 
				//    Mark that for plotting
				aHPivs[nHHVIdxAfterLastPiv] = 1;
				aAddedHPivs[nHHVIdxAfterLastPiv] = 1;
	
				//    ...and then rearrange elements in the 
				//    pivot information arrays
				for (j=0; j<nHPivs; j++) {
					aHPivHighs[nHPivs-j] = aHPivHighs[nHPivs-(j+1)];
					aHPivIdxs[nHPivs-j] = aHPivIdxs[nhPivs-(j+1)];
				}
				aHPivHighs[0] = nHHVAfterLastPiv;
				aHPivIdxs[0] = nHHVIdxAfterLastPiv;
				nHPivs++;
	
			// -- Test whether to add piv given last piv is high 
			//    AND we have lower highs	
			}
	
		// -- Second case when last piv is a low piv, higher highs 
		//    Most likely addition is high piv that is a retracement.
		//    Considering adding a high piv as long as it is higher
		} else {
	
			// -- Where I have higher highs,
			if (nHHVAfterLastPiv > aHPivHighs[0] AND 
				(nHHVIdxAfterLastPiv - lastLPIdx - 1) >= 1
				AND nHHVIdxAfterLastPiv != curBar	) {
	
				// -- OK, we'll add this as a pivot. 
				//    Mark it for plotting...
				aHPivs[nHHVIdxAfterLastPiv] = 1;
				aAddedHPivs[nHHVIdxAfterLastPiv] = 1;
	
				//    ...and then rearrange elements in the 
				//    pivot information arrays
				for (j=0; j<nHPivs; j++) {
					aHPivHighs[nHPivs-j] = aHPivHighs[nHPivs-(j+1)];
					aHPivIdxs[nHPivs-j] = aHPivIdxs[nhPivs-(j+1)];
				}
				aHPivHighs[0] = nHHVAfterLastPiv;
				aHPivIdxs[0] = nHHVIdxAfterLastPiv;
				nHPivs++;
	
			// -- Test whether to add piv given last piv is high 
			//    AND we have lower highs	
			}
	
		}
			
	} 

// -- If there are at least two of each
}

/* ****************************************
// -- Done with finding pivots
***************************************** */ 

if (bDraw) {
PivotEntry = ParamColor( "Entry Color", colorBrightGreen );
PivotEntry2 = ParamColor( "Entry Color2", colorYellow );
PivotExit = ParamColor( "Exit Color", colorRed );
PivotExit2 = ParamColor( "Exit Color2", colorYellow );
	// -- OK, let's plot the pivots using arrows
	PlotShapes(
		IIf(aHPivs==1, shapeSquare, shapeNone), 
			PivotExit, 0, 	High, Offset=30);
	PlotShapes(
		IIf(aAddedHPivs==1, shapeSquare, shapeNone),
			PivotExit2, 0, High, Offset=30);
	PlotShapes(
		IIf(aLPivs==1, shapeSquare , shapeNone),		
			PivotEntry, 0, Low, Offset=-30);
	PlotShapes(
		IIf(aAddedLPivs==1, shapeSquare , shapeNone), 
			PivotEntry2, 0, Low, Offset=-30);

	PlotShapes(
		IIf(aHPivs==1, shapeSquare, shapeNone), 
			colorBlack, 0, 	High, Offset=35);
	PlotShapes(
		IIf(aAddedHPivs==1, shapeSquare, shapeNone),
			colorBlack, 0, High, Offset=35);
	PlotShapes(
		IIf(aLPivs==1, shapeSquare , shapeNone),		
			colorBlack, 0, Low, Offset=-35);
	PlotShapes(
		IIf(aAddedLPivs==1, shapeSquare , shapeNone), 
			colorBlack, 0, Low, Offset=-35);
}

/* ****************************************
// -- Done with discovering and plotting pivots 
***************************************** */ 
m = (Hh+Ll)/2;
Title = EncodeColor(colorWhite)+ "SHEROUNE ka SYSTEM" + " - " +  Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
 "  - " + Date() +" - "+
"\n"+
WriteIf(H > Ref(H,-1),EncodeColor(colorGreen),EncodeColor(colorRed))+"              Hi "+H+"\n"+ 
EncodeColor(colorWhite)+"Op "+O+EncodeColor(colorAqua)+" Cl : " +C+"\n"+
WriteIf(L < Ref(L,-1),EncodeColor(colorRed),EncodeColor(colorGreen))+"              Lo "+L
+"\n"+"\n"+"\n"+"\n"+
EncodeColor(colorBrightGreen)+"SL for Short   "+Hh
+"\n"+
EncodeColor(colorRed)+"SL for Long   "+Ll
+"\n"
//EncodeColor(colorAqua)+"Midpoint   "+m



;

_SECTION_BEGIN("shiree FPSR");
//PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);
// Get Previous Day's close, Low and High
Prev_Close = TimeFrameGetPrice( "C", inDaily, -1, expandFirst) ;
Prev_Low = TimeFrameGetPrice( "L", inDaily, -1, expandFirst) ;
Prev_High = TimeFrameGetPrice( "H", inDaily, -1, expandFirst) ;
Today = LastValue(Day( ) );


//////////////////////////////30 MT STRATEGY /////////////////////////////////////////////////////////////
BS=(Prev_High-Prev_Low)/3;


Y=R30=Prev_Close+BS;
X=S30=Prev_Close-BS;

BSColor = colorBlue;
//Plot(X,"",colorBlue,styleThick|styleNoLabel); 
//Plot(Y,"",colorBlue,styleThick|styleNoLabel);

///////////////////////////////////////////////////////////////////////////////////////////////////////

SetChartOptions(0,chartShowArrows|chartShowDates);
Show_Prev = ParamToggle( "Display Pivots", "No|Yes", 1);
////////////////////// FPSR AS BUNCH OF LINES/////////////////////////////////////////////////////////////
XY=Y-X;
Z1=X+0.0025*XY;
Z2=X+0.0050*XY;
Z3=X+0.0075*XY;
Z4=X+0.0100*XY;
Z5=X+0.0125*XY;
Z6=X+0.0150*XY;
Z7=X+0.0175*XY;
Z8=X+0.0200*XY;
Z9=X+0.0225*XY;
Z0=X+0.0250*XY;

Z11=Y-0.0025*XY;
Z12=Y-0.005*XY;
Z13=Y-0.0075*XY;
Z14=Y-0.01*XY;
Z15=Y-0.0125*XY;
Z16=Y-0.0150*XY;
Z17=Y-0.0175*XY;
Z18=Y-0.02*XY;
Z19=Y-0.0225*XY;
Z20=Y-0.025*XY;


//ColorR=ColorRGB(150,20,100);
ColorXY=ParamColor("XY", colorYellow);
////////////////////////////////////////////////////////////////////////////
if(Show_Prev)
{
Plot(IIf(Today == Day(),Z1, Null), "", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z2, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z3, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z4, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z5, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z6, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z7, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z8, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z9, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z0, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);

Plot(IIf(Today == Day(),Z11, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z12, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z13, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z14, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z15, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z16, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z17, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z18, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z19, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),Z20, Null),"", ColorXY,styleLine|styleThick|styleNoRescale|styleNoLabel);}

_SECTION_END();