Histogram Flag Trading Indicators |
//www.aflcode.com /******************** Preliminaries *******************************/ PositionSize = 10000; scale = Param("scale", 100, 100, 1000, 100); /******************** Generate Histogram data *********************/ //= Red Bars =================== Gr1 = MACD(22,6); Gr2 = Signal(22,6,4); Diffr = Gr1-Gr2; //= Green Bars =================== Gr1 = MACD(8, 14); Gr2 = Signal(8, 14, 10); Diffg = Gr1-Gr2; //= Blue Bars =================== Gr1 = MACD(22,11); Gr2 = Signal(22,11,4); Diffb = Gr1-Gr2; //= Yellow Bars =================== Gr1 = MACD(12,15); Gr2 = Signal(12,15,8); Diffy = Gr1-Gr2; CR = (LastValue(Highest(diffr))/LastValue(Highest(diffr))) * Diffr; CG = (LastValue(Highest(diffr))/LastValue(Highest(diffg))) * Diffg; CB = (LastValue(Highest(diffr))/LastValue(Highest(diffb))) * Diffb; CY = (LastValue(Highest(diffr))/LastValue(Highest(diffy))) * Diffy; /***************** Generate Stochastics ***************************/ Stoch_K = StochK(17, 3); Stoch_D = StochD(17, 3, 3); /**************** Generate Bollinger Band "stuff" *****************/ BBT = BBandTop(C, 21, 2); BBB = BBandBot(C, 21, 2); BBML = (BBT + BBB) / 2; QBB = (BBT-BBB) / 4; BBUQ = BBML + QBB; BBLQ = BBML - QBB; CinTopQuarter = (C >= BBUQ); // 1 if C in upper quarter, 0 otherwise CinBottomQuarter = (C <= BBLQ); // 1 if C in lower quarter, 0 otherwise /**************** Generate Buy / Sell Signals *********************/ Buy = Sell = False; // 3 Options for initial Buy condition // 1a) Buy when Green bar crosses from below to above zero line // 1b) Buy as the Green (below zero) bar starts to turn up and the Red(above zero) starts to turn down // 1c) Buy as the Green starts to turn up with Yellow showing belowthe Green AND the Red starts to turn down Buy1 = Cross(CG , 0); // option 1a //Buy1 = ((CG < 0) AND (CR > 0) AND (Ref(CG,-1) < CG) AND (Ref(CR,-1)> CR)); // option 1b //Buy1 = (((CG < 0) AND (CR > 0) AND (Ref(CG,-1) < CG) AND (Ref(CR,-1)> CR) AND (CY < CG))); // option 1c // Additional Buy Conditions // 2) Stochastic has remained flat ....below the 20 line for severaldays AND then crosses the line // Note: I don't know how to encode "flat", // I use the STOCH D, // "several days" means 3 // 3) The price is at the ... bottom of the Bollinger Band Buy2 = (Ref(Stoch_D, -3) < 20) AND (Ref(Stoch_D, -2) < 20) AND (Ref(Stoch_D, -1) < 20) AND Cross(Stoch_D, 20); Buy3 = CinBottomQuarter; Buy = Buy1 AND Buy2 AND Buy3; // 3 Options for intial Sell condition // 1a) Sell when Green bar crosses from above to below zero line // 1b) Sell as the Green starts to turn down and the Red starts to turn up // 1c) Sell as the Green starts to turn down and the Red starts toturn up with Blue showing below the Red Sell1 = Cross(0, CG); // option 1a //Sell1 = ((CG > 0) AND (CR < 0) AND (Ref(CG, -1) > CG) AND(Ref(CR,-1) < CR)); // option 1b //Sell1 = (((CG > 0) AND (CR < 0) AND (Ref(CG, -1) > CG) AND(Ref(CR,-1) < CR) AND (CB < CR))); // option 1c // Additional Sell Conditions // 2) Stochastic has remained flat above the 80.... line for severaldays AND then crosses the line // Note: I don't know how to encode "flat", // I use the STOCH D, // "several days" means 3 // 3) The price is at the top ... of the Bollinger Band Sell2 = (Ref(Stoch_D, -3) > 80) AND (Ref(Stoch_D, -2) > 80) AND (Ref(Stoch_D, -1) < 80) AND Cross(80, Stoch_D); Sell3 = CinTopQuarter; Sell = Sell1 AND Sell3; // Sell2 is not used as it's too restrictive // Remove extraneous Buy / Sell signals Buy = ExRem(Buy, Sell); Sell = ExRem(Sell, Buy); /***************************** Indicator Plotting ***************/ _N(Title = Name() + "(" + FullName() + "); " + Date() + " \\c32Red=" + CR + ";" + " \\c43Green=" + CG + "; \\c37Blue=" + CB + "; \\c33Yellow=" + CY + "\n\\c16 4-MACD Exploration"); Plot (CR*scale, "", colorRed, 2+4); Plot (CG*scale, "", colorBrightGreen, 2+4); Plot (CB*scale, "", colorLightBlue, 2+4); Plot (CY*scale, "", colorLightOrange, 2+4); Plot (0, "", 16); Plot (CR*scale, "", colorRed, 1); Plot (CG*scale, "", colorBrightGreen, 1); PlotShapes(IIf(Buy,shapeUpArrow,shapeNone) ,colorBrightGreen); PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed); // Stoch_D is moved down by 50 points so that it's equilibrium line is is 0 rather than 50. // The 20 and 80 Stochastic lines are now 30 and -30, respectively. // This allows the stochastic to be plotted directly over the 4 MACD bars, which are centered // around 0 as well. Plot (Stoch_D-50, "", 29, 1+4+8); Plot (30, "", 16); Plot (-30,"", 16); // Signals BuySignals = Buy * shapeUpArrow; SellSignals = Sell * shapeDownArrow; PlotShapes (BuySignals, colorGreen, 0, Stoch_D-50, -20); PlotShapes (Sellsignals, colorRed, 0, Stoch_D-50, -20); /*************************** Exploration ***********************/ MinVolume = 1000000; CloseTimesVolume = C * V; MinCloseVolume = MA(CloseTimesVolume, 50) > MinVolume; MinPrice = 5; MaxPrice = 50; Filter = (Buy OR Sell); Result = WriteIf(Buy,"Buy","Sell"); AddTextColumn( WriteIf(Buy,"Buy", "Sell" ) ,"TRADE",5,IIf(Buy,colorYellow, colorWhite), IIf(Buy, colorDarkGreen,colorDarkRed) ); AddTextColumn(IndustryID(1) ," Industry Sector ", 25.0,colorWhite, colorBlue); AddColumn( Close, "Close", 1.2, IIf( ROC(C, 1 ) >= 0,colorDarkGreen,colorRed ),50 ); AddColumn(Ref(Close,-1),"Y-Close",1.2, IIf(ROC(Ref(C,-1),1)>=0,colorDarkGreen, colorRed ),50 ); AddColumn( Volume, "Volume", 10.0, IIf( ROC(V, 1 ) >=0,colorDarkGreen, colorRed ) ); AddColumn( ROC( Close, 1 ), "ROC(1)", 1.2, IIf( ROC(C, 1 ) >=0,colorDarkGreen, colorRed)); AddColumn( MACD(2.1), "MACD", 2.1, colorWhite,colorPlum);
Sign up here with your email
ConversionConversion EmoticonEmoticon