// 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); } //================================================================================================================= //============================================ ElderIndex ====================================== bull=High - EMA(Close,9); bear=Low - EMA(Close,9); bb=bull+bear; r1Up= Cross(bb,EMA(bb,9)) OR Cross(EMA(bb,9),0) ; r1Down=Cross(EMA(bb,9),bb) OR Cross(0,EMA(bb,9)) ; //r1Up=Sum(r1Up,3)>0; //r1Down=Sum(r1Down,3)>0; r1= IIf( r1Up ,colorGreen,IIf(r1Down,colorRed,colorGrey40)); //////////////////FI//////////////// FI = (Close - Ref(Close, -1)) * V; r7Up= Cross(fi,EMA(fi,9)) OR Cross(EMA(fi,9),0) ; r7Down=Cross(EMA(fi,9),fi) OR Cross(0,EMA(fi,9)) ; //r7Up=Sum(r7Up,3)>0; //r7Down=Sum(r7Down,3)>0; r7=IIf( r7Up ,colorGreen,IIf(r7Down,colorRed,colorGrey40)); /////////////////////////////////// //============================================ Guppy ====================================== Trigger = Param("Trigger",21,1,55,1); Short1 = EMA (C,3)+ EMA((C-EMA(Close,3)),3)+ EMA (C,5)+ EMA((C-EMA(Close,5)),5)+ EMA (C,8)+ EMA((C-EMA(Close,8)),8)+ EMA (C,10)+ EMA((C-EMA(Close,10)),10)+ EMA (C,12)+ EMA((C-EMA(Close,12)),12)+ EMA (C,15)+ EMA((C-EMA(Close,15)),15); LONG2 = EMA (C,30)+ EMA((C-EMA(Close,30)),30)+ EMA (C,35)+ EMA((C-EMA(Close,35)),35)+ EMA (C,40)+ EMA((C-EMA(Close,40)),40)+ EMA (C,45)+ EMA((C-EMA(Close,45)),45)+ EMA (C,50)+ EMA((C-EMA(Close,50)),50)+ EMA (C,55)+ EMA((C-EMA(Close,55)),55)+ EMA (C,60)+ EMA((C-EMA(Close,60)),60); GuppyMMAOscillator = ((Short1-Long2)/Long2)*100; GMMACD=(((short1-Long2)/long2)*100)-EMA(((short1-long2)/long2)*100,9); r2Up=Cross(GuppyMMAOscillator,EMA(GuppyMMAOscillator, Trigger)) ; r2Down=Cross(EMA(GuppyMMAOscillator, Trigger),GuppyMMAOscillator) ; //r2Down= Cross(EMA(GuppyMMAOscillator, Trigger),GuppyMMAOscillator) ; //r2Down=Sum(r2Down,3)>0; r2= IIf( r2Up ,colorGreen,IIf(r2Down,colorRed,colorGrey40)); //============================================ MACD ======================= MACDcrossup= Cross(MACD(),Signal()) ; MACDcrossdown=Cross(Signal(),MACD()); r3Up= MACDcrossup; r3Down=MACDcrossdown; r3= IIf( r3Up,colorGreen,IIf(r3Down,colorRed,colorGrey40)); //--------------------------------------------------------------------------- //============================================ MFI ======================= periods = Param( "Periods", 14, 2, 200, 1 ); MFCrossUp=Cross(MFI(periods),MA(MFI(periods),9)); MFCrossDown=Cross(MA(MFI(periods),9),MFI(periods)); r4Up=MFCrossUp ; r4Down=MFCrossDown ; r4= IIf( r4Up,colorGreen,IIf(r4Down,colorRed,colorGrey40)); //--------------------------------------------CCI------------------------------- periods = Param( "Periods", 14, 2, 200, 1 ); CCICrossUp=Cross(CCI(periods),MA(CCI(periods),9)); CCICrossDown=Cross(MA(CCI(periods),9),CCI(periods)); r8Up=CCICrossUp; r8Down=CCICrossDown; r8= IIf( r8Up,colorGreen,IIf(r8Down,colorRed,colorGrey40)); ///////////////////////////////////////////// //========================================== ADX =========================== //============================================ ADX ====================================== bull=High - EMA(Close,13); bear=Low - EMA(Close,13); bb=bull+bear; ADXCond=PDI()>27 OR MDI()>27 OR ADX() >27; r5= IIf( ADXCond,colorBlue,colorGrey40); ////////////////////////////////////KAMA////////////// LBPeriods = Param( "LB Periods", 10, 1, 200, 1 ); FSCPeriods = Param( "FSC Periods", 2, 1, 200, 1 ); SSCPeriods = Param( "SSC Periods", 30, 1, 200, 1 ); FastSmoothConst = 2 / ( FSCPeriods + 1 ); SlowSmoothConst = 2 / ( SSCPeriods + 1 ); Direction = abs( Close - Ref( Close, -LBPeriods ) ); Volatility = Sum( abs( Close - Ref( Close, -1 ) ), LBPeriods ); EfficiencyRatio = Direction / Volatility; SC = ( EfficiencyRatio * ( FastSmoothConst - SlowSmoothConst ) + SlowSmoothConst ) ^ 2; KAMA = AMA( Close, SC ); up=Cross(Close,KAMA); down=Cross(KAMA,Close); r6= IIf( Up,colorGreen,IIf(Down,colorRed,colorGrey40)); ////////////////////////////////////////////////////////// MultiRibbon(r8, 1, "CCI"); MultiRibbon(r6, 2, "kama"); MultiRibbon(r5, 3, "adx"); MultiRibbon(r4, 4, "mfi"); MultiRibbon(r7, 5, "fi"); MultiRibbon(r1, 6, "elder"); MultiRibbon(r3, 7, "macd"); MultiRibbon(r2, 8, "guppy"); //ToolTip="r5: "+r5+" r2: "+r2; //32 red 27 green 29 blue function frsum(){ rsum1=0; rsum1=IIf(r1==32,-1,IIf(r1==27,1,0)); rsum1+=IIf(r2==32,-1,IIf(r2==27,1,0)); rsum1+=IIf(r3==32,-1,IIf(r3==27,1,0)); rsum1+=IIf(r4==32,-1,IIf(r4==27,1,0)); rsum1+=IIf(r6==32,-1,IIf(r6==27,1,0)); //rsum1+=IIf(r5!=29,-1,IIf(r5==29,1,0)); rsum1+=IIf(r7==32,-1,IIf(r7==27,1,0)); rsum1+=IIf(r8==32,-1,IIf(r8==27,1,0)); return rsum1; } ToolTip="r1:"+r1+"r2:"+r2+"r3:"+r3+"r4:"+r4 +"r5:"+r5+"r6:"+r6+"r7:"+r7+"r8:"+r8+"srsum: "+frsum(); Plot(Sum(frsum(),2),"sum:",colorGreen,styleNoDraw|styleNoLine); BuyCond =Sum(frsum(),3)>3 OR frsum()>3; ShortCond=Sum(frsum(),3)<-3 OR frsum()<-3; TimeFrameSet(in15Minute); BuyCond2=Sum(frsum(),3)>3 OR frsum()>3; ShortCond2=Sum(frsum(),3)<-3 OR frsum()<-3; TimeFrameRestore(); /* Plot(BuyCond,"buy",colorGreen); Plot(ShortCond ,"sell",colorRed); */ z = Zig(Close, 2); Buy=(BuyCond AND TimeFrameExpand(BuyCond2,in15Minute)) ;//AND (TimeNum() >= FirstTradeTime AND TimeNum() <= LastTradeTime ); Sell = IIf(z < Ref(z, -1), 1, 0);// OR TimeNum() > ExitAllPositionsTime; Short=(ShortCond AND TimeFrameExpand(ShortCond2,in15Minute));// AND (TimeNum() >= FirstTradeTime AND TimeNum() <= LastTradeTime ); Cover = IIf(z > Ref(z, -1), 1, 0) ;//OR TimeNum() > ExitAllPositionsTime; Buy=ExRem(Buy,Sell); Sell=ExRem(Sell,Buy); Short=ExRem(Short,Cover); Cover=ExRem(Cover,Short); Filter=BuyCond OR ShortCond ; Color = IIf(BuyCond , colorGreen,IIf(ShortCond ,colorRed,colorDefault));// ---------CNB------- AddColumn(Close,"BUY / SELL ", 1.2 , 1, Color , 80); AddColumn(Sum(frsum(),3),"sum",1,Color ,80); AddColumn(frsum(),"fsum()",1,Color ,80);