// Downloaded From https://www.WiseStockTrader.com
Explorer= ParamToggle("Explorer","buysell exp|market exp",1);
font = ParamToggle("font","Show|Hide",1);
TrendLines= ParamToggle("TrendLines","Show|Hide",0);
LinearRegression= ParamToggle("LinearRegression","Show|Hide",0);
Buyselllable= ParamToggle("Buyselllable","Show|Hide",0);
ChangeTitle= ParamToggle("ChangeTitle","Show|Hide",1);
_SECTION_BEGIN("Background_Setting");
SetChartBkGradientFill( ParamColor("BgTop", colorDarkYellow),
ParamColor("BgBottom", colorDarkTeal),ParamColor("titleblock",colorDarkGrey ));
SetChartBkColor(colorTeal); // color of outer border
_SECTION_END();

SetChartOptions(0,chartShowArrows | chartShowDates);
if(TrendLines==1)
{
_SECTION_BEGIN("Trend Lines");
p1 = Param("TL 1 Periods", 20, 5, 50, 1);
p2 = Param("TL 2 Periods", 5, 3, 25, 1);
TL1 = LinearReg(C, p1);
TL2 = EMA(TL1, p2);
Col1 = IIf(TL1 > TL2, ParamColor("TL Up Colour", colorGreen), ParamColor("TL Dn Colour", colorRed));
Plot(TL1, "TriggerLine 1", Col1, styleLine|styleThick|styleNoLabel);
Plot(TL2, "TriggerLine 2", Col1, styleLine|styleThick|styleNoLabel);
_SECTION_END();
}
//================================================End Chart Configuration===============================================================================

if(font==0)
{
_SECTION_BEGIN("Name");
GfxSetOverlayMode(0);
GfxSelectFont("Tahoma", Status("pxheight")/8 );
GfxSetTextAlign( 6 );// center alignment
GfxSetTextColor( ColorHSB( 42, 42, 42 ) );
GfxSetBkMode(0); // transparent
GfxTextOut( Name(), Status("pxwidth")/2, Status("pxheight")/12 );
GfxSelectFont("Tahoma", Status("pxheight")/18 );
GfxTextOut("" , Status("pxwidth")/2, Status("pxheight")/4 );
GfxSelectFont("Tahoma", Status("pxheight")/18 );
GfxSelectFont("Tahoma", Status("pxheight")/36 );
GfxTextOut( "", Status("pxwidth")/2, Status("pxheight")/3 );
_SECTION_END();

//Magfied Market Price
FS=Param("Font Size",72,11,100,1);
GfxSelectFont("Times New Roman", FS, 700, True ); 
GfxSetBkMode(0); // transparent 
GfxSetTextColor( ColorHSB( 42, 42, 42 ) );
Hor=Param("Horizonta Position",615,1,1200,1);
Ver=Param("Vertica Position",152,1,830,1); 
GfxTextOut(""+C, Hor , Ver );
YC=TimeFrameGetPrice("C",inDaily,-1);
DD=Prec(C-YC,2);
xx=Prec((DD/YC)*100,2);
FS2=Param("Font Size2",35,11,100,1);
GfxSelectFont("Times New Roman", FS2,11, 700, True ); 
GfxSetBkMode( colorBlack );
Hor1=Param("Horizontal Position",615,1,1200,1);
Ver1=Param("Vertical Position",188,1,830,1);   
GfxSetTextColor( ColorHSB( 42, 42, 42 ) ); 
GfxTextOut(""+DD+"  ("+xx+"%)", Hor1 , Ver1+45 );
}
else
{{
//Magfied Market Price
fse=Param("Font Sizee",35,11,100,1);
GfxSelectFont("Times New Roman", fse, 700, True ); 
GfxSetBkMode( colorGold );  
GfxSetTextColor( ParamColor("Color",colorGold) ); 
Hora=Param("Horizontal Positiona",525,1,1200,1);
Vera=Param("Vertical Positiona",17,1,830,1); 
GfxTextOut(""+C, Hora , Vera );
YCa=TimeFrameGetPrice("C",inDaily,-1);
DDa=Prec(C-YCa,2);
xxa=Prec((DDa/YCa)*100,2);
FSb=Param("Font Sizeb",16,11,100,1);
GfxSelectFont("Times New Roman",fsb, 700, True ); 
GfxSetBkMode( colorBlack );  
GfxSetTextColor(ParamColor("Color",colorYellow) ); 
GfxTextOut(""+DDa+"  ("+xxa+"%)", Hora , Vera+45 );
 _SECTION_END();
}}
//====================================Start of Linear Regression Code==================================================================================
if(LinearRegression==1)
{
P = ParamField("Price field",-1);

Length = 150;

Daysback = Param("Period for Liner Regression Line",Length,1,240,1);
shift = Param("Look back period",0,0,240,1);

//=============================== Math Formula ========================================================================================================

x = Cum(1);
lastx = LastValue( x ) - shift;
aa = LastValue( Ref(LinRegIntercept( p, Daysback), -shift) );
bb = LastValue( Ref(LinRegSlope( p, Daysback ), -shift) );
y = Aa + bb * ( x - (Lastx - DaysBack +1 ) );

//==================Plot the Linear Regression Line ====================================================================================================

LRColor = ParamColor("LR Color", colorCycle ); 
LRStyle = ParamStyle("LR Style");

LRLine =  IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y, Null );

LRStyle = ParamStyle("LR Style");
Angle = Param("Angle", 0.05, 0, 1.5, 0.01);// A slope higher than 0.05 radians will turn green, less than -0.05 will turn red and anything in between will be white.

LRLine = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y, Null );

Pi = 3.14159265 * atan(1); // Pi
SlopeAngle = atan(bb)*(180/Pi);

LineUp = SlopeAngle > Angle;
LineDn = SlopeAngle < - Angle;

if(LineUp)
{
Plot(LRLine, "Lin. Reg. Line Up", IIf(LineUp, colorBrightGreen, colorWhite), LRStyle);
}
else
{
Plot(LRLine, "Lin. Reg. Line Down", IIf(LineDn, colorDarkRed, colorWhite), LRStyle);
} 

//==========================  Plot 1st SD Channel ======================================================================================================

SDP = Param("Standard Deviation", 1.5, 0, 6, 0.1);
SD = SDP/2;

width = LastValue( Ref(SD*StDev(p, Daysback),-shift) ); //Set width of inside chanels here.
SDU = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y+width , Null ) ;
SDL = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y-width , Null ) ;

SDColor = ParamColor("SD Color", colorCycle );
SDStyle = ParamStyle("SD Style");

Plot( SDU , "Upper Lin Reg", colorWhite,SDStyle ); //Inside Regression Lines
Plot( SDL , "Lower Lin Reg", colorWhite,SDStyle ); //Inside Regression Lines

//==========================  Plot 2d SD Channel ========================================================================================================

SDP2 = Param("2d Standard Deviation", 2.0, 0, 6, 0.1);
SD2 = SDP2/2;

width2 = LastValue( Ref(SD2*StDev(p, Daysback),-shift) ); //Set width of outside chanels here. 
SDU2 = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y+width2 , Null ) ;
SDL2 = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y-width2 , Null ) ;

SDColor2 = ParamColor("2 SD Color", colorCycle );
SDStyle2 = ParamStyle("2 SD Style");

Plot( SDU2 , "Upper Lin Reg", colorWhite,SDStyle2 ); //OutSide Regression Lines
Plot( SDL2 , "Lower Lin Reg", colorWhite,SDStyle2 ); //OutSide Regression Lines

Trend = IIf(LRLine > Ref(LRLine,-1),colorGreen,colorRed);//Changes LR line to green if sloping up and red if sloping down.

Plot( LRLine , "LinReg", Trend, LRSTYLE );

//============================ End Indicator Code =========
}

_SECTION_BEGIN("Flower");
Show_color = ParamToggle("Display CandleColor", "No|Yes", 1);
r1 = Param( "ColorFast avg", 5, 2, 200, 1 );
r2 = Param( "ColorSlow avg", 10, 2, 200, 1 );
r3 = Param( "ColorSignal avg", 5, 2, 200, 1 );

Prd1=Param("ATR Period",4,1,20,1);
Prd2=Param("Look Back",7,1,20,1);
green = HHV(LLV(L,Prd1)+ATR(Prd1),Prd2);
red = LLV(HHV(H,Prd1)-ATR(Prd1),Prd2);
flowerClose = EMA((Open+High+Low+Close)/4,3) ;
flowerOpen = EMA((Ref(Open,-1) + Ref(flowerClose,-1))/2,3);
Temp = Max(High, flowerOpen);
flowerHigh = EMA(Max(Temp, flowerClose),3);
Temp = Min(Low,flowerOpen);
flowerLow = EMA(Min(Temp, flowerClose),3);



m1=MACD(r1,r2);
s1=Signal(r1,r2,r3);
mycolor=IIf(m1<0 AND m1>s1, colorYellow,IIf(m1>0 AND m1>s1,colorGreen,IIf(m1>0 AND m1<s1,colorCustom12,colorRed)));
if(Show_color)
{
ColorHighliter = myColor;
SetBarFillColor( ColorHighliter );


}

barColor=IIf(C>Green ,colorBrightGreen,IIf(C < RED,colorRed,colorWhite));


PlotOHLC( IIf(flowerOpen<flowerClose, flowerOpen, flowerClose),flowerHigh,flowerLow,IIf(flowerOpen<flowerClose, flowerClose, flowerOpen), "Close", barColor, styleNoTitle | styleCandle);



_SECTION_END();


//**********************************************************************************
//        Plot price horizontal line                                               *
//**********************************************************************************/
_SECTION_BEGIN("Price Line");

PriceLineColor=ParamColor("PriceLineColor",ColorRGB(82,82,82));
PriceLevel = ParamField("PriceField", field = 3 ); 

Daysback    = Param("Bars Back",100,10,500,1); 
FirstBar    = BarCount - DaysBack; 
YY          = IIf(BarIndex() >= Firstbar,EndValue(PriceLevel),Null); 

Plot(YY,"Current Price",PriceLineColor,ParamStyle("LineStyle",styleLine|styleDashed|styleNoTitle|styleNoLabel|styleThick,maskAll)); 


side = Param("side",1,0,1000,1);

dist = 0; 

for( i = 0; i < BarCount; i++ ) 
{ 
 if(i+side== BarCount) PlotText( "\n    " + PriceLevel[ i ], i, YY[ i ]-dist[i], colorLightBlue ); 
} 


_SECTION_END();


_SECTION_BEGIN("Color_Me_Bad");
a =5; //Param("Average Pds", 5, 1, 10, 1 );
n =8; //Param("Short Pds", 8, 5, 21, 1 );
m =60; //Param("Long Pds", 60, 0, 90, 1 );

Var4 =(Low+High+2*Close)/4; 
OP = EMA(Var4,a);
res1 = HHV(OP,n);

res2 =HHV(OP,m); 
sup2 =LLV(OP,m); 
sup1 =LLV(OP,n);


Linecolor1 = IIf(Op==sup1,ColorRGB(48,0,81),IIf(Op==res1,colorGreen,ColorRGB(80,80,80)));
Linecolor2 = IIf(Op==sup1,ColorRGB(38,0,60),IIf(Op==res1,colorGreen,colorDarkGrey));
Linecolor3 = IIf(Op==sup1,ColorRGB(27,0,70),IIf(Op==res1,colorGreen,ColorRGB(77,70,75)));
_SECTION_END();

_SECTION_BEGIN("ATR");
ParmCloud1 = ParamToggle("TrailingCloud", "No|Yes", 1);
Pp1=Param("Ray_Period1",2,1,20,1); // or 4
Pp2=Param("ATR_Period1",3,1,20,1); // or 2

avgClose = EMA((Open+High+Low+Close)/4,3) ;
avgOpen = EMA((Ref(Open,-1) + Ref(avgClose,-1))/2,3);
Temp = Max(High, avgOpen);
avgHigh = EMA(Max(Temp, avgClose),3);
Temp = Min(Low,avgOpen);
avgLow = EMA(Min(Temp, avgClose),3);
Plot(HHV(LLV(avgHigh,Pp1)-ATR(Pp2),4),"",Linecolor1 ,ParamStyle("styleLine 1",styleLine|styleThick|styleNoTitle|styleNoLabel,maskAll)); 
Plot(HHV(LLV(avgHigh,Pp1)-ATR(Pp2),5),"",Linecolor2 ,ParamStyle("styleLine 2",styleLine|styleThick|styleNoTitle|styleNoLabel,maskAll)); 
Plot(HHV(LLV(avgHigh,Pp1)-ATR(Pp2),6),"",Linecolor1 ,ParamStyle("styleLine 3",styleLine|styleThick|styleNoTitle|styleNoLabel,maskAll)); 
Plot(HHV(LLV(avgHigh,Pp1)-ATR(Pp2),7),"",Linecolor1 ,ParamStyle("styleLine 4",styleLine|styleThick|styleNoTitle|styleNoLabel,maskAll)); 




CS33=HHV(LLV(avgHigh,Pp1)-ATR(Pp2),4); 
CR33=HHV(LLV(avgHigh,Pp1)-ATR(Pp2),5);
CT33=HHV(LLV(avgHigh,Pp1)-ATR(Pp2),6);
CM33=HHV(LLV(avgHigh,Pp1)-ATR(Pp2),7);

if(parmCloud1 == 1)
{
PlotOHLC( CS33, CS33, CR33,CR33, "Band1", LineColor1, styleCloud | styleNoLabel|styleNoTitle);
PlotOHLC( CR33, CR33, CT33, CT33, "Band2", LineColor2, styleCloud | styleNoLabel|styleNoTitle); 
PlotOHLC( CR33, CR33, CM33, CM33, "Band3", LineColor3, styleCloud | styleNoLabel|styleNoTitle); 
 
}


_SECTION_END();

_SECTION_BEGIN("Bands");

SupResB =Param("Sup-Res Short",6,0,100,1);
nn=SupResB;



Bandlinecol=ParamColor("SupResLineColor",ColorRGB(82,82,82));
ParmCloud = ParamToggle("Cloud", "No|Yes", 0);
BoxCloudColor=ParamColor("BoxCloudColor",ColorRGB(27,27,27));


Line2=Param("ResLineLength",100,2,500,0.1);
Daysback1    = Line2; 
FirstBar1    = BarCount - DaysBack1; 
Hh=HHV(flowerHigh,nn);
LL=LLV(flowerLow,nn);

Res2=Hh;
Sup2=LL;

BandRes=IIf(BarIndex() >= Firstbar1,EndValue(Res2),Null);
BandSup=IIf(BarIndex() >= Firstbar1,EndValue(Sup2),Null);
Plot(BandRes,"",Bandlinecol,ParamStyle("ShortSupBand",styleLine|styleDashed|stylehidden|styleNoTitle|styleNoLabel|styleThick,maskAll));
Plot(BandSup,"",Bandlinecol,ParamStyle("ShortResBand",styleLine|styleDashed|stylehidden|styleNoTitle|styleNoLabel|styleThick,maskAll));




CS=BandRes;
CR=BandSup;


if(parmCloud == 1)
{
	PlotOHLC( CS, CS, CR,CR, "Band",BoxCloudColor, styleCloud | styleNoLabel|styleNoTitle); 
}

_SECTION_END();


 
_SECTION_BEGIN("TSKPPIVOT4");
CHiPr = 0;
CLoPr = 9999999;
blsLong = 0;
PrevCOBar = 0;
NumBars = 0;
PrePP = 0;
PrevLowVal = 9999999;
BuySig = 0;
blsShort = 0;
PrevHiVal = 0;
blsNewCO = 0;
BarDif   = 0;

KPA900Val = MA(C,10);
KPAutoStopVal = IIf(High,Low,Close);

// -- Create 0-initialized arrays the size of barcount
aHPivs = H - H;
aLPivs = L - L;
aHiVal = H - H;
aLoVal = L - L;

Ctmpl=Param("Ctmpl",45,1,20,1);
tskp_colortmplcnd0=colorTan;
tskp_colortmplcnd1=colorWhite;
tskp_colortmplcnd2=colorTan;
tskp_colortmplcnd3=colorWhite;
tskp_colortmplcnd4=colorTan;
tskp_colortmplcnd5=colorWhite;
tskp_colortmplcnd6=colorTan;
tskp_colortmplcnd7=colorWhite;
tskp_colortmplcnd8=colorTan;
sctotal = 0;
sctotal = sctotal  + IIf(tskp_colortmplcnd0 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd1 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd2 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd3 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd4 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd5 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd6 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd7 > 0, 1, -1); 
sctotal = sctotal  + IIf(tskp_colortmplcnd8 > 0, 1, -1); 


for (curBar=0; curBar < BarCount-1; curBar++)
{

	if ( curBar == 0 )
	{
		CHiPr = flowerHigh[curBar];
		CHiBar = curBar;
		CLoPr = flowerLow[curBar];
		CLoBar = curBar;
		blsLong = 0;
		blsShort = 0;
		blsNewCO = 0;
		PrePP = 0;
		PrevCOBar = 0;
		PrevHiVal =flowerHigh[curBar];
		PrevLowVal = flowerLow[curBar];
		BuySig = 0;
		SellSig = 0;
		blsLL  = 0;
	}

	if (flowerHigh[CurBar] >= CHiPr) {
		CHiPr = flowerHigh[CurBar];
		ChiBar = CurBar;
	}

	if (flowerLow[CurBar] <= CLoPr) {
		CLoPr = flowerLow[CurBar];
		CLoBar = CurBar;
	}

	if ( (KPA900Val[curBar] >= KPAutoStopVal[curbar]) AND (PrePP != -1) AND (blsLong != 1) ){
		BarDif = CurBar - PrevCOBar;
		if (BarDif >= NumBars) {
			blsLong = 1;
			blsShort = 0;
			blsNewCO = 1;
			PrevCOBar = CurBar;
		}
	}

	if ( (KPA900Val[curBar] <= KPAutoStopVal[curbar]) AND (PrePP != 1) AND (blsShort != 1) ){
		BarDif = CurBar - PrevCOBar;
		if (BarDif >= NumBars) {
			blsLong = 0;
			blsShort = 1;
			blsNewCO = 1;
			PrevCOBar = CurBar;
		}
	}

	if ( (blsNewCO == 1) AND (sctotal[CurBar] >= 5) AND (blsLong == 1) ) {
		LVal = CurBar - CLoBar;
		for (j= CLoBar-1; j <= CLoBar+1; j++)
		{
			if (j >=0) {
				aLPivs[j] = 1;
				aLoVal[j] = CLoPr;
			}
		}
		PrePP = -1;
		blsNewCO = 0;
		CHiPr = flowerHigh[CurBar];
		CHiBar = CurBar;
		CLoPr = flowerLow[Curbar];
		CLoBar = CurBar;
		} 
		else if ((blsNewCO == 1) AND (sctotal[CurBar] <= -5) AND (blsShort == 1) ) {
		HVal = CurBar - CHiBar;
		for (j= CHiBar-1; j <= CHiBar+1; j++)
		{		
			if (j >=0) {
				aHPivs[j] = 1;
				aHiVal[j] = CHiPr;
			}
		}
		PrePP = 1;
		blsNewCO = 0;
		CHiPr = flowerHigh[CurBar];
		CHiBar = CurBar;
		CLoPr = flowerLow[Curbar];
		CLoBar = CurBar;
		} 
}

PlotShapes(
IIf(aHPivs == 1,shapeHollowSmallCircle,shapeNone),colorYellow ,0, aHiVal+0.05, offset = 5);

PlotShapes(
IIf(aLPivs == 1,shapeHollowSmallCircle,shapeNone), colorPink,0, aLoVal-0.05, Offset = -5);
_SECTION_END();




_SECTION_BEGIN("SupRes_Short"); 
supresshortcolor=ParamColor("SupResShort",ColorRGB(82,82,82));

//this is for short term support line
TimeFrameSet(inWeekly);
ShortSupLenght=Param( "ShortResistLength", 4, 1, 55 ,1);
ShortSupCond1=HHV(High,ShortSupLenght);
ShortSupCond2=Close<Ref(LLV(Low,4),-1);
ShortSupA=IIf(L>Ref(ShortSupCond2,-1),1,IIf(H<Ref(ShortSupCond1,-1),-1,0));
ShortSupB=ValueWhen(ShortSupA!=0,ShortSupA,1);
ShortSupResult=IIf(ShortSupB==1,ShortSupCond1,ShortSupCond2);
TimeFrameRestore();
FinalShortSup=TimeFrameExpand(ShortSupResult,inWeekly,expandFirst);

Plot(FinalShortSup ,"ShortResistance",supresshortcolor,styleLine|styleStaircase|styleThick|styleNoRescale|styleNoLabel|styleNoTitle);

 
//this is for short term resistance line
TimeFrameSet(inWeekly);
ShortResLenght=Param( "ShortSupportLenght", 4, 1, 55 ,1);
ShortResCond1=Close>Ref(HHV(High,4),-1);
ShortResCond2=LLV(Low,ShortResLenght);
ShortResA=IIf(H>Ref(ShortResCond1,-1),1,IIf(L<Ref(ShortResCond2,-1),-1,0));
ShortResB=ValueWhen(ShortResA!=0,ShortResA,1);
ShortResResult=IIf(ShortResB==1,ShortResCond2,ShortResCond1);
TimeFrameRestore();
FinalShortRes=TimeFrameExpand(ShortResResult,inWeekly,expandFirst);
Plot(FinalShortRes ,"ShortSupport",supresshortcolor,styleLine|styleThick|styleStaircase|styleNoRescale|styleNoLabel|styleNoTitle);

CS=FinalShortSup;
CR=FinalShortRes;

Step = (CR-CS)/4; 
KC = CS + Step;
KB = KC + Step;
KA = KB + Step;

CloudColor1 = ParamColor("CloudColor1",ColorRGB(128,31,17));
CloudColor2 = ParamColor("CloudColor2",ColorRGB(139,139,0));
CloudColor3 = ParamColor("CloudColor3",ColorRGB(1,70,1));
CloudColor4 = ParamColor("CloudColor4",ColorRGB(41,105,05));

PlotOHLC( CS, CS, KC,KC, "Band", CloudColor1, styleCloud | styleNoLabel|styleNoTitle|styleNoRescale); 
PlotOHLC( KC, KC, KB,KB, "Band", CloudColor2, styleCloud | styleNoLabel|styleNoTitle|styleNoRescale); 
PlotOHLC( KB, KB, KA,KA, "Band", CloudColor3, styleCloud | styleNoLabel|styleNoTitle|styleNoRescale); 
PlotOHLC( KA, KA, CR,CR, "Band", CloudColor4, styleCloud | styleNoLabel|styleNoTitle|styleNoRescale); 





_SECTION_END();



_SECTION_BEGIN("SupRes_Long"); 

supreslongcolor=ParamColor("SupReslong",ColorRGB(0,0,234));


//this is for long term resistance line
TimeFrameSet(inWeekly);
LongResLength=Param( "ResistanceLength", 30, 1, 55 ,1);
LongResCond1=HHV(H,LongResLength);
LongResCond2=Close<Ref(LLV(Low,4),-1);
LongResA=IIf(L>Ref(LongResCond2,-1),1,IIf(H<Ref(LongResCond1,-1),-1,0));
LongResB=ValueWhen(LongResA!=0,LongResA,1);
LongResResult=IIf(LongResB==1,LongResCond1,LongResCond2);
TimeFrameRestore();
FinalResResult=TimeFrameExpand(LongResResult,inWeekly,expandFirst);

Plot(FinalResResult ,"Resistance",supreslongcolor,styleLine|styleThick|styleNoRescale|styleNoLabel|styleNoTitle);
 

//this is for long term support line
TimeFrameSet(inWeekly);
LongSupLenght=Param( "SupportLenght", 30, 1, 55 ,1);
LongSupCond1=Close>Ref(HHV(High,4),-1);
LongSupCond2=LLV(Low,LongSupLenght);
LongSupA=IIf(H>Ref(LongSupCond1,-1),1,IIf(L<Ref(LongSupCond2,-1),-1,0));
LongSupB=ValueWhen(LongSupA!=0,LongSupA,1);
LongSupResult=IIf(LongSupB==1,LongSupCond2,LongSupCond1);
TimeFrameRestore();
FinalSupResult=TimeFrameExpand(LongSupResult,inWeekly,expandFirst);
Plot(FinalSupResult ,"Support",supreslongcolor,styleLine|styleThick|styleNoRescale|styleNoLabel|styleNoTitle);



CloudResColor=ParamColor("LongColor",ColorRGB(0,0,45));


CS1=FinalResResult;
CR1=FinalSupResult;

	PlotOHLC( CS1, CS1, CR1,CR1, "", CloudResColor, styleCloud |styleStaircase|styleNoRescale| styleNoLabel|styleNoTitle); 




_SECTION_END();

_SECTION_BEGIN("PanDora");
///////////////////////////////////
Title =
EncodeColor(colorWhite)+  Title = Name () + " | " 
+EncodeColor(colorYellow) + Date() + " | " 

+EncodeColor(colorTurquoise)+ "Open : "+ EncodeColor(colorLightGrey)+ O + " | "
+EncodeColor(colorTurquoise)+ "High : "+ EncodeColor(colorLightGrey)+ H + " | "
+EncodeColor(colorTurquoise)+ "Low : "+ EncodeColor(colorLightGrey)+ L + " | "
+EncodeColor(colorTurquoise)+ "Close : "+ WriteIf(C> Ref(C, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+ C + " | "
+EncodeColor(colorTurquoise)+ "Change : ("+ WriteIf(C> Ref(C, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed)) + WriteVal(C-Ref(C,-1))+" Tk."
+EncodeColor(colorTurquoise)+ " /"+ WriteIf(C> Ref(C, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+ WriteVal( ROC( C, 1 ))+""+ " % "
+EncodeColor(colorTurquoise)+ ") | Volume : " + WriteIf(V> Ref(V, -1),EncodeColor(colorBrightGreen),EncodeColor(colorRed))+ WriteVal(V,1)
; 

/////////////////////////////////////////////////////////
//																//
//			General Market Exploration by XeL				//
//																//
//						Ver: 1.00.beta						//
//																//
//	Free to Distribute under LGPL 2012	.					//
//	Portions of Code are property of their original		//
//	authors, Cleaning, some new code and Preparation	//
//	are derived by @XeL_Arjona.								//
//	Some Original Code credits:								//
//																//
//	*	Volume Price Analysis by Karthikmarar				//
//			http://vpanalysis.blogspot.mx/					//
//																//
//	*	Jurik Research DMX (Free)							//
//			http://jurikres.com/catalog/ms_dmx.htm		//
//																//
//	*	Extract of some exploration Methodology			//
//		by Manish.												//
//																//	
//																//
/////////////////////////////////////////////////////////


/////////////////
//  AFL START  //
/////////////////

//_SECTION_BEGIN("VPA, Momentum & Signal Explorer by XeL");


//////////////////////
// Main Variables   //
//////////////////////
// Count Index value for TrendScore
	i	=	0;
// Display Colors
// Main Color
	Color_buy		=	colorLime				;
	Color_bull		=	colorGreen				;
	Color_bull1	=	colorDarkYellow		;
	Color_bear1	=	colorLightOrange		;
	Color_bear		=	colorOrange			;
	Color_sell		=	colorRed				;
	Color_prev		=	colorGold				;
	Color_acc		=	colorPaleTurquoise	;
	Color_null		=	colorLightGrey		;
//	Background Colors
	BColor_vpa		=	colorBlack				;
	BColor_mas		=	colorDefault			;
	BColor_mam		=	colorDefault			;
	BColor_mal		=	colorDefault			;
//	Alternate Colors
	Color_acc1		=	colorBlueGrey			;

// 52 High Low
High52		=	HHV(High,250);
Low52		=	LLV(Low,250);
// T3 Function
function T3(price,periods)
	{
		s = 0.84;
		e1=EMA(price,periods);
		e2=EMA(e1,Periods);
		e3=EMA(e2,Periods);
		e4=EMA(e3,Periods);
		e5=EMA(e4,Periods);
		e6=EMA(e5,Periods);
		c1=-s*s*s;
		c2=3*s*s+3*s*s*s;
		c3=-6*s*s-3*s-3*s*s*s;
		c4=1+3*s+s*s*s+3*s*s;
		Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
		return ti3;
	}


////////////////////////////////////////////////
// Time to Date % Change and Beta Correlation //
////////////////////////////////////////////////
_SECTION_BEGIN("P/L % Change over Time with Beta Correlation");
// PARAMETERS
	TtD_Param		=	ParamList("Period","Day to Date|Week to Date|Month to Date|Year to Date",0);
	IDX_Param		=	ParamStr("Reference Market Index Symbol","$IME-MEX");  
// VARIABLES
	FDayMonth		=	BarsSince(Month() != Ref(Month(),-1));
	FDayYear		=	BarsSince(Year() != Ref(Year(),-1));
	TtD_Period		=	IIf(TtD_Param	==	"Day to Date",1,
						IIf(TtD_Param	==	"Week to Date",DayOfWeek(),
						IIf(TtD_Param	==	"Month to Date",FDayMonth,
						IIf(TtD_Param	==	"Year to Date",FDayYear,0))));
	IDX_Close		=	Foreign(IDX_Param,"Close");
// FORMULA
//		P/L % Change
	TtD_Change		= 100 * (Close - Ref(Close, -TtD_Period) ) / Ref(Close, -TtD_Period);
//		Beta Correlation in Time from Index
	Beta			=	(( TtD_Period * Sum(ROC( C,1) * ROC(IDX_Close,1),TtD_Period )) -
						(Sum(ROC(C,1),TtD_Period) *
						Sum(ROC( IDX_Close,1),TtD_Period))) /
						((TtD_Period * Sum((ROC(IDX_Close,1)^2 ),TtD_Period)) -
						(Sum(ROC(IDX_Close,1 ),TtD_Period)^2 ));
_SECTION_END();


///////////////////////////
// Volume Price Analysis //
///////////////////////////
_SECTION_BEGIN("Volume Price Analysis");
// FORMULA
	SetChartOptions(0,chartShowArrows|chartShowDates);
	DTL=Param("Linear regression period",60,10,100,10); 
	wbf=Param("WRB factor",1.5,1.3,2.5,.1);
	nbf=Param("NRB factor",0.7,0.3,0.9,0.1);
	TL=LinRegSlope(MA(C, DTL),2); 
	Vlp=Param("Volume lookback period",30,20,300,10);
	Vrg=MA(V,Vlp);
	St = StDev(Vrg,Vlp); 
	Vp3 = Vrg + 3*st; 
	Vp2 = Vrg + 2*st;;
	Vp1 = Vrg + 1*st;;
	Vn1 = Vrg -1*st; 
	Vn2 = Vrg -2*st; 
	rg=(H-L);
	arg=Wilders(rg,30);
	wrb=rg>(wbf*arg);
	nrb=rg<(nbf*arg); 
	Vl=V<Ref(V,-1) AND V<Ref(V,-2);
	upbar=C>Ref(C,-1);
	dnbar=C<Ref(C,-1); 
	Vh=V>Ref(V,-1) AND Ref(V,-1)>Ref(V,-2);
	Cloc=C-L;
	x=rg/Cloc;
	x1=IIf(Cloc=0,arg,x);
	Vb=V>Vrg OR V>Ref(V,-1);
	ucls=x1<2;
	dcls=x1>2;
	mcls=x1<2.2 AND x1>1.8 ;
	Vlcls=x1>4;
	Vhcls=x1<1.35;
	j=MA(C,5);
	TLL=LinRegSlope(j,40) ;
	Tlm=LinRegSlope(j,15) ;
	tls=LinRegSlope(j,5);
	mp=(H+L)/2;
// VOLUME VARIABLES
//		TrendScore Count
	IIf( V>Vp2, i+3,i);
	IIf( V>Vp1, i+2,i);
	IIf( V>VRG, i+1,i);
//		Indicators
	VPAv_Status	=	WriteIf( V>Vp2,	"VERY HIGH",
						WriteIf( V>Vp1,	"High",
						WriteIf( V>Vrg,	"Above Average",
						WriteIf( V<Vrg AND V>Vn1, "Less than Average",
						WriteIf( V<Vn1, "L o w", "" )))));
	VPAv_Color	=		IIf( V>Vp2, Color_buy,
						IIf( V>Vp1, Color_bull,
						IIf( V>Vrg, Color_bull1,
						IIf( V<Vrg AND V>Vn1, Color_bear,
						IIf( V<Vn1, Color_sell, Color_null )))));
			
// SPREAD VARIABLES
//		Indicators
	IIf( rg>(arg*2), i+2,i);
	IIf( rg>arg, i+1,i);
	VPAs_Status	=	WriteIf( rg>(arg*2), "Wide",
						WriteIf( rg>arg, "Above Average","Narrow"));
	VPAs_Color		=	IIf( rg>(arg*2), Color_buy,
						IIf( rg>arg, Color_bull,Color_bear));

// CLOSE VARIABLES
//		TrendScroe Count
	IIf( Vhcls, i+2,i);
	IIf( ucls, i+1,1);
//		Indicators
	VPAc_Status	=	WriteIf( Vhcls, "VERY HIGH",
						WriteIf( ucls, "High",
						WriteIf( mcls, "Mid",
						WriteIf( dcls, "Down","VERY LOW"))));
	VPAc_Color		=	IIf( Vhcls, Color_buy,
						IIf( ucls, Color_bull,
						IIf( mcls, Color_bull1,
						IIf( dcls, Color_bear,Color_sell))));

// VOLUME ZONE
// FORMULA
	C1 = Ref(C, -1);
	uc = C > C1; dc = C <= C1;
	ud = C > O; dd = C <= O;
	green = 1; blue = 2; yellow = 3; red = 4; white = 5;
	VType = IIf(ud,          
	         IIf(uc, green, yellow),
	       IIf(dd, 
	         IIf(dc, red, blue), white));
	/* green volume: up-day and up-close*/
	gv = IIf(VType == green, V, 0); 
	/* yellow volume: up-day but down-close */
	yv = IIf(VType == yellow, V, 0); 
	/* red volume: down-day and down-close */
	rv = IIf(VType == red, V, 0); 
	/* blue volume: down-day but up-close */
	bv = IIf(VType == blue, V, 0); 
	uv = gv + bv; uv1 = Ref(uv, -1); /* up volume */
	dv = rv + yv; dv1 = Ref(dv, -1); /* down volume */
	VolPer = Param("Adjust Vol. MA per.", 34, 1, 255, 1);//12
	ConvPer = Param("Adjust Conv. MA per.", 9, 1, 255, 1);//6
	MAuv = TEMA(uv, VolPer ); mauv1 = Ref(mauv, -1);
	MAdv = TEMA(dv, VolPer ); madv1 = Ref(madv, -1);
	MAtv = TEMA(V, VolPer );//total volume
	Converge = (TEMA(MAuv - MAdv, ConvPer));
	Converge1 = Ref(Converge, -1);
	ConvergeUp = Converge > Converge1;
	ConvergeOver = Converge > 0;
	rising = ConvergeUp AND ConvergeOver;
	falling = !ConvergeUp AND ConvergeOver;
// VOLUME ZONE
// VARIABLES
//		TrendScore Count
	IIf( rising, i+1,i);
//		Indicators
	VPAz_Status	=	WriteIf(rising,"Accumulation",
						WriteIf(falling,"Distribution","Flat"));
	VPAz_Color		=	IIf(rising,Color_acc,
						IIf(falling,Color_prev,Color_null));

// VOLUME STATUS
// PARAMETERS
	Pp1=Param("Number Of Days",30,1,200,1);
	Pp2=Param("Volume Of Days",15,1,200,1);
// FORMULA
	numDays = Pp1;
	dwWideSpread = 1.8;
	dwNarrowSpread = 0.8;
	dwSpreadMiddle = 0.5;
	dwHighClose = 0.7;
	dwLowClose = 0.3;
	volNumDays = Pp2;
	dwUltraHighVol = 2;
	dwVeryHighVol = 1.75; // was 1.8
	dwHighVol = 1.75; // was 1.8
	dwmoderateVol = 1.10; // was 1.8
	dwLowVol = 0.75; // was 0.8
	/* Classify each bar... */
	upBar = C > Ref(C,-1);
	downBar = C < Ref(C,-1);
	spread = H-L;
	avgRange = Sum(spread, numDays) / numDays;
	wideRange = spread >= (dwWideSpread * avgRange);
	narrowRange = spread <= (dwNarrowSpread * avgRange);
	testHighClose = L + (spread * dwHighClose);
	testLowClose = L + (spread * dwLowClose);
	testCloseMiddle = L + (spread * dwSpreadMiddle);
	upClose = C > testHighClose;
	downClose = C < testLowClose;
	middleClose = C >= testLowClose AND C <= testHighClose;
	avgVolume = EMA(V, volNumDays);
	highVolume = V > (avgVolume * dwHighVol);
	moderateVol= V > (avgVolume * dwmoderateVol);
	veryHighVolume = V > (avgVolume * dwVeryHighVol);
	ultraHighVolume = V > (avgVolume * dwUltraHighVol);
	LowVolume = V < (avgVolume * dwLowVol);
	/* direction AND Title */
	/* Basic patterns... */
	upThrustBar = downClose AND H > Ref(H,-1) AND (C == L) AND downClose AND (NOT narrowRange);
	noDemandBar = narrowRange AND LowVolume AND upBar AND (NOT upClose);
	//noDemandBar = narrowRange AND LowVolume AND upBar AND (V < Ref(V,-1)) AND (V < Ref(V,-2));
	noSupplyBar = narrowRange AND LowVolume AND downBar AND (V < Ref(V,-1)) AND (V < Ref(V,-2));
	absorption = Ref(downbar, -1) AND Ref(highVolume, -1) AND upBar;
	support = Ref(downBar,-1) AND (NOT Ref(downClose,-1)) AND Ref(highVolume,-1) AND upBar;
	stoppingVolume = Ref(downBar,-1) AND Ref(highVolume,-1) AND C > testCloseMiddle AND (NOT downBar);
	bullishsign=moderateVol+UpThrustBar;//OR moderateVol+upBar;
	//rallyEnd = (Ref(highVolume,-1) AND Ref(upBar,-1) AND wideRange AND downBar) OR
	// (narrowRange AND highVolume AND H > Ref(HHV(H, 250), -1));
	/* Strength AND Weakness */
	weakness = upThrustBar OR noDemandBar OR
	(narrowRange AND (H > Ref(H,-1)) AND highVolume) OR
	(Ref(highVolume,-1) AND Ref(upBar,-1) AND downBar AND (H < Ref(H,-1)));
// VARIABLES
//		TrendScore Count
	IIf( bullishsign, i+3,i);
	IIf( upThrustBar, i+2,i);
	IIf( absorption, i+1,i);
//		Indicators
	VPAst_Status	=	WriteIf(Weakness,"W e a k",
						WriteIf(StoppingVolume,"Stopping Volume",
						WriteIf(noSupplyBar,"No Supply",
						WriteIf(support,"Support",
						WriteIf(noDemandBar,"No Demand",
						WriteIf(absorption,"Absorption",
						WriteIf(upThrustBar,"Up Thrust",
						WriteIf(bullishsign,"-=STRONG=-","Neutral"))))))));
	VPAst_Color	=	IIf(Weakness,Color_sell,
						IIf(StoppingVolume,Color_bear,
						IIf(noSupplyBar,Color_bear1,
						IIf(support,Color_bear,
						IIf(noDemandBar,Color_prev,
						IIf(absorption,Color_bull1,
						IIf(upThrustBar,Color_bull,
						IIf(bullishsign,Color_buy,Color_null))))))));
_SECTION_END();


//////////////////////////
// EMA Terms and Trend  //
//////////////////////////
_SECTION_BEGIN("EMA Short, Mid and Long Terms and Trend");
// PARAMETERS
	EMAs1Pds	=	Param("1st. Short Term Period",9,5,14,1);
	EMAs2Pds	=	Param("2nd. Short Term Period",20,15,45,1);
	EMAmPds	=	Param("Mid Term Period",50,46,90,1);
	EMAlPds	=	Param("Long Term Perdiod",200,100,300,1);
// FORMULA
//	EMA Short term signals
	EMAsBuy	=	Cross(EMA(C,EMAs1Pds), EMA(C,EMAs2Pds));
	EMAsSell	=	Cross(EMA(C,EMAs2Pds),EMA(C,EMAs1Pds));
	EMAsBuy	=	ExRem(EMAsBuy, EMAsSell);
	EMAsSell	=	ExRem(EMAsSell, EMAsBuy);
	EMAsBull	=	EMA(C,EMAs1Pds) > EMA(C,EMAs2Pds);
	EMAsBear	=	EMA(C,EMAs1Pds) < EMA(C,EMAs2Pds);
//	EMA Mid term signals
	EMAmBuy	=	Cross(EMA(C,(EMAs1Pds+EMAs2Pds)/2), EMA(C,EMAmPds));
	EMAmSell	=	Cross(EMA(C,EMAmPds), EMA(C,(EMAs1Pds+EMAs2Pds)/2));
	EMAmBuy	=	ExRem(EMAmBuy, EMAmSell);
	EMAmSell	=	ExRem(EMAmSell, EMAmBuy);
	EMAmBull	=	C > EMA(C,EMAmPds);
	EMAmBear	=	C < EMA(C,EMAmPds);
//	EMA Long term signals
	EMAlBuy	=	Cross(EMA(C,EMAmPds), EMA(C,EMAlPds));
	EMAlSell	=	Cross(EMA(C,EMAlPds), EMA(C,EMAmPds));
	EMAlBuy	=	ExRem(EMAlBuy, EMAlSell);
	EMAlSell	=	ExRem(EMAlSell, EMAlBuy);
	EMAlBull	=	C > EMA(C,EMAlPds);
	EMAlBear	=	C < EMA(C,EMAlPds);
// EMA Positional Price Trend (Long-Term)
	EMA_rc		=	C > EMA (C,EMAmPds) AND C < EMA(C,EMAlPds) AND EMA(C,EMAmPds) < EMA(C,EMAlPds);
	EMA_ac		=	C > EMA (C,EMAmPds) AND C > EMA(C,EMAlPds) AND EMA(C,EMAmPds) < EMA(C,EMAlPds);
	EMA_bl		=	C > EMA (C,EMAmPds) AND C > EMA(C,EMAlPds) AND EMA(C,EMAmPds) > EMA(C,EMAlPds);
	EMA_pr		=	C < EMA (C,EMAmPds) AND C > EMA(C,EMAlPds) AND EMA(C,EMAmPds) > EMA(C,EMAlPds);
	EMA_ds		=	C < EMA (C,EMAmPds) AND C < EMA(C,EMAlPds) AND EMA(C,EMAmPds) > EMA(C,EMAlPds);
	EMA_br		=	C < EMA (C,EMAmPds) AND C < EMA(C,EMAlPds) AND EMA(C,EMAmPds) < EMA(C,EMAlPds);
// VARIABLES
//		TrendScore Count
	IIf(EMAsBuy,i+1,i);
	IIf(EMAmBuy,i+1,i);
	IIf(EMAlBuy,i+1,i);
	IIf(EMA_rc,i+3,i);
	IIf(EMA_ac,i+2,i);
	IIf(EMA_bl,i+1,1);
	EMAs_Status	=	WriteIf(EMAsBuy, "-=BUY=-",
						WriteIf(EMAsSell, "-=SELL=-",
						WriteIf(EMAsBull, "Bullish",
						WriteIf(EMAsBear, "Bearish","Neutral"))));
	EMAs_Color		=	IIf(EMAsBuy, Color_buy,
						IIf(EMAsBull, Color_bull,
						IIf(EMAsBear, Color_bear,
						IIf(EMAsSell, Color_sell,Color_null))));
	EMAm_Status	=	WriteIf(EMAmBuy, "-=BUY=-",
						WriteIf(EMAmSell, "-=SELL=-",
						WriteIf(EMAmBull, "Bullish",
						WriteIf(EMAmBear, "Bearish","Neutral"))));
	EMAm_Color		=	IIf(EMAmBuy, Color_buy,
						IIf(EMAmBull, Color_bull,
						IIf(EMAmBear, Color_bear,
						IIf(EMAmSell, Color_sell,Color_null))));
	EMAl_Status	=	WriteIf(EMAlBuy, "-=BUY=-",
						WriteIf(EMAlSell, "-=SELL=-",
						WriteIf(EMAlBull, "Bullish",
						WriteIf(EMAlBear, "Bearish","Neutral"))));
	EMAl_Color		=	IIf(EMAlBuy, Color_buy,
						IIf(EMAlBull, Color_bull,
						IIf(EMAlBear, Color_bear,
						IIf(EMAlSell, Color_sell,Color_null))));
	EMAp_Status	=	WriteIf(EMA_rc, "RECOVERY",
						WriteIf(EMA_ac, "Accumulation",
						WriteIf(EMA_bl, "Bullish",
						WriteIf(EMA_pr, "Preventive",
						WriteIf(EMA_ds, "Distribution",
						WriteIf(EMA_br, "Bearish","Neutral"))))));
	EMAp_Color		=	IIf(EMA_rc, Color_buy,
						IIf(EMA_ac, Color_acc1,
						IIf(EMA_bl, Color_bull,
						IIf(EMA_pr, Color_prev,
						IIf(EMA_ds, Color_bear1,
						IIf(EMA_br, Color_bear,Color_null))))));
_SECTION_END();


////////////////////////
// Initial Buy signal //
////////////////////////
_SECTION_BEGIN("IBuy Signal");
// FORMULA
	I_buy =  Cross(RSI(14), EMA(RSI(14),9));
	I_sell = Cross(EMA(RSI(14),9), RSI(14));
	I_buy = ExRem(I_buy, I_sell);
	I_sell = ExRem(I_sell, I_buy);
	I_bull = RSI(14) > EMA(RSI(14),9);
	I_bear = RSI(14) < EMA(RSI(14),9);
// VARIABLES
//		TrendScore Count
	IIf(I_buy,i+2,i);
	IIf(I_bull,i+1,i);
//		Indicators
	I_Status	=	WriteIf(I_buy,"-=BUY=-",
					WriteIf(I_bull,"Bullish",
					WriteIf(I_bear,"Bearish",
					WriteIf(I_sell,"-=SELL=-","Neutral"))));
	I_Color	=	IIf(I_buy,Color_buy,
					IIf(I_bull,Color_bull,
					IIf(I_bear,Color_bear,
					IIf(I_sell,Color_sell,Color_null))));
_SECTION_END();


/////////////////////
// Price Smoothing //
/////////////////////
_SECTION_BEGIN("T3 Price Smoothing Signal");
// FORMULA
	T3_buy		=	Cross (T3(C,3), T3(C,5));
	T3_sell	=	Cross (T3(C,5), T3(C,3));
	T3_buy		=	ExRem(T3_buy, T3_sell);
	T3_sell	=	ExRem(T3_sell, T3_buy);
// VARIABLES
//		TrendScore Count
	IIf(T3_buy,i+1,i);
//		Indicators
	T3_Status	=	WriteIf(T3_buy,"-=BUY=-",
					WriteIf(T3_sell,"-=SELL=-","Neutral"));
	T3_Color	=	IIf(T3_buy,Color_buy,
					IIf(T3_sell,Color_sell,Color_null));
_SECTION_END();


////////////////////
// Bollinger Band //
////////////////////
_SECTION_BEGIN("Bollinger Bands");
// FORMULA
	BB1			=	C>BBandTop(C,20,2) AND Ref(C,-1)<Ref(BBandTop(C,20,2),-1);
	BB2			=	C<BBandBot(C,20,2) AND Ref(C,-1)>Ref(BBandBot(C,20,2),-1);
// VARIABLES
//		TrendScore Count
	IIf(BB1,i+1,i);
//		Indicators
	BB_Status	=	WriteIf(BB1,"Above Top",
					WriteIf(BB2,"Below Bottom",
					WriteIf(IsNull(MA(C,20)),"N/A","Neutral")));
	BB_Color	=	IIf(BB1,Color_bull,
					IIf(BB2,Color_bear,Color_null));
_SECTION_END();


//////////
// MACD //
//////////
_SECTION_BEGIN("MACD Signal");
// FORMULA
	MACDBull		=	MACD(12,26)>Signal(12,26,9);
// VARIABLES
//		TrendScore Count
	IIf(MACDBull,i+1,i);
//		Indicators
	MACD_Status		=	WriteIf(MACDBull,"Bullish",
							WriteIf(IsNull(MACD(12,26)),"N/A","Bearish"));
	MACD_Color			=	IIf(MACDBull,Color_bull,
							IIf(IsNull(MACD(12,26)),Color_null,Color_bear));
_SECTION_END();


/////////////////
// RSI of MACD //
/////////////////
_SECTION_BEGIN("RSI of MACD Signal");
// PARAMETERS
	RSItPds=Param("Period",14,7,33,1);
	RSItOb_Parm=Param("OverBought Level",70,-200,200,5);
	RSItOs_Parm=Param("OverSold Level",30,-200,200,5);
// FORMULA
	Var=MACD(); 
	Up=IIf(Var>Ref(Var,-1),abs(Var-Ref(Var,-1)),0); 
	Dn=IIf(Var<Ref(Var,-1),abs(Var-Ref(Var,-1)),0); 
	Ut=Wilders(Up,RSItPds); 
	Dt=Wilders(Dn,RSItPds);
	RSIt=100*(Ut/(Ut+Dt));
	//RSItBuy	=	RSIt < RSItOs_Parm AND RSIt > Ref(RSIt,-1);
	//RSItOs		=	RSIt < RSItOs_Parm AND RSIt < Ref(RSIt,-1);
	//RSItNu		=	RSIt < RSItOs_Parm AND RSIt > RSItOb_Parm AND RSIt > Ref(RSIt,-1);
	//RSItNd		=	RSIt < RSItOs_Parm AND RSIt > RSItOb_Parm AND RSIt < Ref(RSIt,-1);
	//RSItOb		=	RSIt <	RSItOb_Parm AND RSIt > Ref(RSIt,-1);
	//RSItSell		=	RSIt <	RSItOb_Parm AND RSIt < Ref(RSIt,-1);
	RSItOs			=	RSIt < RSItOs_Parm;
	RSItOb			=	RSIt > RSItOb_Parm;
	// VARIABLES
	//		TrendScore Count
	IIf(RSItOs, i+1,i);
	//		Indicators
	RSIt_Status	=	WriteIf(RSItOs,"OverSold",
						WriteIf(RSItOb,"OverBought","In Range"));
	RSIt_Color	=		IIf(RSItOs,Color_bull,
						IIf(RSItOb,Color_sell,Color_null));
_SECTION_END();


///////////
// Aroon //
///////////
//_SECTION_BEGIN("AROON Signal");
//// PARAMETERS
//	ArPeriod=Param("Period",14,7,33,1);
//// FORMULA
//	LLVBarsSince=LLVBars(L,ArPeriod)+1;
//	HHVBarsSince=HHVBars(H,ArPeriod)+1;
//	AroonDown=100*(ArPeriod-LLVBarsSince)/(ArPeriod-1);
//	AroonUp=100*(ArPeriod-HHVBarsSince)/(ArPeriod-1);
//	AroonOsc=AroonUp-AroonDown;
//	Aroon=AroonOsc>0;
//// VARIABLES
//	IIf(Aroon,i+1,i);
//	AROON_Status	=	WriteIf(Aroon,"Bullish",
//						WriteIf(IsNull (RSI(14)),"N/A","Bearish"));
//	AROON_Color	=	IIf(Aroon,Color_bull,
//						IIf(IsNull(RSI(14) ),Color_null,Color_bear));
//_SECTION_END();


/////////
// WAD //
/////////
//_SECTION_BEGIN("Williams Accumulation-Distribution Signal");
// PARAMETERS
//	WADPds=Param("Period",20,7,33,1);
	// FORMULA
//	TrueRangeHigh=Max( Ref(Close,-1), High );
//	TrueRangeLow=Min( Ref(Close,-1), Low );
//	WAD = Cum(IIf(C > Ref(C,-1),C-TrueRangeLow, IIf(C < Ref(C,-1),C-TrueRangeHigh,0)));
//	wadup = WAD > EMA (WAD,WADPds);
//	waddn = WAD < EMA (WAD,WADPds);
//	wadbl = Cross(WAD, EMA(WAD,WADPds));
//	wadbr = Cross(EMA(WAD,WADPds), WAD);
// VARIABLES
//	WAD_Status	=	WriteIf(wadup, "Bullish Zone",
//					WriteIf(waddn, "Bearish Zone",
//					WriteIf(wadbl, "Bullish Cross",
//					WriteIf(wadbr, "Bearish Cross","Neutral"))));
//	WAD_Color	=	IIf(wadup,Color_bull,
//					IIf(wadbl,Color_bear,
//					IIf(wadbr,Color_bull1,
//					IIf(waddn,Color_bear1,Color_null))));
//_SECTION_END();


/////////////
// Coppock //
/////////////
_SECTION_BEGIN("Coppock Indicator");
// FORMULA
	CKr1=ROC(C,14);
	CKr2=ROC(C,11);
	CK=EMA((CKr1+CKr2),10);
	CK_upt=IIf(ck>0 AND ROC(ck,1)>0,ck,0);
	CK_ups=IIf(ck>0 AND ROC(ck,1)<0,ck,0);
	CK_dws=IIf(ck<0 AND ROC(ck,1)>0,ck,0);
	CK_dwt=IIf(ck<0 AND ROC(ck,1)<0,ck,0);
// VARIABLES
//		TrendScore Count
	IIf(CK_upt,i+2,i);
	IIf(CK_ups,i+1,i);
//		Indicators
	Coppock_Status	=	WriteIf( CK_upt,"UPTREND",
							WriteIf( CK_ups,"UpT Sideways",
							WriteIf( CK_dws,"DnT Sideways",
							WriteIf( CK_dwt,"DownTrend","Flat"))));
	Coppock_Color		=	IIf( CK_upt,Color_buy,
							IIf( CK_ups,Color_bull,
							IIf( CK_dws,Color_bear,
							IIf( CK_dwt,Color_sell,Color_null))));
_SECTION_END();


////////////////
// Stochastic //
////////////////
_SECTION_BEGIN("Stochastic %D %K Signal");
// FORMULA
	StochKBull		=	StochK(14,3)>StochD(14,3,3);
// VARIABLES
//		TrendScore Count
	IIf(StochKBull,i+1,i);
//		Indicators
	STOCH_Status	=	WriteIf( StochKBull,"Bullish",
						WriteIf( IsNull(StochK(14,3)),"N/A","Bearish"));
	STOCH_Color	=	IIf(StochKBull,Color_bull,
						IIf( IsNull(StochK(14,3)),Color_null,Color_bear));
_SECTION_END();


//////////
// ARSI //
//////////
_SECTION_BEGIN("ARSI Signal");
// PARAMETERS
	ARSI_Pds		=	Param("Period",14,7,33,1);
	ARSIOb_Parm	=	Param("OverBought Level",70,-200,200,5);
	ARSIOs_Parm	=	Param("OverSold Level",30,-200,200,5);
// FORMULA
	Chg 			=	C - Ref( C, -1 );
	UpCount		=	Sum( Chg >= 0, ARSI_Pds );
	DnCount		=	ARSI_Pds - UpCount;
	UpMove			=	AMA( Max( Chg, 0 ), Nz(1/UpCount) );
	DnMove			=	AMA( Max( -Chg, 0 ), Nz(1/DnCount) );
	RS				=	UpMove/DnMove;
	ARSI			=	100-(100/(1+RS));
	ARSIOs			=	ARSI < ARSIOs_Parm;
	ARSIOb			=	ARSI > ARSIOb_Parm;
	//ARSIUt		=	ARSI > Ref(ARSI,-1);
	//ARSIDt		=	ARSI < Ref(ARSI,-1);
	//ARSIBuy		=	ARSI < ARSIOs AND ARSIUt;
	//ARSISell		=	ARSI >	ARSIOb AND ARSIDt;
	//ARSIBuy		=	ExRem(ARSIBuy, ARSISell);
	//ARSISell		=	ExRem(ARSISell,ARSIBuy);
// VARIABLES
//		TrendScroe Count
	IIf(ARSIOs,i+1,i);
//		Indicators
	ARSI_Status		=	WriteIf(ARSIOs,"OverSold",
							WriteIf(ARSIOb,"OverBought","In Range"));
							//WriteIf(ARSIBuy,"-=BUY=-",
							//WriteIf(ARSI>ARSIOs,"OverSold",
							//WriteIf(ARSIUt,"Improving",
							//WriteIf(ARSIDt,"Declining",
							//WriteIf(ARSI<ARSIOb,"OverBought",
							//WriteIf(ARSISell,"-=SELL=-",""))))));
	ARSI_Color		=		IIf(ARSIOs,Color_bull,
							IIf(ARSIOb,Color_sell,Color_null));
							//IIf(ARSIBuy,Color_buy,
							//IIf(ARSI>ARSIOs,Color_bull,
							//IIf(ARSIUt,Color_bull1,
							//IIf(ARSIDt,Color_bear1,
							//IIf(ARSI<ARSIOb,Color_bear,
							//IIf(ARSISell,Color_sell,Color_null))))));
_SECTION_END();


/////////
// RSI //
/////////
//_SECTION_BEGIN("RSI Signal");
// PARAMETERS
//	RSIPds=Param("Period",14,7,33,1);
//	RSIOb=Param("OverBought Level",70,-200,200,5);
//	RSIOs=Param("OverSold Level",30,-200,200,5);
// FORMULA
//	R1=RSI(RSIPds)>RSIOs AND Ref(RSI(RSIPds),-1)<RSIOs AND Ref(RSI(RSIPds),-2)<RSIOs;
//	R2=RSI(RSIPds)<RSIOb AND Ref(RSI(RSIPds),-1)>RSIOb AND Ref(RSI(RSIPds),-2)>RSIOb;
// VARIABLES
//	IIf(R1,i+1,i);
//	RSI_Status		=	WriteIf(R1,"Improving",
//						WriteIf(R2,"Declining",
//						WriteIf(IsNull(RSI(14)),"N/A","Neutral")));
//	RSI_Color		=	IIf(R1,Color_bull1,
//						IIf(R2,Color_bear1,Color_null));
//_SECTION_END();


/////////
// MFI //
/////////
_SECTION_BEGIN("MFI Signal");
// PARAMETERS
	MFIPds=Param("Period",14,7,33,1);
	MFIOb=Param("OverBought Level",80,-200,200,5);
	MFIOs=Param("OverSold Level",20,-200,200,5);
// FORMULA
	M1=MFI(MFIPds)>MFIOb;
	M2=MFI(MFIPds)<MFIOs;
//	VARIABLES
//		TrendScroe Count
	IIf(M2,i+1,i);
//		Indicators
	MFI_Status		=	WriteIf(M1,"OverBought",
						WriteIf(M2,"OverSold",
						WriteIf(IsNull(MFI(MFIPds)),"Null","Neutral")));
	MFI_Color		=	IIf(M1,Color_sell,
						IIf(M2,Color_buy,Color_null));
_SECTION_END();


/////////////////////////////////
// ADX Trend Strenght with ADX //
/////////////////////////////////
_SECTION_BEGIN("ADX Signal");
// JSB Lib Version
// INITIALIZATION
	SetBarsRequired(100000, 100000);
//	JSB_InitLib();
// PARAMETERS
	ADX_Parm	=	Param( "ADX Period", 8, 5, 50,1);
	ADX_Parma	=	Param( "ADX Perioda", 15, 5, 50,1);
	ADX_Parmb	=	Param( "ADX Periodb", 25, 5, 50,1);
	ADX_Parmc	=	Param( "ADX Periodc", 35, 5, 50,1);
	ADX_Parmd	=	Param( "ADX Periodd", 50, 5, 50,1);
// FORMULA
//	ADX Buy, Sell & Choppy Signal
	ADX_up		=	MA(C,ADX_Parm) > 0;
	ADX_dn		=	MA(C,ADX_Parm) < 0;
	ADX_ch		=	MA(C,ADX_Parma) < MA(C,ADX_Parmb) AND MA(C,ADX_Parmc) < MA(C,ADX_Parmd);
	ADX_Buy	=	Cross(MA(C,ADX_Parm), MA(C,ADX_Parmb));
	ADX_Sell	=	Cross(MA(C,ADX_Parmb), MA(C,ADX_Parm));
	ADX_Buy	=	ExRem(ADX_Buy, ADX_Sell);
	ADX_Sell	=	ExRem(ADX_Sell, ADX_Buy);
	ADX_bull	=	MA(C,ADX_Parm) > MA(C,ADX_Parmb);
	ADX_bear	=	MA(C,ADX_Parm)> MA(C,ADX_Parma);
// ADX Trend Confirmation Signal
	ADXwk		=	ADX(ADX_Parm) < 25;
	ADXst		=	ADX(ADX_Parm) > 25 AND ADX(ADX_Parm) < 50;
	ADXvs		=	ADX(ADX_Parm) > 50 AND ADX(ADX_Parm) < 75;
	ADXex		=	ADX(ADX_Parm) > 75 AND ADX(ADX_Parm) < 100;
	ADXchoppy	=	ADX(ADX_Parm) < PDI(ADX_Parm) AND ADX(ADX_Parm) < MDI(ADX_Parm);
// VARIABLES
//		TrendScore Count
	IIf(ADX_Buy,i+2,i);
	IIf(ADX_bull,i+1,i);
//	IIf(ADXst,i+1,i);
//		Indicators
	ADX_Status		=	WriteIf(ADX_Buy,"-=BUY=-",
						WriteIf(ADX_bull,"Bullish",
						WriteIf(ADX_bear,"Bearish",
						WriteIf(ADX_Sell,"-=SELL=-","Neutral"))));
	ADX_Color		=	IIf(ADX_Buy,Color_buy,
						IIf(ADX_bull,Color_bull,
						IIf(ADX_bear,Color_bear,
						IIf(ADX_Sell,Color_sell,Color_null))));
	//ADXc_Status	=	WriteIf(ADXwk,"Weak",
	//					WriteIf(ADXst,"Good",
	//					WriteIf(ADXvs,"Strong",
	//					WriteIf(ADXex,"EXCELENT",
	//					WriteIf(ADXchoppy,"Choppy","Neutral")))));
	//ADXc_Color		=	IIf(ADXwk,Color_sell,
	//					IIf(ADXst,Color_bull1,
	//					IIf(ADXvs,Color_bull,
	//					IIf(ADXex,Color_buy,
	//					IIf(ADXchoppy,Color_prev,Color_null)))));
_SECTION_END();



_SECTION_BEGIN("Unnamed 1");


threshold = 5;
uptrend = StochK(39,3) > StochD(39,3,3);
downtrend =StochK(39,3) < StochD(39,3,3);

Buy = uptrend AND H >= Ref(H,-1) + threshold; BuyPrice = Max(O,Ref(H,-1) + threshold);
Sell = downtrend AND L <= Ref(L,-1) - threshold; SellPrice = Min(O,Ref(L,-1) - threshold);

Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Cover=Buy;
Short=Sell;
SellPrice=ValueWhen(Short,C,1);
BuyPrice=ValueWhen(Buy,C,1);

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
///////////////////////
// Trend Score Count //
///////////////////////
_SECTION_BEGIN("Trend Score Count");
	TrendScore		=	IIf(V>Vp2,3,0) +
						IIf(V>Vp1,2,0) +
						IIf(V>VRG,1,0) +
						IIf(rg>(arg*2),2,0) +
						IIf(rg>arg,1,0) +
						IIf(rising,1,0) +
						IIf(bullishsign,3,0) +
						IIf(upThrustBar,2,0) +
						IIf(absorption,1,0) +
						IIf(EMAsBuy,1,0) +
						IIf(EMAmBuy,1,0) +
						IIf(EMAlBuy,1,0) +
						IIf(EMA_rc,3,0) +
						IIf(EMA_ac,2,0) +
						IIf(EMA_bl,1,0) +
						IIf(I_buy,2,0) +
						IIf(I_bull,1,0) +
						IIf(T3_buy,1,0) +
						IIf(BB1,1,0) +
						IIf(MACDBull,1,0) +
						//IIf(Aroon,1,0) +
						IIf(CK_upt,2,0) +
						IIf(CK_ups,1,0) +
						IIf(StochKBull,1,0) +
						IIf(RSItOs,1,0) +
						IIf(ARSIOs,1,0) +
						//IIf(R1,1,0) +
						IIf(M2,1,0) +
						IIf(ADX_Buy,2,0);
						IIf(ADX_bull,1,0);
						//IIf(ADXst,1,0);
	ScoreRank		=	100 * TrendScore / 30;	
_SECTION_END();
if(Explorer==0)
{
//////////////////////
// Exploration Code //
//////////////////////
_SECTION_BEGIN("Explorer");
// PARAMETERS
	EXPfil_Parm	=	ParamList	( "Filter","All Symbols|Buy Signals|Sell Signals",0);
	EXPvol_Parm	=	Param		( "20 Day Min. Vol. Cap.", 50000,0,100000000,1000);
	EXPvol_Parm	=	Param		( "Min. Price Close",15,0,5000000,1);
// FILTER
Filter = 1;
// DISPLAY COLUMNS
	//AddColumn	(High52,"52 Week High");
	//AddColumn	(Low52,"52 Week Low");
	AddColumn		(C,"P.Close",1.2,IIf(C>Ref(C,-1),		colorGreen,colorRed));
	AddColumn		(V,"Volume",1,IIf(V>Ref(V,-1),			colorGreen,colorRed));
	AddTextColumn	(VPAv_Status,"VPA Volume",1,			VPAv_Color,BColor_vpa);
	AddTextColumn	(VPAs_Status,"VPA Spread",1,			VPAs_Color,BColor_vpa);
	AddTextColumn	(VPAc_Status,"VPA Close",1,				VPAc_Color,BColor_vpa);
	AddTextColumn	(VPAz_Status,"VPA Zone",1,				VPAz_Color,BColor_vpa);
	AddTextColumn	(VPAst_Status,"VPA Status",1,			VPAst_Color,BColor_vpa);
	AddTextColumn	(EMAs_Status,"EMA Short",1,				EMAs_Color,BColor_mas);
	AddTextColumn	(EMAm_Status,"EMA Mid",1,				EMAm_Color,BColor_mam);
	AddTextColumn	(EMAl_Status,"EMA Long",1,				EMAl_Color,BColor_mal);
	AddTextColumn	(EMAp_Status,"EMA Trend",1,				colorWhite,EMAp_Color);
	AddTextColumn (I_Status,"I Signal",1,					colorWhite,I_Color);
	AddTextColumn (T3_Status,"T3 Signal",1,				colorWhite,T3_Color);
	AddTextColumn	(BB_Status,"Bol. Band",1,				colorWhite,BB_Color);
	AddTextColumn	(MACD_Status,"MACD",1,					colorWhite,MACD_Color);
	AddTextColumn	(RSIt_Status,"MACD(RSI)",1,				colorWhite,RSIt_Color);
	//AddTextColumn	(AROON_Status,"Aroon",1,			colorWhite,AROON_Color);
	//AddTextColumn	(WAD_Status,"Williams A/D",1,		colorWhite,WAD_Color);
	AddTextColumn (COPPOCK_Status,"Coppock",1,			colorWhite,COPPOCK_Color);
	AddTextColumn	(STOCH_Status,"Stochastic",1,			colorWhite,STOCH_Color);
	AddTextColumn	(ARSI_Status,"ARSI",1,					colorWhite,ARSI_Color);
	//AddTextColumn	(RSI_Status,"RSI",1,					colorWhite,RSI_Color);
	AddTextColumn	(MFI_Status,"MFI(14)",1,				colorWhite,MFI_Color);
	AddTextColumn	(ADX_Status,"DMX (ADX)",1,				colorWhite,ADX_Color);
	//AddTextColumn	(ADXc_Status,"ADX Confirm",1,		colorWhite,ADXc_Color);
	//AddColumn		(RSIt,"TEST L",1,						colorWhite,colorBlack);
	AddColumn		(TtD_Change,"P/L %",1.2,IIf(TtD_Change>0,	colorGreen,colorRed));
	AddColumn		(Beta,"( ß )",1.2,IIf(Beta>0,colorGreen,colorRed));
	AddColumn		(ScoreRank,"% Rank",1.0,colorWhite,colorBlue);
_SECTION_END();
}
else
{

AlertIf( Buy, "", "BUY @ " + C, 1 );
AlertIf( Sell, "", "SELL @ " + C, 2 );
no=Param( "Swing", 8, 1, 55 );
tsl_col=ParamColor( "Color", colorLightGrey );
res=HHV(H,no);
sup=LLV(L,no);
avd=IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0));
avn=ValueWhen(avd!=0,avd,1);
tsl=IIf(avn==1,sup,res);

//no =  Optimize("TSL",Param("A (Change To Optimise)",10, 1, 55 ,1),1, 55 ,1);

tsl_col=ParamColor( "Color", colorLightGrey );
res=HHV(H,no);
sup=LLV(L,no);
avd=IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0));
avn=ValueWhen(avd!=0,avd,1);
dtsl=IIf(avn==1,sup,res);
SellPrice=ValueWhen(Short,C,1);
BuyPrice=ValueWhen(Buy,C,1);
Long=Flip(Buy,Sell);
Shrt=Flip(Short,Cover);
Relax = NOT Long AND NOT Buy AND NOT shrt AND NOT Sell AND NOT Sell AND NOT Cover;
SellSL=ValueWhen(Short,DTSL,1);
BuySL=ValueWhen(Buy,DTSL,1);
BuyDifference= BuyPrice - BuySL;
SellDifference = SellSL - SellPrice;

tar1 = IIf(Buy OR Long AND NOT Relax AND NOT Sell AND NOT Cover, (BuyPrice + BuyDifference), (SellPrice - SellDifference));
tar2 = IIf(Buy OR Long AND NOT Relax AND NOT Sell AND NOT Cover, (BuyPrice + (2*BuyDifference)), (SellPrice - (2*SellDifference)));
tar3 = IIf(Buy OR Long AND NOT Relax AND NOT Sell AND NOT Cover, (BuyPrice + (4*BuyDifference)), (SellPrice - (4*SellDifference)));
// User-defined parameter for EMA periods

EMA_Type		= Param("EMA-1, TEMA-2, JMA-3", 2, 1, 3, 1);
EMA_prds 		= Param("EMA_periods", 7, 1, 30, 1);
Std_MACD		= Param("Standard MACD? No-0, Yes-1", 1, 0, 1, 1);
Plot_fashion	= Param("Bar+Arrows-1, Impulse  Bars-2", 2, 1, 2, 1);


// Allow user to define Weekly and Monthly Ribbon Location and Height
WR_P1 = Param("Weekly Ribbon Location", -10.5, -1000, 1000, 0.1);
WR_P2 = Param("Weekly Ribbon Height", 366.5, -0.001, 500, 0.1);

MR_P1 = Param("Monthly Ribbon Location", 5.2, -1000, 1000, 0.1);
MR_P2 = Param("Monthly Ribbon Height", 199, -0.001, 500, 0.1);


// Compute EMA and MACD Histogram
if(EMA_Type == 1)
{
	DayEMA	= EMA(Close, EMA_prds);
}
if (EMA_Type == 2)
{
	DayEMA	= TEMA(Close, EMA_prds);
}

if(EMA_Type == 3)
{
	// Line below to be used with Jurik JMA
	// DayEMA = JurikJMA(C, EMA_Prds);
}

Histogram	= MACD() - Signal();

// Determine if we have an Impulse UP, DOWN or None
Impulse_Up		=	DayEMA > Ref(DayEMA, -1) AND Histogram > Ref(Histogram, -1);
Impulse_Down	=	DayEMA < Ref(DayEMA, -1) AND Histogram < Ref(Histogram, -1);   
Impulse_None		=	(NOT Impulse_UP) AND (NOT Impulse_Down);

// Compute Weekly MACD and determine whether rising or falling
// Note: uses "non-standard"  parameters!
TimeFrameSet(inWeekly);

if (Std_MACD == 0)
{
MACD_val		=	MACD(5, 8);
Signal_val		=	Signal(5, 8, 5);
}
else
{
MACD_val		=	MACD(12, 26);
Signal_val		=	Signal(12, 26, 9);
}

Hist_in_w		=	MACD_val - Signal_val;

wh_rising = Hist_in_w > Ref(Hist_in_w, -1);
wh_falling = Hist_in_w < Ref(Hist_in_w, -1);

TimeFrameRestore();

// Now get Monthly MACD Histogram....
TimeFrameSet(inMonthly);
MACD_val		=	MACD(5, 8);
Signal_val		=	Signal(5, 8, 5);
Hist_in_m		=	MACD_val - Signal_val;

mh_rising = Hist_in_m > Ref(Hist_in_m, -1);
mh_falling = Hist_in_m < Ref(Hist_in_m, -1);

TimeFrameRestore();

wh_rising 		= TimeFrameExpand( wh_rising, inWeekly, expandLast ); 
wh_falling 		= TimeFrameExpand( wh_falling, inWeekly, expandLast); 
mh_rising 	= TimeFrameExpand(mh_rising, inMonthly, expandLast);
mh_falling 	= TimeFrameExpand(mh_falling, inMonthly, expandLast);

kol 	= IIf( wh_rising, colorGreen,  IIf(wh_falling, colorRed,
colorLightGrey));
mkol 	= IIf( mh_rising, colorBlue,  IIf(mh_falling, colorYellow,
colorLightGrey));

// Plot them all!
if (Plot_fashion == 1)
{
	Plot(Close, "Close", colorTeal, styleBar);
	PlotShapes(shapeUpArrow * Impulse_Up, colorBlue, 0, Low, -12);
	PlotShapes(shapeDownArrow * Impulse_Down, colorRed, 0, High, -12);
	PlotShapes(shapeSmallCircle * Impulse_None, colorWhite, 0, High, 5);
}
else
{
	bar_kol	=	IIf(impulse_UP, colorBlue, IIf(impulse_Down, colorRed,
colorWhite));
	//Plot(C, "Close", bar_kol, styleBar);
}

Plot(10, "ribbon", kol, styleOwnScale|styleArea|styleNoLabel, WR_P1, WR_P2);//Weekly trend

Plot(10, "ribbon", mkol, styleOwnScale|styleArea|styleNoLabel, MR_P1,
MR_P2);	// Monthly Trend

// Explorer Section
// Determine if Impulse status is bullish, neutral or bearish.  Display as Text Column.

Impulse_State		=	WriteIf(Impulse_Up, "Bul", WriteIf(Impulse_Down,
"Bear", "Neut"));

// Set the background color for Impulse Status Column
Impulse_Col		=	IIf(Impulse_Up, colorGreen, IIf(Impulse_Down, colorRed,
colorLightGrey));

// Determine Weekly Trend. Display as Text Column
Weekly_Trend		=	WriteIf(wh_rising, "Rising", WriteIf(wh_falling, "Falling",
"Flat!"));
Weekly_Col		=	IIf(wh_rising, colorGreen, IIf(wh_falling, colorRed,
colorLightGrey));

// Determine Monthly Trend. Display as Text Column
Monthly_Trend	=	WriteIf(mh_rising, "Rising", WriteIf(mh_falling, "Falling",
"Flat!"));
Monthly_Col		=	IIf(mh_rising, colorGreen, IIf(mh_falling, colorRed,
colorLightGrey));

// Determine how many bars has the current state existed
bars_in_bull	=	Min(BarsSince(impulse_none), BarsSince(impulse_down));
bars_in_bear	=	Min(BarsSince(impulse_up), BarsSince(impulse_none));
bars_in_neut	=	Min(BarsSince(impulse_down), BarsSince(impulse_up));

// Set a single variable to show number of bars in current state depending upon

// actual Impulse Status - Bullish, Bearish or Neutral
bars_in_state	=	IIf(Impulse_Up,bars_in_bull, IIf(Impulse_down, bars_in_bear,bars_in_neut));
//AddColumn(Close,"Close",1.2);
// Columns for display in Explorer 
//AddTextColumn(Impulse_State, "Status", 1, colorWhite, Impulse_Col);
//AddColumn(bars_in_state, "Bars", 1, colorWhite, Impulse_col);
//Action = WriteIf(Buy, "BUY", WriteIf(Sell, "SELL", "   "));
//i=0;
//bars_in_statee	=	IIf(Buy, BarCount[i], IIf(Sell, BarCount[i],bars_in_neut));
//bars=BarsSince(IIf(Buy+BarCount+1),OR( Sell-BarCount+1));

AddColumn(bars_in_state ,"Bars", 1, colorWhite, Impulse_col);
//AddTextColumn(Weekly_Trend, "W Trend", 1, colorWhite, Weekly_Col);
//AddTextColumn(Monthly_Trend, "M Trend", 1, colorWhite, Monthly_Col);

//Filter = 1;

_SECTION_END();
//Settings for exploration

H1 = SelectedValue( TimeFrameGetPrice( "H", inDaily, -1 ) );
L1 = SelectedValue( TimeFrameGetPrice( "L", inDaily, -1 ) );
C1 = SelectedValue( TimeFrameGetPrice( "C", inDaily, -1 ) );
H2 = SelectedValue( TimeFrameGetPrice( "H", inDaily, 0 ) );
L2 = SelectedValue( TimeFrameGetPrice( "L", inDaily, 0 ) );
O1 = SelectedValue( TimeFrameGetPrice( "open", inDaily, 0 ) );
F4 = 0;
D1 = ( H1 - L1 );
D2 = ( H2 - L2 );
F1 = D1 * 0.433;
F2 = D1 * 0.766;
F3 = D1 * 1.35;
if ( D2 <= F1 )
    F4 = F1;
else
    if ( D2 <= F2  )
        F4 = F2;
    else
        F4 = F3;

S_P = ( O1 - F4 );

B_P = ( O1 + F4 );

BP = ( L2 + F4 );

BPTGT = ( BP + ( BP * .0065 ) );//.0015 brokerage

BPSTPLS = ( BP - ( BP * .0085 ) );

SP = ( H2 - F4 );

SPTGT = ( SP - ( SP * .0065 ) );

SPSTPLS = ( SP + ( SP * .0085 ) );


p = ( H1 + L1 + C1 ) / 3;

s1 = ( H1 );

r1 = ( L1 );

r2 = SelectedValue( L2 );

s2 = SelectedValue( H2 );

//CONDITION

if (ParamToggle("Tooltip shows", "All Values|Only Prices"))
{
  ToolTip = StrFormat("Open: %g\nHigh:  %g\nLow:   %g\nClose:  %g (%.1f%%) \nVolume: " + NumToStr(V, 1), O, H, L, C, SelectedValue(ROC(C, 1)));
}

//space = Param("Space on Chart", 20,  - 15, 50, 1);
//GraphXSpace = space;
//SetChartBkColor(ParamColor("Background Color", colorBlack));

// ================= Rasheed's original code (with Lookback and Shift default set to his specs) =================

H0 = H;
L0 = L;
C0 = C;
O0 = O;

Lookback = Param("LookBack", 10, 10, 50, 1); // Default for interday commodity currency trading
shift = Param("Shift", 5, 1, 50, 1); // ?
x0 = LastValue(Cum(1));
x1 = x0 - shift;
H = Ref(H,  - shift + 1);
L = Ref(L,  - shift + 1);
H1 = LastValue(Ref(HHV(H, Lookback),  - 1));
L1 = LastValue(Ref(LLV(L, Lookback),  - 1));

Plot(H1, "H1", colorYellow);
Plot(L1, "L1", colorYellow);

H = H0;
L = L0;
C = C0;
O = O0;

up = Cross(H, H1)AND Cum(1) > x1;
dn = Cross(L1, L)AND Cum(1) > x1;

//Plot(C, "Close", IIf(Cum(1) > x1 - Lookback AND Cum(1) <= x1, colorBlue, IIf(Up, colorBrightGreen, IIf(Dn, colorRed, IIf(C > O, colorGreen, colorRed)))), 64);
//PlotShapes(shapeDownArrow *(Cum(1) == x1 + 1), colorBlue);

// ======================= Exploration and Signal Code =================
TRIGGER = ParamToggle("Trigger ", "CLOSE|HIGH OR LOW");


XH1 = Cross(C, H1);
XL1 = Cross(L1, C);
XH2 = Cross(H, H1);
XL2 = Cross(L1, L);

if (TRIGGER == 0)
{
  //Buy = XH1;
  //Sell = XL1;
}

else
{
  //Buy = XH2;
  //Sell = XL2;
}


TradeDisplay = ParamToggle("Remove Extra Trades?", "No|Yes");

if(TradeDisplay != 0){
	//Buy = ExRem(Buy, Sell);
  	//Sell = ExRem(Sell, Buy); // THIS WILL REMOVE EXESS SIGNALS ON A CHART OR IN AN EXPLORATION 
}

Filter = Buy OR Sell;
Action = WriteIf(Buy, "BUY", WriteIf(Sell, "SELL", "   "));

//AddTextColumn(IndustryID(1), "Industry Sector  ", 30.0, colorBlue, colorYellow);
AddColumn(C, "Last ", 2.2, colorWhite, colorBlue);
AddTextColumn(Action, "Action", 8.0, IIf(XH1, colorDarkGreen, colorDarkRed), colorWhite);
AddColumn(IIf(XH1, H1, L1), "BREAKOUT LEVEL", 3.2, colorYellow, IIf(XH1, colorDarkGreen, colorDarkRed));

// -----------------------------------------------------------------------------------  Arrow signals --- FOR TRADES  ----------------------------------------------------------
//PlotShapes(Buy *shapeUpArrow, colorBrightGreen, 0, L /* ENTRY_TRAILARRAY */,  - 30);
//PlotShapes(Sell *shapeDownArrow, colorLightYellow, 0, H,  - 30);
_SECTION_END();


_SECTION_BEGIN("Volume At Price");
PlotVAPOverlay(Param("Lines", 1000, 100, 1000, 10), Param("Width", 15, 1, 100, 1), ParamColor("Color", colorBlue), ParamToggle("Side", "Left|Right", 1) | 4 *ParamToggle("Z-order", "On top|Behind", 1));

_SECTION_END();
//Filter =  Buy OR Sell;

//AddColumn( IIf( Buy, 66, 1 ), "Buy", formatChar, 1, bkcolor = IIf( Buy, 43, 33 ) );

//AddColumn( IIf( Sell, 83, 1 ), "Sell", formatChar, 1, bkcolor = IIf( Sell, 25, 32 ) );



//AddColumn( C, "CMP", 1.2, colorDefault, colorLightBlue );

//AddColumn( BP, "SELL PRICE", 1.2, colorDefault, colorGreen );

//AddColumn( BPTGT, "TGT PRICE", 1.2, colorDefault, colorBrown );

//AddColumn( BPSTPLS, "STPLS BUY", 1.2, colorDefault, colorRed );

AddColumn( p, "PIVOT", 1.2, colorDefault, colorYellow );

//AddColumn( SPSTPLS, "STPLS SELL", 1.2, colorDefault, colorRed );

//AddColumn( SP, "SELL PRICE", 1.2, colorDefault, colorGreen );

//AddColumn( SPTGT, "TGT PRICE", 1.2, colorDefault, colorBrown );





//Settings for exploration

Filter=Buy OR Short;
AddColumn( IIf( Buy, 66 , 83 ), "Signal", formatChar, colorDefault, IIf( Buy , colorGreen, colorRed ) );
AddColumn(Close,"Entry Price",1.4, colorDefault, IIf( Buy , colorGreen, colorRed ));
AddColumn(dtsl,"Stop Loss",1.4, colorDefault, IIf( Buy , colorGreen, colorRed ));
AddColumn(tar1,"Target 1",1.4, colorDefault, IIf( Buy , colorGreen, colorRed ));
AddColumn(tar2,"Target 2",1.4, colorDefault, IIf( Buy , colorGreen, colorRed ));
AddColumn(tar3,"Target 3",1.4, colorDefault, IIf( Buy , colorGreen, colorRed ));

AddColumn(ROC(V,1),"RVol ",1.2, IIf(ROC(V,1) > 0, colorGreen, colorRed));
AddColumn(Volume,"Volume",1.0, colorDefault, IIf ((Volume > 1.25 * EMA( Volume, 34 )),colorBlue,colorYellow));
AddColumn( H1, "PRE-HIGH" );

AddColumn( L1, "PRE-LOW" );

AddColumn( D1, "PRE-DIFF" );

AddColumn( F1, "0.433" );

AddColumn( F2, "0.766" );

AddColumn( F3, "1.35" );

AddColumn( H2, "D-HIGH" );

AddColumn( L2, "D-LOW" );

AddColumn( D2, "D-DIFF" );

AddColumn( F4, "SELECT FACT" );

AlertIf( Buy , "SOUND C:\\Windows\\Media\\chimes.wav", "Audio alert", 2 ); 
AlertIf( Sell , "SOUND C:\\Windows\\Media\\alert.wav", "Audio alert", 2 );
}

Short=Sell;
Cover=Buy;
Long=Flip(Buy,Sell);
Shrt=Flip(Short,Cover);
SellPrice=ValueWhen(Short,C,1);
BuyPrice=ValueWhen(Buy,C,1);
Edc=(
WriteIf (Buy AND Ref(shrt,-1), " BUY @ "+C+"  ","")+ 
WriteIf (Sell AND Ref(Long,-1), " SEll @ "+C+"  ","")+
WriteIf(Sell , "Last Trade Profit Rs."+(C-BuyPrice)+"","")+
WriteIf(Buy  , "Last Trade Profit Rs."+(SellPrice-C)+"",""));

//============== TITLE ==============



_SECTION_BEGIN("Tops and bottom");

pd = Param("Periods",13,5,144,1); 
pds = 2*pd-1;//     (Adjustment for Wilders MA) 
aa = Close-Ref(Close,-1); 
uu = EMA(Max(0,aa),pds); 
dd=  EMA((Max(0,0-aa)),pds); 

rf = IIf(C>2,1000,10000); 

c1 = Param("Upper Level",70,50,90,1); 
qq1 =100/(100-c1)-1; 
ff1 = qq1*dd-uu; 
ff2 = ff1/qq1; 
f1 = Max(ff1,ff2); 
UL = Close + f1*(pds-1)/2; 
UL = IIf(UL>C,floor(UL*rf),ceil(UL*rf))/rf; 

c2 = Param("Equilibrium",50,50,50,0);  
qq2 =100/(100-c2)-1;// [=1] 
ff = dd-uu; 
MM = Close + ff*(pds-1)/2; 
MM = IIf(MM>C,floor(MM*rf),ceil(MM*rf))/rf; 

c3 = Param("Lower Level",30,10,50,1); 
qq3 =100/(100-c3)-1; 
ff1 = qq3*dd-uu; 
ff2 = ff1/qq3; 
f3 = Min(ff1,ff2); 
LL = Close + f3*(pds-1)/2; 
LL = IIf(LL>C,floor(LL*rf),ceil(LL*rf))/rf; 

band = Param("band width",4,0,15,0.25);
mmu = MM+band;
mmd = MM-band;

_SECTION_BEGIN("Pivot calc");

TimeFrameSet( in15Minute*2 ); 
DH=Ref(H,-1); 
DL=Ref(L,-1);
DC=Ref(C,-1);


pd = ( DH+ DL + DC )/3;
sd1 = (2*pd)-DH;
sd2 = pd -(DH - DL);
sd3 = Sd1 - (DH-DL); 
rd1 = (2*pd)-DL;
rd2 = pd +(DH -DL);
rd3 = rd1 +(DH-DL);

if(ChangeTitle==1)
{

_SECTION_BEGIN("Title");
no=Param( "Swing", 6, 1, 55 );
res=HHV(H,no);
sup=LLV(L,no);
avd=IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0));
avn=ValueWhen(avd!=0,avd,1);
tsl=IIf(avn==1,sup,res);
dec = (Param("Decimals",2,0,7,1)/10)+1;
if( Status("action") == actionIndicator ) 
(
Title = EncodeColor(55)+  Title = Name() + "     " + EncodeColor(32) + Date() +
"      " + EncodeColor(5) + "{{INTERVAL}}  " +
	EncodeColor(55)+ "     Open = "+ EncodeColor(52)+ WriteVal(O,dec) + 
	EncodeColor(55)+ "     High = "+ EncodeColor(5) + WriteVal(H,dec) +
	EncodeColor(55)+ "      Low = "+ EncodeColor(32)+ WriteVal(L,dec) + 
	EncodeColor(55)+ "    Close = "+ EncodeColor(52)+ WriteVal(C,dec)+
	EncodeColor(55)+ "    Volume = "+ EncodeColor(52)+ WriteVal (V ,1.25)




+"\n"+EncodeColor(colorBrightGreen)+

WriteIf (Buy , "Signal: Go Long - Entry Price: "+WriteVal(C)+" - Traget: "+WriteVal((BuyPrice-tsl)+BuyPrice)

+" - StopLoss:"+WriteVal(tsl)+"  "

,"")+

"\n"+EncodeColor(colorRed)+
WriteIf (Sell , "Signal: Go Short - Entry Price: "+WriteVal(C)+" - Target: "+WriteVal((tsl-SellPrice)-SellPrice)+" - StopLoss:"+WriteVal(tsl)+" ","")+
EncodeColor(colorTurquoise)+
WriteIf(Long AND NOT Buy, "Trade: Long - Entry Price: "+WriteVal((BuyPrice))+" - Profit: "+WriteVal((C-BuyPrice))+" "+EncodeColor(colorLime)+"Let your profit runs!","")+
EncodeColor(colorLightOrange)+
WriteIf(shrt AND NOT Sell, "Trade: Short - Entry Price: "+WriteVal((SellPrice))+" - Profit: "+WriteVal((C-SellPrice))+"  - "+EncodeColor(colorLime)+"Let your profit runs!","")+

EncodeColor(colorBrightGreen)+   "


\n R3 : "+ 
EncodeColor(colorWhite)+RD3+ 
EncodeColor(colorBrightGreen)+   "\n R2 : "+ 
EncodeColor(colorWhite)+RD2+ 
EncodeColor(colorBrightGreen)+   "\n R1 : " +
EncodeColor(colorWhite)+RD1 + 
EncodeColor(colorBrightGreen)+  "     UP TGT   : "+ 
EncodeColor(colorWhite)+UL+ 
EncodeColor(colorBlue)+   "\n Pivot : "+
EncodeColor(colorWhite)+pd+ 
EncodeColor(colorBlue)+   "    MIDPOINT : "+ 
EncodeColor(colorWhite)+MM+ 
EncodeColor(colorRed)+   "\n S1 : "+ 
EncodeColor(colorWhite)+SD1   + 
EncodeColor(colorRed)+    "     BOT TGT  : "+ 
EncodeColor(colorWhite)+LL+ 
EncodeColor(colorRed)+   "\n S2 : "+ 
EncodeColor(colorWhite)+SD2+ 
EncodeColor(colorRed)+   "\n S3 : "+ 
EncodeColor(colorWhite)+SD3
);
_SECTION_END();
}

if(Buyselllable==1)
{
dist = 1.5*ATR(10); 
dista = 0.5*ATR(10); 
for( i = 0; i < BarCount; i++ ) 
{ 

if( Buy[i] ) PlotText( "Buy  \n"+C[i] , i, L[ i ]-dist[i], colorBlack,colorGreen ); 
if( Sell[i] ) PlotText( "Sell \n"+C[i], i, H[ i ]+dist[i], colorBlack, colorRed ); 
//if( Buy[i] ) PlotText( "B" , i, L[ i ]-dist[i], colorBlack,colorGreen ); 
//if( Sell[i] ) PlotText( "S" , i, H[ i ]+dist[i], colorBlack, colorRed ); 
if( Sell[i] ) PlotText( "Top" , i, H[ i ]+dista[i], colorGreen, colorBlack ); 
if( Buy[i] ) PlotText( "Bottom", i, L[ i ]-dista[i], colorRed, colorBlack ); 
 

}  }