// Downloaded From https://www.WiseStockTrader.com
//============== PRICE ==============
_SECTION_BEGIN("Price");
	n = 15;
	a = C > ( MA( H, n ) + MA( L, n ) ) / 2;// then Buy next bar at market;
	b = C < ( MA( H, n ) + MA( L, n ) ) / 2;// then Sell Short next bar at market;
	state = IIf( BarsSince( a ) < BarsSince( b ), 1, 0 );
	Longs = state == 1;
	shorts = state == 0;
	Colorbar = IIf( Longs, colorseaGreen, IIf( Shorts, colorRed, colorGrey40 ) );
	Plot( C, "Close", Colorbar, styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

//============== VOLUME ==============
_SECTION_BEGIN("VOLUME");
	Volume_to = Sum(Volume, 31);
	Volume_to = Volume_to - Volume;
	Volume30 = Volume_to / 30;
	percentage = ( abs( Volume - Volume30 ) ) / Volume30;
	percentage = percentage * 100;
_SECTION_END();

//============== MACD ==============
_SECTION_BEGIN("MACD");
	r1 = Param( "Fast avg", 12, 2, 200, 1 );
	r2 = Param( "Slow avg", 26, 2, 200, 1 );
	r3 = Param( "Signal avg", 9, 2, 200, 1 );
	ml = MACD(r1, r2);
	sl = Signal(r1,r2,r3);
	Hitg = ml-sl;
	MACUP = Hitg > Ref(Hitg,-1);
	MACDN = Hitg < Ref(Hitg,-1);

			
	Period = Optimize("Period", 17, 2, 200, 1);
	EMACALC = EMA(C, Period);
	COND1 = Close > EMACALC AND MACD() > Signal();
	COND2 = Close > EMACALC AND MACD() < Signal() OR Close < EMACALC AND MACD() > Signal();
	COND3 = Close < EMACALC AND MACD() < Signal();
	 
	UPBAR = COND1;
	DOWNBAR = COND2 OR COND3;
_SECTION_END();

//============== VOLUME ==============
_SECTION_BEGIN("VOLUME");
	Volume_to = Sum(Volume, 10);
	Volume_to = Volume_to - Volume;
	Volume10 = Volume_to / 10;
	percentage = ( abs( Volume - Volume10 ) ) / Volume10;
	percentage = percentage * 100;
_SECTION_END();

//============== RSI ==============
_SECTION_BEGIN("RSI");
	periods = Param( "Periods", 14, 1, 200, 1 );
	z = RSI( periods);
	
	Lookback = Param("LookBack", 10, 10, 50, 1); // Default for interday commodity currency trading
	Lookback = 15;
	H11 = LastValue(Ref(HHV(RSI(14), Lookback),  - 1));
	L11 = LastValue(Ref(LLV(RSI(14), Lookback),  - 1));
_SECTION_END();

_SECTION_BEGIN("MCDX - Multi Color Dragon Extended");

	GraphXSpace    = Param("GraphXSpace - Zoom Chart",10,5,300,5);   //Chon che do Zoom

	Bankerbase     = Param("Banker Base", 50, 10, 100, 1);
	Bankerperiod   = Param("Banker Period", 50, 10, 100, 1);
	Hotbase        = Param("Hot Base", 30, 10, 100, 1);
	Hotperiod      = Param("Hot Period", 40, 10, 100, 1);
	Bankersen      = Param("Banker Sensitivity", 1.5, 0.1, 10, 0.1);
	Hotsen         = Param("Hot Sensitivity", 0.7, 0.1, 10, 0.1);
	MAbankerPeriod = Param("MA Banker Period ", 10,  1, 260, 1); 

	Banker_rsi     = Bankersen * (RSI(Bankerperiod) - Bankerbase);
	Hot_rsi        = Hotsen * (RSI(Hotperiod) - Hotbase);
	Banker         = IIf(Banker_rsi > 20, 20, IIf(Banker_rsi < 0, 0, Banker_rsi));
	Hot            = IIf(Hot_rsi > 20, 20, IIf(Hot_rsi < 0, 0, Hot_rsi));

	Retailcolor    = ParamColor("Retail Color", colorRed);
	MAbanker       = MA(Banker,MAbankerPeriod); 
	Bankercolor    = IIf(Banker>=MAbanker OR Banker>=20, ParamColor("Banker Color", colorGreen),IIf(Banker<MAbanker,colorSeaGreen,Null));

_SECTION_END();

//============== TITLE ==============
_SECTION_BEGIN("Price");
	SetChartOptions(0,chartShowArrows|chartShowDates);
	dec = (Param("Decimals",2,0,7,1)/10)+1;
			Title = EncodeColor(55)	+  Title = 
			EncodeColor(41)+ Name() + " - Trade + - " + 
			EncodeColor(41)+ FullName() + "     " + 
			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)+ "  -   % Change = "		+ EncodeColor(52)+ WriteVal((C-Ref(C,-1))/Ref(C,-1)*100,dec)	+
			EncodeColor(55)+ "  -   Volume = "	+ EncodeColor(52)+ WriteVal(V,1) +
			EncodeColor(55)+ "  -   Volume 10 = "	+ EncodeColor(52)+ WriteVal(Volume10,1);
_SECTION_END();

_SECTION_BEGIN("TOP BOTTOM");
	sen = Param("% change",5,0.1,25,0.1);
	High = Peak( H, Sen ) ; 
	Low = Trough( L, Sen ) ;
	Mid = (H+L)/2; 
	Top = High;    
	Bottom = Low;   
	//Plot(Top,"TOP",colorGreen,styleDots|styleNoLine|styleNoRescale);
	//Plot(Bottom,"BOTTOM",colorRed,styleDots|styleNoLine|styleNoRescale); 
_SECTION_END();

//============== Fib Retracements ==============
//_SECTION_BEGIN("Fib Retracements");
//	fibs = ParamToggle("Plot Fibs","Off|On",1);
//	pctH = Param ("Pivot Hi %", 0.325,0.001,2.0,0.002);
//	HiLB = Param ("Hi LookBack",1,1,BarCount-1,1);
//	pctL = Param ("Pivot Lo %", 0.325,0.001,2.0,0.002);
//	LoLB = Param ("Lo LookBack",1,1,BarCount-1,1);
//	Back = Param ("Extend Left = 2",1,1,500,1);
//	Fwd  = Param("Plot Forward", 0, 0, 500, 1);
//	text = ParamToggle("Plot Text","Off|On",1);
//	hts  = Param ("Text Shift", -33.5,-50,50,0.10);
//	style =ParamStyle("Line Style",styleLine,styleNoLabel);
//	x = BarIndex();
//	pRp  = PeakBars( H, pctH, 1) == 0;
//	yRp0 = SelectedValue(ValueWhen( pRp, H, HiLB));
//	xRp0 = SelectedValue(ValueWhen( pRp, x, HiLB));
//	pSp  = TroughBars( L, pctL, 1) == 0;
//	ySp0 = SelectedValue(ValueWhen( pSp, L, LoLB));
//	xSp0 = SelectedValue(ValueWhen( pSp, x, LoLB));
//	Delta = yRp0 - ySp0;

//	function fib(ret)
//	{
//		retval = (Delta * ret);
//		Fibval = IIf(ret < 1.0 
//		AND xSp0 < xRp0, yRp0 - retval, IIf(ret < 1.0 
//		AND xSp0 > xRp0, ySp0 + retval,IIf(ret > 1.0 
//		AND xSp0 < xRp0, yRp0 - retval, IIf(ret > 1.0 
//		AND xSp0 > xRp0, ySp0 + retval, Null)))); 
//		return FibVal;
//		}

//	x0 = Min(xSp0,xRp0)-Back;
//	x1 = (BarCount -1);
	////////////////////////////////////////////////////////////////
//	r236 = fib(0.236);	r236I = LastValue (r236,1);
//	r382 = fib(0.382);	r382I = LastValue (r382,1);
//	r050 = fib(0.50);		r050I = LastValue (r050,1);
//	r618 = fib(0.618);	r618I = LastValue (r618,1);
//	r786 = fib(0.786);	r786I = LastValue (r786,1);
//	e127 = fib(1.27);		e127I = LastValue (e127,1);
//	e162 = fib(1.62);		e162I = LastValue (e162,1);
//	e200 = fib(2.00);		e200I = LastValue (e200,1);
//	e262 = fib(2.62);		e262I = LastValue (e262,1);
//	e424 = fib(4.24);		e424I = LastValue (e424,1);
	////////////////////////////////////////////////////////////////
//	p00 = IIf(xSp0 > xRp0,ySp0,yRp0); 	p00I = LastValue (p00,1);
//	p100 = IIf(xSp0 < xRp0,ySp0,yRp0); 	p100I = LastValue (p100,1);
//	color00 =IIf(xSp0 > xRp0,colorLime,colorRed);
//	color100 =IIf(xSp0 < xRp0,colorLime,colorRed);
	////////////////////////////////////////////////////////////////
//	numbars = LastValue(Cum(Status("barvisible")));
//	fraction= IIf(StrRight(Name(),3) == "", 3.2, 3.2);
	////////////////////////////////////////////////////////////////
//	if(fibs==1)
//	{
//		Plot(LineArray(xRp0-Fwd,yRp0,x1,yRp0,Back),"PR",colorGreen,8|styleNoRescale,Null, Null,Fwd);
//		Plot(LineArray(xSp0-Fwd,ySp0,x1,ySp0,Back),"PS",colorRed,8|styleNoRescale,Null, Null,Fwd);
//	}
//_SECTION_END();

_SECTION_BEGIN("Background text");
C11=ParamColor("up panel",colorDarkOliveGreen );
C12=ParamColor("dn panel",colorDarkGrey );
C13=Param("fonts",20,10,30,1 );
C14=Param("left-right",2.1,1.0,5.0,0.1 );
C15=Param("up-down",12,1,20,1 );
Miny = Status("axisminy");
Maxy = Status("axismaxy");
lvb = Status("lastvisiblebar");
fvb = Status("firstvisiblebar");
pxwidth = Status("pxwidth");
pxheight = Status("pxheight");
GfxSetBkMode( 0 ); 
GfxSetOverlayMode(1);
GfxGradientRect(0,0,pxwidth, pxheight, C11, C12 ); 
GfxSelectFont("Tahoma", Status("pxheight")/C13 );
GfxSetTextAlign( 6 );
GfxTextOut( Name(), Status("pxwidth")/C14, Status("pxheight")/C15 );
GfxSelectFont("Tahoma", Status("pxheight")/C13*0.5 );
//GfxTextOut( "Volatility Bands - stocks", Status("pxwidth")/C14, Status("pxheight")/C15*2.5 );
GfxSelectFont("Tahoma", Status("pxheight")/C13*0.5 );
//GfxTextOut( " www.TAtechnics.in", Status("pxwidth")/C14, Status("pxheight")/C15*4 );
_SECTION_END();


SPWidth=param("Swing Point Width",9,7,13,2); //suggest 7,9,13

HV=HighestVisibleValue(H);
LV=LowestVisibleValue(L);
ymin=LV-.05*(hv-lv);
ymax=HV+.05*(hv-lv);
SetChartOptions(1,1,chartGridMiddle,ymin,ymax);

HB=Max(C,O);
LB=Min(C,O);
sp1=sp2=0;

sph = (HB==HHV(HB,SPWidth)) AND (HB==Ref(HHV(HB,SPWidth),SPWidth-1));
spl = (LB==LLV(LB,SPWidth)) AND (LB==Ref(LLV(LB,SPWidth),SPWidth-1));

lasti=0;
	for(i=0;i<=BarCount-1;i++){
		if(sph[i] AND sph[lasti]){
			if(HB[i]>HB[lasti]){
				sph[lasti]=0;
			}else{
				sph[i]=0;
			}	
		}	
		if(spl[i] AND spl[lasti]){
			if(LB[i]<LB[lasti]){
				spl[lasti]=0;
			}else{
				spl[i]=0;
			}	
		}
		if(sph[i] OR spl[i])	
			lasti=i;
	}		

BullBearZone = ( High - Low ) / 3;
bullbar = C > ( High - BullBearZone );
bearbar = C < ( Low + BullBearZone );

_SECTION_BEGIN("RRC");
	ticker= ParamStr("ticker","VNINDEX");
	Value = Param( "Trx Value (in Billion)", 50, 0, 1000, 1 );

	function getrs ( sc, t )
	{
		bc = Foreign(Ticker,"Close");
		sbr = sc / bc;

		rs1 = MA( sbr, 12 );
		rs2 = MA( sbr, 26 );
		rs = 100 * ( ( rs1 - rs2 ) / rs2 + 1 );

		rm1 = MA( rs, 1 );
		rm2 = MA( rs, 9 );
		rm = 100 * ( ( rm1 - rm2 ) / rm2 + 1 );

		return IIf( t, rs , rm ) - 100;
	}

	rs = getrs( C, 1 );
	rm = getrs( C, 0 );

	Lagging = rs < 0 AND rm < 0;
	Improving = rs < 0 AND rm > 0;
	Leading = rs > 0 AND rm > 0;
	Weakening = rs > 0 AND rm < 0;

	pos = WriteIf( Lagging, "3. Lagging",
	               WriteIf( Improving, "4. Improving",
	                        WriteIf( Leading, "1. Leading",
	                                 WriteIf( Weakening, "2. Weakening", "5." ) ) ) );
	                                                            
	poss = IIf( Lagging, 3,
	               IIf( Improving, 4,
	                        IIf( Leading, 1,
	                                 IIf( Weakening, 2, 5 ) ) ) );

	qcolor = IIf( Lagging, colorOrange,
				  IIf( Improving, colorSkyblue,
					   IIf( Leading, colorBrightGreen,
							IIf( Weakening, colorYellow, colorLightGrey ) ) ) );

	VAL = V * C / ( 10 ^ 9 * 0.01);
	Chg = ROC( C, 1 );
_SECTION_END();

Buy = 	(state == 1 AND UPBAR) OR (C>TOP AND Ref(C,-1)<=TOP) AND bearbar //(Ref(state,1) == 1 AND Ref(UPBAR,1) AND (Banker>=MAbanker OR Banker>=20) AND Banker > MA(Banker,10)) OR (C>TOP AND Ref(C,-1)<=TOP)
	;
Sell= 	(state == 0 AND DOWNBAR) AND Ref(state,-3) == 1//Ref(state,1) == 0 AND Ref(DOWNBAR,1)
	;

Sell=ExRem(Ref(Sell,1),Ref(Buy,1)); Buy=ExRem(Ref(Buy,1),Ref(Sell,1));

//Sell=ExRem(Sell,Buy); Buy=ExRem(Buy,Sell);

PlotShapes(IIf(Buy,shapeHollowSmallUpTriangle,shapeNone),colorYellow,0,Graph0Low,-12);
PlotShapes(IIf(Sell,shapeHollowSmallDownTriangle,shapeNone),colorWhite,0,Graph0High,-12);

Filter = pos == "1. Leading" OR pos == "4. Improving";
	
Filter = Filter AND (Buy OR Sell) AND V>1000000 AND V>5;


	
//----------------------------------------------------------------------------------------------
AddColumn( IIf( Buy, 66,1 ), "Buy", formatChar, 1, bkcolor =IIf (Buy,colorGreen, colorRed ));
AddColumn( IIf( Sell, 83,1 ), "Sell", formatChar, 1, bkcolor =IIf (Sell,colorRed, colorGreen ));
AddColumn(C, "Close",1.2,colorYellow,colorCustom16);
AddColumn(Top, "Top",1.2,colorGreen);
AddColumn(Bottom, "Bottom",1.2,colorRed);
AddColumn(IIf((C>TOP AND Ref(C,-1)<=TOP),1,0), "Break",1.2,colorDefault);
AddColumn(Volume,"Volume Today", 1.2,colorYellow,colorCustom16);
AddColumn(Volume10,"Ave 10 days Volume", 1, colorBlue);
AddColumn(Percentage," % Increase", 1.2, colorBlue);
AddColumn(z,"RSI", 1.2,IIF(z >= 50, colorSeaGreen,colorRed));
//----------------------------------------------------------------------------------------------	
AddColumn(Ref(C,1),"Price 1D",1.2);
	_Change1d = IIf(Buy,((Ref(C,1)-Close)/Close)*100,IIf(Sell,((Close-Ref(C,1))/Ref(C,1))*100,((Ref(C,1)-Close)/Close)*100));
AddColumn(_Change1d,"% Price 1D",1.2,IIf(_Change1d >= 0,colorGreen,colorRed));
AddColumn(Ref(C,3),"Price 3D",1.2);
	_Change3d = IIf(Buy,((Ref(C,3)-Close)/Close)*100,IIf(Sell,((Close-Ref(C,3))/Ref(C,3))*100,((Ref(C,1)-Close)/Close)*100));
AddColumn(_Change3d,"% Price 3D",1.2,IIf(_Change3d >= 0,colorGreen,colorRed));
AddColumn(Ref(C,5),"Price 1W",1.2);
	_Change5d = IIf(Buy,((Ref(C,5)-Close)/Close)*100,IIf(Sell,((Close-Ref(C,5))/Ref(C,5))*100,((Ref(C,1)-Close)/Close)*100));
AddColumn(_Change5d,"% Price 1W",1.2,IIf(_Change5d >= 0,colorGreen,colorRed));
AddColumn(Ref(C,20),"Price 1M",1.2);
	_Change20d = IIf(Buy,((Ref(C,20)-Close)/Close)*100,IIf(Sell,((Close-Ref(C,20))/Ref(C,20))*100,((Ref(C,1)-Close)/Close)*100));
AddColumn(_Change20d,"% Price 1M",1.2,IIf(_Change20d >= 0,colorGreen,colorRed));
//----------------------------------------------------------------------------------------------
SetSortColumns(2,4,5);