|
| 1 | + |
| 2 | +# TD Ameritrade IP Company, Inc. (c) 2008-2021 |
| 3 | +# |
| 4 | + |
| 5 | +declare lower; |
| 6 | + |
| 7 | +input over_bought = 80; |
| 8 | +input over_sold = 20; |
| 9 | +input over_bought2 = 70; |
| 10 | +input over_sold2 = 30; |
| 11 | +input KPeriod = 21; |
| 12 | +input DPeriod = 3; |
| 13 | +input priceH = high; |
| 14 | +input priceL = low; |
| 15 | +input priceC = close; |
| 16 | +input averageType = AverageType.EXPONENTIAL; |
| 17 | +input showBreakoutSignals = {default "No", "On SlowK", "On SlowD", "On SlowK & SlowD"}; |
| 18 | + |
| 19 | +plot SlowK = reference StochasticFull(over_bought,over_sold,KPeriod,DPeriod,priceH,priceL,priceC,3,averageType).FullK; |
| 20 | +plot SlowD = reference StochasticFull(over_bought,over_sold,KPeriod,DPeriod,priceH,priceL,priceC,3,averageType).FullD; |
| 21 | +plot OverBought = over_bought; |
| 22 | +plot OverSold = over_sold; |
| 23 | +plot OverBought2 = over_bought2; |
| 24 | +plot OverSold2 = over_sold2; |
| 25 | + |
| 26 | +def upK = SlowK crosses above OverSold; |
| 27 | +def upD = SlowD crosses above OverSold; |
| 28 | +def downK = SlowK crosses below OverBought; |
| 29 | +def downD = SlowD crosses below OverBought; |
| 30 | + |
| 31 | +plot UpSignal; |
| 32 | +plot DownSignal; |
| 33 | +switch (showBreakoutSignals) { |
| 34 | +case "No": |
| 35 | + UpSignal = Double.NaN; |
| 36 | + DownSignal = Double.NaN; |
| 37 | +case "On SlowK": |
| 38 | + UpSignal = if upK then OverSold else Double.NaN; |
| 39 | + DownSignal = if downK then OverBought else Double.NaN; |
| 40 | +case "On SlowD": |
| 41 | + UpSignal = if upD then OverSold else Double.NaN; |
| 42 | + DownSignal = if downD then OverBought else Double.NaN; |
| 43 | +case "On SlowK & SlowD": |
| 44 | + UpSignal = if upK or upD then OverSold else Double.NaN; |
| 45 | + DownSignal = if downK or downD then OverBought else Double.NaN; |
| 46 | +} |
| 47 | + |
| 48 | +UpSignal.setHiding(showBreakoutSignals == showBreakoutSignals."No"); |
| 49 | +DownSignal.setHiding(showBreakoutSignals == showBreakoutSignals."No"); |
| 50 | + |
| 51 | +SlowK.setDefaultColor(GetColor(5)); |
| 52 | +SlowK.assignValueColor(if SlowK > SlowK[1] then Color.UpTick else Color.DOWNTICK); |
| 53 | +SlowD.setDefaultColor(GetColor(0)); |
| 54 | +SlowD.assignValueColor(if SlowD > SlowD[1] then Color.UpTick else Color.DOWNTICK); |
| 55 | +OverBought.SetDefaultColor(GetColor(1)); |
| 56 | +OverSold.SetDefaultColor(GetColor(1)); |
| 57 | +OverBought2.SetDefaultColor(GetColor(1)); |
| 58 | +OverSold2.SetDefaultColor(GetColor(1)); |
| 59 | +UpSignal.SetDefaultColor(Color.UPTICK); |
| 60 | +UpSignal.SetPaintingStrategy(PaintingStrategy.ARROW_UP); |
| 61 | +DownSignal.SetDefaultColor(Color.DOWNTICK); |
| 62 | +DownSignal.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN); |
| 63 | + |
| 64 | + |
| 65 | +plot midline = 50; |
| 66 | +midline.setDefaultColor(Color.ORANGE); |
0 commit comments