// Downloaded From https://www.WiseStockTrader.com









_SECTION_BEGIN("MultipleRibbon");
// You plot a Ribbon by calling the function as follows: MultiRibbon("Color", "Ribbon Number", "Name To Display");
// The "Ribbon Number" is simply the order of the ribbon, starting with 1 as the bottom Ribbon. You can add as many 
// ribbons as you want, until you run out of chart space. Just keep track of the 'Serial Number' (Ribbon Number). :-)


RibbonThickness	= Param("Ribbon Thickness", 8, 1, 15, 0.1);
Font				= ParamList("Font:","Arial|Calibri|Futura|Tahoma|Times New Roman");
"";
function GfxConvertBarToPixelX(Bar) 
{ 
 lvb = Status("lastvisiblebar"); fvb = Status("firstvisiblebar"); 
 pxchartleft = Status("pxchartleft"); pxchartwidth = Status("pxchartwidth"); 
 return pxchartleft + Bar  * pxchartwidth / (Lvb - fvb + 1); 
} 

procedure MultiRibbon(RibbonColor, Position, Label)
{
 LineColor	= colorLightGrey;
 Position	= RibbonThickness * Position;
 x2 = Status("pxchartright");
 y2 = Status("pxchartbottom");

 RibbonColor = IIf(GfxConvertBarToPixelX(BarIndex()-Status("firstvisiblebarindex")) > y2/1.5 * (RibbonThickness/100) * 18 ,
               RibbonColor, colorYellow);

 Plot(0, "", LineColor, styleOwnScale | styleNoLabel, 0, 100);
 Plot(Position, "", LineColor, styleOwnScale | styleNoLabel, 0, 100);
 Plot(Position, "", RibbonColor, styleArea | styleOwnScale | styleNoLabel, 0, 100);

 GfxSetTextColor(colorBlack); 
 GfxSelectFont(Font, y2/1.5 * (RibbonThickness/100), 400); 
 GfxDrawText(Label, 8, y2 * 1.001 -(y2 * Position/100) , y2/1.5 * (RibbonThickness/100) * 17, y2, 2 + 32 + 256);
 
}

//=================================================================================================================

//TRENDADVISOR

pointer[0] = 0;

/* Phase filter */

Cond1 = Close > MA(Close, 50)AND NOT(Close > MA(Close, 200))AND NOT(MA(Close, 50) > MA(Close, 200));
Cond2 = Close > MA(Close, 50)AND Close > MA(Close, 200)AND NOT(MA(Close, 50) > MA(Close, 200));
Cond3 = Close > MA(Close, 50)AND Close > MA(Close, 200)AND MA(Close, 50) > MA(Close, 200);
Cond4 = NOT(Close > MA(Close, 50))AND Close > MA(Close, 200)AND MA(Close, 50) > MA(Close, 200);
Cond5 = NOT(Close > MA(Close, 50))AND NOT(Close > MA(Close, 200))AND MA(Close, 50) > MA(Close, 200);
Cond6 = NOT(Close > MA(Close, 50))AND NOT(Close > MA(Close, 200))AND NOT(MA(Close, 50) > MA(Close, 200));

for (i = 1; i < BarCount; i++)
{

  if (Cond1[i])
    pointer[i] = 1;
  if (Cond2[i])
    pointer[i] = 2;
  if (Cond3[i])
    pointer[i] = 3;
  if (Cond4[i])
    pointer[i] = 4;
  if (Cond5[i])
    pointer[i] = 5;
  if (Cond6[i])
    pointer[i] = 6;

}

/* Plot Graphic */
//GraphXSpace= 15 ;
dynamic_color = IIf(pointer < 4, colorGreen, colorRed);
//Plot(pointer, "TrendAdv2", dynamic_color, styleHistogram | styleThick, Null, Null, 0);
//SetChartBkGradientFill(ParamColor("BgTop", colorWhite), ParamColor("BgBottom", colorLightYellow));
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

// haDelta-CV-Valcu-Original
//HEIKIN-ASHI
//SetChartOptions(0,chartShowArrows | chartShowDates);
HaClose = (O + H + L + C)/4; 
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 ); 
HaHigh = Max( H, Max( HaClose, HaOpen ) ); 
HaLow = Min( L, Min( HaClose, HaOpen ) ); 
xDiff = (HaClose - HaLow);
//barcolor = IIf(HaClose >= HaOpen,colorGreen,colorRed);
//barcolor= IIf(HaClose>=HaOpen,colorGreen,colorRed) ;
//SetBarFillColor(IIf(HaClose>=HaOpen,colorLime,colorRed));
//PlotOHLC( HaOpen, HaHigh, HaLow, HaClose, "", barcolor, styleCandle );
HaDelta= (HaClose-HaOpen) ;
MA1= MA(Hadelta,3) ;
//Plot(Hadelta,"haDelta",colorBlack) ;
//Plot(0,"",colorBrown) ;
//Plot( MA1, "MA3", colorRed );
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

//BB HISTOGRAM

_SECTION_BEGIN("BB Histogram");
bbhist=((C+2*StDev(C,20) - MA(C,18)) / ((4*StDev(C,18)))*4) - 2;
//Plot(bbhist, "BBands Histogram", IIf(bbhist > 0, colorLime, colorRed),styleHistogram + styleThick);
//Plot(0,"",colorBrown) ;
_SECTION_END();
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

//VOLATILITY RATIO
//n = Param("movn",10,1,50,1);
nTSM = Param("TSMper",15,5,34,1,0) ;
nMATSM = Param("MATSMper",3,3,17,1,0) ;
ratio = C / Ref(C,-1);
natlog = log(ratio);
TSMVolatilityRatio = MA(natlog, nTSM);
MATSM = MA(TSMVolatilityRatio,nMATSM) ;
//Plot(TSMVolatilityRatio, "VolatilityRatio", colorRed,styleLine);
//Plot(0,"",colorBrown) ;
//Plot(MATSM,"MATSM",colorBlue) ;
TSMup= TSMVolatilityRatio>0 AND TSMVolatilityRatio>MA(TSMVolatilityRatio,nMATSM) ;
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

//============================================ MAhaDelta ======================================
r1= IIf(MA(Hadelta,3)>0 ,colorGreen,colorRed);

//============================================ CupSAR ======================================
r2 = IIf (C>SAR(0.02,0.2),colorGreen,colorRed); 

//============================================ BBhistogram =======================
//PL = (H + C+ L)/3;
r3 = IIf (bbhist>0,colorGreen,colorRed); 

//---------------------------------------------------------------------------

//============================================ Volatility =======================
//PL = (H + C+ L)/3;
r4 = IIf (TSMVolatilityRatio>0,colorGreen,colorRed); 

//---------------------------------------------------------------------------

//========================================== MACD ===========================
RSI21 = EMA(RSI(21),5);

//r2 = IIf (RSI21 >BBandTop(RSI21,5,0.5),colorGreen,IIf (RSI21 <BBandBot(RSI21,5,0.5),colorRed,colorYellow)); 
r5 = IIf (MACD()>Signal(),colorGreen,colorRed); 
//---------------------------------------------------------------------------

//======================================== Stoch ==============================
//r4 = IIf(EMA(PDI(7),3) > EMA(MDI(7),3),colorGreen,colorRed);
//r4 = IIf(ADX()>Ref(ADX(),-1),colorGreen,colorRed); 
r6 = IIf(StochK()>StochD() AND StochK()>20 OR StochK()>80,colorGreen,colorRed); 


//======================================== PDIupMDI ==============================

//r3 = IIf (MACD(3,34) >BBandTop(MACD(3,34),5,0.5),colorGreen,IIf (MACD(3,34) <BBandBot(MACD(3,34),5,0.5),colorRed,colorYellow));
r7 = IIf (PDI()>MDI(),colorGreen,colorRed); 
//---------------------------------------------------------------------------

//======================================== Top2Up ==============================
//r4 = IIf(EMA(PDI(7),3) > EMA(MDI(7),3),colorGreen,colorRed);
r8 = IIf(BBandTop(C,20,2)>=Ref(BBandTop(C,20,2),-1),colorGreen,colorRed);

//======================================== TrendAdviser ==============================
//r4 = IIf(EMA(PDI(7),3) > EMA(MDI(7),3),colorGreen,colorRed);
//r6 = IIf(MA(C,50)>=Ref(MA(C,50),-1),colorGreen,colorRed);
r9 = IIf(pointer < 4,colorGreen,colorRed); 

//======================================== MFI ==============================
//r4 = IIf(EMA(PDI(7),3) > EMA(MDI(7),3),colorGreen,colorRed);
r10 = IIf(MFI()>EMA(MFI(),5) OR MFI()>50,colorBrown,colorRose); 

//========================================Limita ==============================
//r4 = IIf(EMA(PDI(7),3) > EMA(MDI(7),3),colorGreen,colorRed);
r11 = IIf((ADX()<50 AND MFI()>30),colorGreen,colorRed); 

/* 
EMA21 = IIf (MACD(34,55) >Ref(MACD(34,55),-1),colorGreen,colorRed); 
EMA34 = IIf (MACD(55,89) >Ref(MACD(55,89),-1),colorGreen,colorRed); 
EMA55 = IIf (MACD(3,34) >Ref(MACD(3,34),-1),colorGreen,colorRed); 
EMA21 = IIf(PDI(5) > MDI(5),colorGreen,colorRed); 
EMA34 = IIf(PDI(9) > MDI(9),colorGreen,colorRed); 

//========================================ADX trend ==============================

r6 = IIf(ADX(7) > Ref(ADX(7),-1) AND ADX(7) > 20 AND (ADX(7) > PDI(7) OR ADX(7) > MDI(7)),colorBlue,
     IIf(ADX(7) > Ref(ADX(7),-1) , colorAqua,colorBlack));
//---------------------------------------------------------------------------
*/
MultiRibbon(r11, 1, "Limita");
MultiRibbon(r10, 2, "MFI");
MultiRibbon(r9, 3, "TrendAdviser");
MultiRibbon(r8, 4, "Top2Up"); 
MultiRibbon(r7, 5, "PDIupMDI"); 
MultiRibbon(r6, 6, "Stoch"); 
MultiRibbon(r5, 7, "MACD"); 
MultiRibbon(r4, 8, "Volatility"); 
MultiRibbon(r3, 9, "BBhistogram"); 
MultiRibbon(r2, 10, "CupSAR");
MultiRibbon(r1, 11, "MAhaDelta"); 

/*
//==================interpretation============================

WriteIf(EMA( Close,13)>EMA( Close,39),"EMA says : UP TREND \n EMA -50 SL of "+ WriteVal(EMA(Close,50)),
       "EMA says : DOWN TREND \n  EMA "+ WriteVal(EMA(Close,50)));
WriteIf (Trix( 9 ) > Ref( Trix( 9 ) , -1 ),"\n TRIX =" + WriteVal(Trix( 9 ))+ " : UP","\n TRIX =" + WriteVal(Trix( 9 ))+"   : DOWN");
WriteIf (MACD( 12, 26 ) > Ref( MACD( 12, 26 ) , -1 ), "MACD ="+ WriteVal(MACD( 12, 26 ))+ " :
        UP","MACD ="+ WriteVal(MACD( 12, 26 ))+ " : DOWN");
WriteIf(ADX( 9 ) > Ref( ADX( 9 ) , -1 ),"ADX ="+WriteVal (ADX(9))+"   :TREND-ING","ADX ="+WriteVal (ADX(9))+"   : ----");
WriteIf (RSI( 7 ) > Ref( RSI(7) , -1 ), "RSI ="+ WriteVal(RSI( 7))+ " : UP","RSI ="+ WriteVal(RSI( 7))+ " : DOWN");
WriteIf (CCI( 10 ) > Ref( CCI(10) , -1 ), "CCI ="+ WriteVal(CCI( 10))+ " : UP","CCI ="+ WriteVal(CCI( 10))+ " : DOWN");
WriteIf(StochK( 14)< Ref (StochK( 14),1) ,"stochastic ="+WriteVal (StochK(14))+" : UP " ,"stochastic =
        "+WriteVal (StochK( 14))+" : DOWN ");
"";
WriteIf (Close > SAR( 0.02, 0.2 ),"SAR says : go LONG at "+Close+" \n with a Stop-Loss = " + WriteVal(  SAR( 0.02, 0.2 )),
        "SAR says : go Short at "+Close+"\n with a Stop-Loss = " + WriteVal(  SAR( 0.02, 0.2 )));
*/
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx