Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
- // ©jasonmwilliamson79
- //@version=5
- // my attempt at easy to use Support and Resistance Zones for multiple time frames, based on volume primarily
- // alerts have been added
- indicator('Hamburger sauce volume based s/r', shorttitle='Hamburger s/r', max_bars_back=3000, max_labels_count=100, max_lines_count=100, overlay=true)
- ShowYesterdaysHLC = input(defval=true, title='Show - Yesterdays - High - Low - Close')
- ShowLastWeeksHLC = input(defval=true, title='Show - Last Weeks - High - Low - Close')
- ShowLastMonthsHLC = input(defval=true, title='Show - Last Months - High - Low - Close')
- // Inputs
- // Timeframe 1
- ShowTF1SR = input(true, 'Show - S/R - Timeframe 1')
- TF1 = input.timeframe(title='Timeframe 1', defval='')
- TF1_Menu = input.string(title='Timeframe 1 - S/R Type', defval='S/R Zones', options=['S/R Dots', 'S/R Lines', 'S/R Zones'])
- TF1_VolMA1Input = input(title='Timeframe 1 - Volume MA - Threshold', defval=6)
- // Timeframe 2
- ShowTF2SR = input(true, 'Show - S/R - Timeframe 2')
- TF2 = input.timeframe(title='Timeframe 2', defval='360')
- TF2_Menu = input.string(title='Timeframe 2 - S/R Type', defval='S/R Zones', options=['S/R Dots', 'S/R Lines', 'S/R Zones'])
- TF2_VolMA1Input = input(title='Timeframe 2 - Volume MA - Threshold', defval=6)
- // Timeframe 3
- ShowTF3SR = input(true, 'Show - S/R - Timeframe 3')
- TF3 = input.timeframe(title='Timeframe 3', defval='1D')
- TF3_Menu = input.string(title='Timeframe 3 - S/R Type', defval='S/R Zones', options=['S/R Dots', 'S/R Lines', 'S/R Zones'])
- TF3_VolMA1Input = input(title='Timeframe 3 - Volume MA - Threshold', defval=6)
- InvertColors = input(true, title='Invert Colors - Support / Resistance')
- // S/R - Timeframe 1 = TF1
- TF1_Vol = request.security(syminfo.tickerid, TF1, volume)
- TF1_VolMA = ta.sma(TF1_Vol, TF1_VolMA1Input)
- TF1_High = request.security(syminfo.tickerid, TF1, high)
- TF1_Low = request.security(syminfo.tickerid, TF1, low)
- TF1_Open = request.security(syminfo.tickerid, TF1, open)
- TF1_Close = request.security(syminfo.tickerid, TF1, close)
- TF1_Up = TF1_High[3] > TF1_High[4] and TF1_High[4] > TF1_High[5] and TF1_High[2] < TF1_High[3] and TF1_High[1] < TF1_High[2] and TF1_Vol[3] > TF1_VolMA[3] // or volume[3] > VolMA2Current[3])
- TF1_Down = TF1_Low[3] < TF1_Low[4] and TF1_Low[4] < TF1_Low[5] and TF1_Low[2] > TF1_Low[3] and TF1_Low[1] > TF1_Low[2] and TF1_Vol[3] > TF1_VolMA[3] // or volume[3] > VolMA2Current[3])
- TF1_CalcFractalUp() =>
- TF1_FractalUp = 0.0
- TF1_FractalUp := TF1_Up ? TF1_High[3] : TF1_FractalUp[1]
- TF1_FractalUp
- TF1_CalcFractalDown() =>
- TF1_FractalDown = 0.0
- TF1_FractalDown := TF1_Down ? TF1_Low[3] : TF1_FractalDown[1]
- TF1_FractalDown
- TF1_FractalUp = request.security(syminfo.tickerid, TF1, TF1_CalcFractalUp())
- TF1_FractalDown = request.security(syminfo.tickerid, TF1, TF1_CalcFractalDown())
- // Zones - Timeframe 1 = TF1
- // Fractal Up Zones
- TF1_CalcFractalUpLowerZone() =>
- TF1_FractalUpLowerZone = 0.0
- TF1_FractalUpLowerZone := TF1_Up and TF1_Close[3] > TF1_Open[3] ? TF1_Close[3] : TF1_Up and TF1_Close[3] < TF1_Open[3] ? TF1_Open[3] : TF1_FractalUpLowerZone[1]
- TF1_FractalUpLowerZone
- TF1_CalcFractalUpUpperZone() =>
- TF1_FractalUpUpperZone = 0.0
- TF1_FractalUpUpperZone := TF1_Up and TF1_Close[3] > TF1_Open[3] ? TF1_High[3] - TF1_Close[3] + TF1_High[3] : TF1_Up and TF1_Close[3] < TF1_Open[3] ? TF1_High[3] - TF1_Open[3] + TF1_High[3] : TF1_FractalUpUpperZone[1]
- TF1_FractalUpUpperZone
- TF1_FractalUpLowerZone = request.security(syminfo.tickerid, TF1, TF1_CalcFractalUpLowerZone())
- TF1_FractalUpUpperZone = request.security(syminfo.tickerid, TF1, TF1_CalcFractalUpUpperZone())
- TF1_ResistanceUpperZone = TF1_FractalUp
- TF1_ResistanceLowerZone = TF1_FractalUpLowerZone
- // Fractal Down Zones
- TF1_CalcFractalDownUpperZone() =>
- TF1_FractalDownUpperZone = 0.0
- TF1_FractalDownUpperZone := TF1_Down and TF1_Close[3] > TF1_Open[3] ? TF1_Open[3] : TF1_Down and TF1_Close[3] < TF1_Open[3] ? TF1_Close[3] : TF1_FractalDownUpperZone[1]
- TF1_FractalDownUpperZone
- TF1_CalcFractalDownLowerZone() =>
- TF1_FractalDownLowerZone = 0.0
- TF1_FractalDownLowerZone := TF1_Down and TF1_Close[3] > TF1_Open[3] ? TF1_Low[3] + TF1_Low[3] - TF1_Open[3] : TF1_Down and TF1_Close[3] < TF1_Open[3] ? TF1_Low[3] + TF1_Low[3] - TF1_Close[3] : TF1_FractalDownLowerZone[1]
- TF1_FractalDownLowerZone
- TF1_FractalDownLowerZone = request.security(syminfo.tickerid, TF1, TF1_CalcFractalDownLowerZone())
- TF1_FractalDownUpperZone = request.security(syminfo.tickerid, TF1, TF1_CalcFractalDownUpperZone())
- TF1_SupportUpperZone = TF1_FractalDownUpperZone
- TF1_SupportLowerZone = TF1_FractalDown
- // Colors - Timeframe 1 = TF1
- TF1_ResistanceColor = not InvertColors ? #FF00008C : #00FF00E6 // blue : yellow
- TF1_SupportColor = not InvertColors ? #00FF00E6 : #FF00008C // yellow : blue
- TF1_ResZoneColor = TF1_FractalUp != TF1_FractalUp[1] ? na : color.blue
- TF1_ResZoneColorInverted = TF1_FractalUp != TF1_FractalUp[1] ? na : color.yellow
- TF1_SupZoneColor = TF1_FractalDown != TF1_FractalDown[1] ? na : color.yellow
- TF1_SupZoneColorInverted = TF1_FractalDown != TF1_FractalDown[1] ? na : color.blue
- TF1_ResistanceZonesColor = not InvertColors and (TF1_Menu == 'S/R Zones' or TF1_Menu == 'S/R Lines') ? TF1_ResZoneColor : InvertColors and (TF1_Menu == 'S/R Zones' or TF1_Menu == 'S/R Lines') ? TF1_ResZoneColorInverted : na // blue : yellow
- TF1_SupportZonesColor = not InvertColors and (TF1_Menu == 'S/R Zones' or TF1_Menu == 'S/R Lines') ? TF1_SupZoneColor : InvertColors and (TF1_Menu == 'S/R Zones' or TF1_Menu == 'S/R Lines') ? TF1_SupZoneColorInverted : na // yellow : blue
- // S/R & S/R Zone Plots - Current Time Frame = Time Frame 1 = TF1
- TF1_ResistanceUpZone = plot(ShowTF1SR and (TF1_Menu == 'S/R Zones' or TF1_Menu == 'S/R Lines') ? TF1_ResistanceUpperZone : na, 'Timeframe 1 - Resistance - Lines - Upper Zone', color=TF1_ResistanceZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=25) // offset=-2
- TF1_ResistanceDownZone = plot(ShowTF1SR and TF1_Menu == 'S/R Zones' ? TF1_ResistanceLowerZone : na, 'Timeframe 1 - Resistance - Lower Zone', color=TF1_ResistanceZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=50) // offset=-2
- fill(TF1_ResistanceUpZone, TF1_ResistanceDownZone, color=TF1_ResistanceZonesColor, title='Timeframe 1 - Resistance Zone Shading', transp=93)
- plot(ShowTF1SR and TF1_Menu == 'S/R Dots' ? TF1_FractalUp : na, 'Timeframe 1 - Resistance - Dots', color=TF1_ResistanceColor, linewidth=1, style=plot.style_circles, offset=-3, join=false, transp=25)
- plot(ShowTF1SR and TF1_Menu == 'S/R Dots' ? TF1_FractalDown : na, 'Timeframe 1 - Support - Dots', color=TF1_SupportColor, linewidth=1, style=plot.style_circles, offset=-3, join=false, transp=25)
- TF1_SupportUpZone = plot(ShowTF1SR and TF1_Menu == 'S/R Zones' ? TF1_SupportUpperZone : na, 'Timeframe 1 - Support - Upper Zone', color=TF1_SupportZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=50)
- TF1_SupportDownZone = plot(ShowTF1SR and (TF1_Menu == 'S/R Zones' or TF1_Menu == 'S/R Lines') ? TF1_SupportLowerZone : na, 'Timeframe 1 - Support - Lines - Lower Zone', color=TF1_SupportZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=25)
- fill(TF1_SupportUpZone, TF1_SupportDownZone, color=TF1_SupportZonesColor, title='Timeframe 1 - Support Zone Shading', transp=93)
- // TF1 S/R Alerts
- PriceInTF1ResistanceZone = close <= TF1_ResistanceUpperZone and close >= TF1_ResistanceLowerZone
- PriceInTF1SupportZone = close <= TF1_SupportUpperZone and close >= TF1_SupportLowerZone
- PriceEntersTF1SRZone = PriceInTF1ResistanceZone and not PriceInTF1ResistanceZone[1] or PriceInTF1SupportZone and not PriceInTF1SupportZone[1]
- alertcondition(PriceEntersTF1SRZone, title='Alert - TF1 Price Enters S/R Zone', message='TF1 - Price Enters S/R Zone - Support/Resistance Zones x3')
- PriceBreakingTF1Resistance = ta.crossover(close, TF1_FractalUp)
- PriceBreakingTF1Support = ta.crossunder(close, TF1_FractalDown)
- alertcondition(PriceBreakingTF1Resistance, title='Alert - TF1 Price Crossing Over Resistance', message='TF1 - Price Crossing Over Resistance - Support/Resistance Zones x3')
- alertcondition(PriceBreakingTF1Support, title='Alert - TF1 Price Crossing Under Support', message='TF1 - Price Crossing Under Support - Support/Resistance Zones x3')
- // S/R - Timeframe 2 = TF2
- TF2_Vol = request.security(syminfo.tickerid, TF2, volume)
- TF2_VolMA = ta.sma(TF2_Vol, TF2_VolMA1Input)
- TF2_High = request.security(syminfo.tickerid, TF2, high)
- TF2_Low = request.security(syminfo.tickerid, TF2, low)
- TF2_Open = request.security(syminfo.tickerid, TF2, open)
- TF2_Close = request.security(syminfo.tickerid, TF2, close)
- TF2_Up = TF2_High[3] > TF2_High[4] and TF2_High[4] > TF2_High[5] and TF2_High[2] < TF2_High[3] and TF2_High[1] < TF2_High[2] and TF2_Vol[3] > TF2_VolMA[3] // or volume[3] > VolMA2Custom 1[3])
- TF2_Down = TF2_Low[3] < TF2_Low[4] and TF2_Low[4] < TF2_Low[5] and TF2_Low[2] > TF2_Low[3] and TF2_Low[1] > TF2_Low[2] and TF2_Vol[3] > TF2_VolMA[3] // or volume[3] > VolMA2Custom 1[3])
- TF2_CalcFractalUp() =>
- TF2_FractalUp = 0.0
- TF2_FractalUp := TF2_Up ? TF2_High[3] : TF2_FractalUp[1]
- TF2_FractalUp
- TF2_CalcFractalDown() =>
- TF2_FractalDown = 0.0
- TF2_FractalDown := TF2_Down ? TF2_Low[3] : TF2_FractalDown[1]
- TF2_FractalDown
- TF2_FractalUp = request.security(syminfo.tickerid, TF2, TF2_CalcFractalUp())
- TF2_FractalDown = request.security(syminfo.tickerid, TF2, TF2_CalcFractalDown())
- // Zones - Timeframe 2 = TF2
- // Fractal Up Zones
- TF2_CalcFractalUpLowerZone() =>
- TF2_FractalUpLowerZone = 0.0
- TF2_FractalUpLowerZone := TF2_Up and TF2_Close[3] > TF2_Open[3] ? TF2_Close[3] : TF2_Up and TF2_Close[3] < TF2_Open[3] ? TF2_Open[3] : TF2_FractalUpLowerZone[1]
- TF2_FractalUpLowerZone
- TF2_CalcFractalUpUpperZone() =>
- TF2_FractalUpUpperZone = 0.0
- TF2_FractalUpUpperZone := TF2_Up and TF2_Close[3] > TF2_Open[3] ? TF2_High[3] - TF2_Close[3] + TF2_High[3] : TF2_Up and TF2_Close[3] < TF2_Open[3] ? TF2_High[3] - TF2_Open[3] + TF2_High[3] : TF2_FractalUpUpperZone[1]
- TF2_FractalUpUpperZone
- TF2_FractalUpLowerZone = request.security(syminfo.tickerid, TF2, TF2_CalcFractalUpLowerZone())
- TF2_FractalUpUpperZone = request.security(syminfo.tickerid, TF2, TF2_CalcFractalUpUpperZone())
- TF2_ResistanceUpperZone = TF2_FractalUp
- TF2_ResistanceLowerZone = TF2_FractalUpLowerZone
- // Fractal Down Zones
- TF2_CalcFractalDownUpperZone() =>
- TF2_FractalDownUpperZone = 0.0
- TF2_FractalDownUpperZone := TF2_Down and TF2_Close[3] > TF2_Open[3] ? TF2_Open[3] : TF2_Down and TF2_Close[3] < TF2_Open[3] ? TF2_Close[3] : TF2_FractalDownUpperZone[1]
- TF2_FractalDownUpperZone
- TF2_CalcFractalDownLowerZone() =>
- TF2_FractalDownLowerZone = 0.0
- TF2_FractalDownLowerZone := TF2_Down and TF2_Close[3] > TF2_Open[3] ? TF2_Low[3] + TF2_Low[3] - TF2_Open[3] : TF2_Down and TF2_Close[3] < TF2_Open[3] ? TF2_Low[3] + TF2_Low[3] - TF2_Close[3] : TF2_FractalDownLowerZone[1]
- TF2_FractalDownLowerZone
- TF2_FractalDownLowerZone = request.security(syminfo.tickerid, TF2, TF2_CalcFractalDownLowerZone())
- TF2_FractalDownUpperZone = request.security(syminfo.tickerid, TF2, TF2_CalcFractalDownUpperZone())
- TF2_SupportUpperZone = TF2_FractalDownUpperZone
- TF2_SupportLowerZone = TF2_FractalDown
- // Colors - Timeframe 2 = TF2
- TF2_ResistanceColor = not InvertColors ? color.purple : color.orange
- TF2_SupportColor = not InvertColors ? color.orange : color.purple
- TF2_ResZoneColor = TF2_FractalUp != TF2_FractalUp[1] ? na : color.purple
- TF2_ResZoneColorInverted = TF2_FractalUp != TF2_FractalUp[1] ? na : color.orange
- TF2_SupZoneColor = TF2_FractalDown != TF2_FractalDown[1] ? na : color.orange
- TF2_SupZoneColorInverted = TF2_FractalDown != TF2_FractalDown[1] ? na : color.purple
- TF2_ResistanceZonesColor = not InvertColors and (TF2_Menu == 'S/R Zones' or TF2_Menu == 'S/R Lines') ? TF2_ResZoneColor : InvertColors and (TF2_Menu == 'S/R Zones' or TF2_Menu == 'S/R Lines') ? TF2_ResZoneColorInverted : na // purple : orange
- TF2_SupportZonesColor = not InvertColors and (TF2_Menu == 'S/R Zones' or TF2_Menu == 'S/R Lines') ? TF2_SupZoneColor : InvertColors and (TF2_Menu == 'S/R Zones' or TF2_Menu == 'S/R Lines') ? TF2_SupZoneColorInverted : na // orange : purple
- // S/R & S/R Zone Plots - Custom 1 Time Frame = Time Frame 2 = TF2
- TF2_ResistanceUpZone = plot(ShowTF2SR and (TF2_Menu == 'S/R Zones' or TF2_Menu == 'S/R Lines') ? TF2_ResistanceUpperZone : na, 'Timeframe 2 - Resistance - Lines - Upper Zone', color=TF2_ResistanceZonesColor, linewidth=2, style=plot.style_line, offset=-3, join=false, transp=50) // offset=-2
- TF2_ResistanceDownZone = plot(ShowTF2SR and TF2_Menu == 'S/R Zones' ? TF2_ResistanceLowerZone : na, 'Timeframe 2 - Resistance - Lower Zone', color=TF2_ResistanceZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=50) // offset=-2
- fill(TF2_ResistanceUpZone, TF2_ResistanceDownZone, color=TF2_ResistanceZonesColor, title='Timeframe 2 - Resistance Zone Shading', transp=93)
- plot(ShowTF2SR and TF2_Menu == 'S/R Dots' ? TF2_FractalUp : na, 'Timeframe 2 - Resistance - Dots', color=TF2_ResistanceColor, linewidth=2, style=plot.style_circles, offset=-3, join=false, transp=50)
- plot(ShowTF2SR and TF2_Menu == 'S/R Dots' ? TF2_FractalDown : na, 'Timeframe 2 - Support - Dots', color=TF2_SupportColor, linewidth=2, style=plot.style_circles, offset=-3, join=false, transp=50)
- TF2_SupportUpZone = plot(ShowTF2SR and TF2_Menu == 'S/R Zones' ? TF2_SupportUpperZone : na, 'Timeframe 2 - Support - Upper Zone', color=TF2_SupportZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=50)
- TF2_SupportDownZone = plot(ShowTF2SR and (TF2_Menu == 'S/R Zones' or TF2_Menu == 'S/R Lines') ? TF2_SupportLowerZone : na, 'Timeframe 2 - Support - Lines - Lower Zone', color=TF2_SupportZonesColor, linewidth=2, style=plot.style_line, offset=-3, join=false, transp=50)
- fill(TF2_SupportUpZone, TF2_SupportDownZone, color=TF2_SupportZonesColor, title='Timeframe 2 - Support Zone Shading', transp=93)
- // TF2 S/R Alerts
- PriceInTF2ResistanceZone = close <= TF2_ResistanceUpperZone and close >= TF2_ResistanceLowerZone
- PriceInTF2SupportZone = close <= TF2_SupportUpperZone and close >= TF2_SupportLowerZone
- PriceEntersTF2SRZone = PriceInTF2ResistanceZone and not PriceInTF2ResistanceZone[1] or PriceInTF2SupportZone and not PriceInTF2SupportZone[1]
- alertcondition(PriceEntersTF2SRZone, title='Alert - TF2 Price Enters S/R Zone', message='TF2 - Price Enters S/R Zone - Support/Resistance Zones x3')
- PriceBreakingTF2Resistance = ta.crossover(close, TF2_FractalUp)
- PriceBreakingTF2Support = ta.crossunder(close, TF2_FractalDown)
- alertcondition(PriceBreakingTF2Resistance, title='Alert - TF2 Price Crossing Over Resistance', message='TF2 - Price Crossing Over Resistance - Support/Resistance Zones x3')
- alertcondition(PriceBreakingTF2Support, title='Alert - TF2 Price Crossing Under Support', message='TF2 - Price Crossing Under Support - Support/Resistance Zones x3')
- // S/R - Timeframe 3 = TF3
- TF3_Vol = request.security(syminfo.tickerid, TF3, volume)
- TF3_VolMA = ta.sma(TF3_Vol, TF3_VolMA1Input)
- TF3_High = request.security(syminfo.tickerid, TF3, high)
- TF3_Low = request.security(syminfo.tickerid, TF3, low)
- TF3_Open = request.security(syminfo.tickerid, TF3, open)
- TF3_Close = request.security(syminfo.tickerid, TF3, close)
- TF3_Up = TF3_High[3] > TF3_High[4] and TF3_High[4] > TF3_High[5] and TF3_High[2] < TF3_High[3] and TF3_High[1] < TF3_High[2] and TF3_Vol[3] > TF3_VolMA[3] // or volume[3] > VolMA2Custom 2[3])
- TF3_Down = TF3_Low[3] < TF3_Low[4] and TF3_Low[4] < TF3_Low[5] and TF3_Low[2] > TF3_Low[3] and TF3_Low[1] > TF3_Low[2] and TF3_Vol[3] > TF3_VolMA[3] // or volume[3] > VolMA2Custom 2[3])
- TF3_CalcFractalUp() =>
- TF3_FractalUp = 0.0
- TF3_FractalUp := TF3_Up ? TF3_High[3] : TF3_FractalUp[1]
- TF3_FractalUp
- TF3_CalcFractalDown() =>
- TF3_FractalDown = 0.0
- TF3_FractalDown := TF3_Down ? TF3_Low[3] : TF3_FractalDown[1]
- TF3_FractalDown
- TF3_FractalUp = request.security(syminfo.tickerid, TF3, TF3_CalcFractalUp())
- TF3_FractalDown = request.security(syminfo.tickerid, TF3, TF3_CalcFractalDown())
- // Zones - Timeframe 3 = TF3
- // Fractal Up Zones
- TF3_CalcFractalUpLowerZone() =>
- TF3_FractalUpLowerZone = 0.0
- TF3_FractalUpLowerZone := TF3_Up and TF3_Close[3] > TF3_Open[3] ? TF3_Close[3] : TF3_Up and TF3_Close[3] < TF3_Open[3] ? TF3_Open[3] : TF3_FractalUpLowerZone[1]
- TF3_FractalUpLowerZone
- TF3_CalcFractalUpUpperZone() =>
- TF3_FractalUpUpperZone = 0.0
- TF3_FractalUpUpperZone := TF3_Up and TF3_Close[3] > TF3_Open[3] ? TF3_High[3] - TF3_Close[3] + TF3_High[3] : TF3_Up and TF3_Close[3] < TF3_Open[3] ? TF3_High[3] - TF3_Open[3] + TF3_High[3] : TF3_FractalUpUpperZone[1]
- TF3_FractalUpUpperZone
- TF3_FractalUpLowerZone = request.security(syminfo.tickerid, TF3, TF3_CalcFractalUpLowerZone())
- TF3_FractalUpUpperZone = request.security(syminfo.tickerid, TF3, TF3_CalcFractalUpUpperZone())
- TF3_ResistanceUpperZone = TF3_FractalUp
- TF3_ResistanceLowerZone = TF3_FractalUpLowerZone
- // Fractal Down Zones
- TF3_CalcFractalDownUpperZone() =>
- TF3_FractalDownUpperZone = 0.0
- TF3_FractalDownUpperZone := TF3_Down and TF3_Close[3] > TF3_Open[3] ? TF3_Open[3] : TF3_Down and TF3_Close[3] < TF3_Open[3] ? TF3_Close[3] : TF3_FractalDownUpperZone[1]
- TF3_FractalDownUpperZone
- TF3_CalcFractalDownLowerZone() =>
- TF3_FractalDownLowerZone = 0.0
- TF3_FractalDownLowerZone := TF3_Down and TF3_Close[3] > TF3_Open[3] ? TF3_Low[3] + TF3_Low[3] - TF3_Open[3] : TF3_Down and TF3_Close[3] < TF3_Open[3] ? TF3_Low[3] + TF3_Low[3] - TF3_Close[3] : TF3_FractalDownLowerZone[1]
- TF3_FractalDownLowerZone
- TF3_FractalDownLowerZone = request.security(syminfo.tickerid, TF3, TF3_CalcFractalDownLowerZone())
- TF3_FractalDownUpperZone = request.security(syminfo.tickerid, TF3, TF3_CalcFractalDownUpperZone())
- TF3_SupportUpperZone = TF3_FractalDownUpperZone
- TF3_SupportLowerZone = TF3_FractalDown
- // Colors - Timeframe 3 = TF3
- TF3_ResistanceColor = not InvertColors ? color.red : color.green
- TF3_SupportColor = not InvertColors ? color.green : color.red
- TF3_ResZoneColor = TF3_FractalUp != TF3_FractalUp[1] ? na : color.green
- TF3_ResZoneColorInverted = TF3_FractalUp != TF3_FractalUp[1] ? na : color.red
- TF3_SupZoneColor = TF3_FractalDown != TF3_FractalDown[1] ? na : color.red
- TF3_SupZoneColorInverted = TF3_FractalDown != TF3_FractalDown[1] ? na : color.green
- TF3_ResistanceZonesColor = not InvertColors and (TF3_Menu == 'S/R Zones' or TF3_Menu == 'S/R Lines') ? TF3_ResZoneColor : InvertColors and (TF3_Menu == 'S/R Zones' or TF3_Menu == 'S/R Lines') ? TF3_ResZoneColorInverted : na // red : green
- TF3_SupportZonesColor = not InvertColors and (TF3_Menu == 'S/R Zones' or TF3_Menu == 'S/R Lines') ? TF3_SupZoneColor : InvertColors and (TF3_Menu == 'S/R Zones' or TF3_Menu == 'S/R Lines') ? TF3_SupZoneColorInverted : na // green : red
- // S/R & S/R Zone Plots - Timeframe 3 = TF3
- TF3_ResistanceUpZone = plot(ShowTF3SR and (TF3_Menu == 'S/R Zones' or TF3_Menu == 'S/R Lines') ? TF3_ResistanceUpperZone : na, 'Timeframe 3 - Resistance - Lines - Upper Zone', color=TF3_ResistanceZonesColor, linewidth=3, style=plot.style_line, offset=-3, join=false, transp=50) // offset=-2
- TF3_ResistanceDownZone = plot(ShowTF3SR and TF3_Menu == 'S/R Zones' ? TF3_ResistanceLowerZone : na, 'Timeframe 3 - Resistance - Lower Zone', color=TF3_ResistanceZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=50) // offset=-2
- fill(TF3_ResistanceUpZone, TF3_ResistanceDownZone, color=TF3_ResistanceZonesColor, title='Timeframe 3 - Resistance Zone Shading', transp=93) // ResistanceColorCustom 2)
- plot(ShowTF3SR and TF3_Menu == 'S/R Dots' ? TF3_FractalUp : na, 'Timeframe 3 - Resistance - Dots', color=TF3_ResistanceColor, linewidth=3, style=plot.style_circles, offset=-3, join=false, transp=50)
- plot(ShowTF3SR and TF3_Menu == 'S/R Dots' ? TF3_FractalDown : na, 'Timeframe 3 - Support - Dots', color=TF3_SupportColor, linewidth=3, style=plot.style_circles, offset=-3, join=false, transp=50)
- TF3_SupportUpZone = plot(ShowTF3SR and TF3_Menu == 'S/R Zones' ? TF3_SupportUpperZone : na, 'Timeframe 3 - Support - Upper Zone', color=TF3_SupportZonesColor, linewidth=1, style=plot.style_line, offset=-3, join=false, transp=50)
- TF3_SupportDownZone = plot(ShowTF3SR and (TF3_Menu == 'S/R Zones' or TF3_Menu == 'S/R Lines') ? TF3_SupportLowerZone : na, 'Timeframe 3 - Support - Lines - Lower Zone', color=TF3_SupportZonesColor, linewidth=3, style=plot.style_line, offset=-3, join=false, transp=50)
- fill(TF3_SupportUpZone, TF3_SupportDownZone, color=TF3_SupportZonesColor, title='Timeframe 3 - Support Zone Shading', transp=93)
- // TF3 S/R Alerts
- PriceInTF3ResistanceZone = close <= TF3_ResistanceUpperZone and close >= TF3_ResistanceLowerZone
- PriceInTF3SupportZone = close <= TF3_SupportUpperZone and close >= TF3_SupportLowerZone
- PriceEntersTF3SRZone = PriceInTF3ResistanceZone and not PriceInTF3ResistanceZone[1] or PriceInTF3SupportZone and not PriceInTF3SupportZone[1]
- alertcondition(PriceEntersTF3SRZone, title='Alert - TF3 Price Enters S/R Zone', message='TF3 - Price Enters TF3 S/R Zone - Support/Resistance Zones x3')
- PriceBreakingTF3Resistance = ta.crossover(close, TF3_FractalUp)
- PriceBreakingTF3Support = ta.crossunder(close, TF3_FractalDown)
- alertcondition(PriceBreakingTF3Resistance, title='Alert - TF3 Price Crossing Over Resistance', message='TF3 - Price Crossing Over Resistance - Support/Resistance Zones x3')
- alertcondition(PriceBreakingTF3Support, title='Alert - TF3 Price Crossing Under Support', message='TF3 - Price Crossing Under Support - Support/Resistance Zones x3')
- // Any TF S/R Alerts
- PriceCrossingAnyTFSR = ta.cross(close, TF1_FractalUp) or ta.cross(close, TF2_FractalUp) or ta.cross(close, TF3_FractalUp) or ta.cross(close, TF1_FractalDown) or ta.cross(close, TF2_FractalDown) or ta.cross(close, TF3_FractalDown)
- alertcondition(PriceEntersTF1SRZone or PriceEntersTF2SRZone or PriceEntersTF3SRZone, title='Alert - Any TF Price Enters S/R Zone', message='Any TF - Price Enters S/R Zone - Support/Resistance Zones x3')
- alertcondition(PriceBreakingTF1Resistance or PriceBreakingTF2Resistance or PriceBreakingTF3Resistance, title='Alert - Any TF Price Crossing Over Resistance', message='Any TF - Price Crossing Over Resistance - Support/Resistance Zones x3')
- alertcondition(PriceBreakingTF3Support or PriceBreakingTF3Support or PriceBreakingTF3Support, title='Alert - Any TF Price Crossing Under Support', message='Any TF - Price Crossing Under Support - Support/Resistance Zones x3')
- alertcondition(PriceCrossingAnyTFSR, title='Alert - Any TF Price Crossing S/R', message='Any TF - Price Crossing S/R - Support/Resistance Zones x3')
- // Daily Weekly and Monthly High Low Close Extensions
- // Function outputs 1 when it's the first bar of the D/W/M/Y
- is_newbar(res) =>
- ch = 0
- if res == '12M'
- t = year(time('D'))
- ch := ta.change(t) != 0 ? 1 : 0
- ch
- else
- t = time(res)
- ch := ta.change(t) != 0 ? 1 : 0
- ch
- ch
- // Rounding levels to min tick
- nround(x) =>
- n = math.round(x / syminfo.mintick) * syminfo.mintick
- n
- ////////////
- // INPUTS //
- ////////////
- DailyAndWeeklyHLCCandleTypeInput = 'Adaptive - Automatically Adapts to Standard or HA Candles' // input(title = 'Calculate According To Candle Type - Daily and Weekly HLC', defval = "Standard", options = ["Standard", "Heikin Ashi", "Adaptive - Automatically Adapts to Standard or HA Candles"])
- // HA = heikinashi(syminfo.tickerid)
- // NonHA = tickerid(syminfo.prefix, syminfo.ticker)
- DailyAndWeeklyHLCCandleType = syminfo.tickerid // DailyAndWeeklyHLCCandleTypeInput=="Heikin Ashi" ? HA : DailyAndWeeklyHLCCandleTypeInput=="Standard" ? NonHA : syminfo.tickerid
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- MajBarsSinseYHLC = 0
- MajBarsSinseYHLC := is_newbar('D') ? 0 : MajBarsSinseYHLC[1] + 1
- DailyOrLess = timeframe.isseconds or timeframe.isintraday or timeframe.isdaily and timeframe.multiplier < 2 ? 1 : 0
- // Yesterdays High Low Close Calculations and Plots
- //YHLCOpen = security(DailyAndWeeklyHLCCandleType, 'D', open, barmerge.gaps_off, barmerge.lookahead_on)
- YHLCClose = request.security(DailyAndWeeklyHLCCandleType, 'D', close, barmerge.gaps_off, barmerge.lookahead_on)
- YHLCHigh = request.security(DailyAndWeeklyHLCCandleType, 'D', high, barmerge.gaps_off, barmerge.lookahead_on)
- YHLCLow = request.security(DailyAndWeeklyHLCCandleType, 'D', low, barmerge.gaps_off, barmerge.lookahead_on)
- /////////////////////
- // Get HLC from HT //
- // Calc Open
- // YHLCCurentOpen = 0.0
- // YHLCCurentOpen := is_newbar('D') ? YHLCOpen : YHLCCurentOpen[1]
- // YHLCPreviousOpen = 0.0
- // YHLCPreviousOpen := is_newbar('D') ? YHLCCurentOpen[1] : YHLCPreviousOpen[1]
- // Calc High
- YHLCCurrentHigh = 0.0
- YHLCCurrentHigh := is_newbar('D') ? YHLCHigh : math.max(YHLCCurrentHigh[1], YHLCHigh)
- YHLCPreviousHigh = 0.0
- YHLCPreviousHigh := is_newbar('D') ? YHLCCurrentHigh[1] : YHLCPreviousHigh[1]
- // Calc Low
- YHLCCurrentLow = 0.0
- YHLCCurrentLow := is_newbar('D') ? YHLCLow : math.min(YHLCCurrentLow[1], YHLCLow)
- YHLCPreviousLow = 0.0
- YHLCPreviousLow := is_newbar('D') ? YHLCCurrentLow[1] : YHLCPreviousLow[1]
- // Calc Close
- YHLCPreviousClose = 0.0
- YHLCPreviousClose := is_newbar('D') ? YHLCClose[1] : YHLCPreviousClose[1]
- // YCa = ShowYesterdaysHLC and DailyOrLess ? line.new(bar_index[min(MajBarsSinseYHLC, 300)], YHLCPreviousClose, bar_index, YHLCPreviousClose, color=color.blue, style = line.style_solid, extend = extend.right) : na
- // YHa = ShowYesterdaysHLC and DailyOrLess ? line.new(bar_index[min(MajBarsSinseYHLC, 300)], YHLCPreviousHigh, bar_index, YHLCPreviousHigh, color=color.green, style = line.style_solid, extend = extend.right) : na
- // YLa = ShowYesterdaysHLC and DailyOrLess ? line.new(bar_index[min(MajBarsSinseYHLC, 300)], YHLCPreviousLow, bar_index, YHLCPreviousLow, color=color.red, style = line.style_solid, extend = extend.right) : na
- // // delete previous lines in the same period
- // //if (not is_newbar(pp_res)// or not show_historical_levels)
- // line.delete(YCa[1])
- // line.delete(YHa[1])
- // line.delete(YLa[1])
- /////////////////////////////////////////////////////////////////////////////////
- var int YHLCTimeFromCalcA = 0
- var int YHLCTimeToCalcA = 0
- if ta.change(time('D'))
- YHLCTimeFromCalcA := bar_index[1]
- YHLCTimeToCalcA := bar_index
- YHLCTimeToCalcA
- YHLCTimeFromCalcB = bar_index[math.min(MajBarsSinseYHLC, 300)]
- YHLCTimeToCalcB = bar_index
- YHLCTimeFrom = timeframe.isintraday ? YHLCTimeFromCalcB : YHLCTimeFromCalcA
- YHLCTimeTo = timeframe.isintraday ? YHLCTimeToCalcB : YHLCTimeToCalcA
- YHLCLineWidth = 2 // MajLineStyleIn=="Dotted" ? MajLineWidthIn : MajLineWidthIn + 1
- YCb = ShowYesterdaysHLC and DailyOrLess ? line.new(YHLCTimeFrom, YHLCPreviousClose, YHLCTimeTo, YHLCPreviousClose, color=color.blue, style=line.style_solid, extend=extend.right, width=YHLCLineWidth) : na
- YHb = ShowYesterdaysHLC and DailyOrLess ? line.new(YHLCTimeFrom, YHLCPreviousHigh, YHLCTimeTo, YHLCPreviousHigh, color=color.green, style=line.style_solid, extend=extend.right, width=YHLCLineWidth) : na
- YLb = ShowYesterdaysHLC and DailyOrLess ? line.new(YHLCTimeFrom, YHLCPreviousLow, YHLCTimeTo, YHLCPreviousLow, color=color.red, style=line.style_solid, extend=extend.right, width=YHLCLineWidth) : na
- // delete previous lines in the same period
- //if (not is_newbar(pp_res)// or not show_historical_levels)
- line.delete(YCb[1])
- line.delete(YHb[1])
- line.delete(YLb[1])
- alertcondition(not is_newbar('D') and ta.cross(close, YHLCPreviousClose), 'Crossing Y\'s Close', 'Crossing Yesterdays Close')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, YHLCPreviousClose), "Crossover Yesterdays Close", "Crossover Yesterdays Close")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, YHLCPreviousClose), "Crossunder Yesterdays Close", "Crossunder Yesterdays Close")
- alertcondition(not is_newbar('D') and ta.cross(close, YHLCPreviousHigh), 'Crossing Y\'s High', 'Crossing Yesterdays High')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, YHLCPreviousHigh), "Crossover Yesterdays High", "Crossover Yesterdays High")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, YHLCPreviousHigh), "Crossunder Yesterdays High", "Crossunder Yesterdays High")
- alertcondition(not is_newbar('D') and ta.cross(close, YHLCPreviousLow), 'Crossing Y\'s Low', 'Crossing Yesterdays Low')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, YHLCPreviousLow), "Crossover Yesterdays Low", "Crossover Yesterdays Low")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, YHLCPreviousLow), "Crossunder Yesterdays Low", "Crossunder Yesterdays Low")
- ////////////////////////////////////////////
- MajBarsSinseLWHLC = 0
- MajBarsSinseLWHLC := is_newbar('W') ? 0 : MajBarsSinseLWHLC[1] + 1
- WeeklyOrLess = timeframe.isseconds or timeframe.isintraday or timeframe.isdaily or timeframe.isweekly and timeframe.multiplier < 2 ? 1 : 0
- // Last Weeks High Low Close Calculations and Plots
- //LWHLCOpen = security(DailyAndWeeklyHLCCandleType, 'W', open, barmerge.gaps_off, barmerge.lookahead_on)
- LWHLCClose = request.security(DailyAndWeeklyHLCCandleType, 'W', close, barmerge.gaps_off, barmerge.lookahead_on)
- LWHLCHigh = request.security(DailyAndWeeklyHLCCandleType, 'W', high, barmerge.gaps_off, barmerge.lookahead_on)
- LWHLCLow = request.security(DailyAndWeeklyHLCCandleType, 'W', low, barmerge.gaps_off, barmerge.lookahead_on)
- /////////////////////
- // Get HLC from HT //
- // Calc Open
- // LWHLCCurentOpen = 0.0
- // LWHLCCurentOpen := is_newbar('W') ? LWHLCOpen : LWHLCCurentOpen[1]
- // LWHLCPreviousOpen = 0.0
- // LWHLCPreviousOpen := is_newbar('W') ? LWHLCCurentOpen[1] : LWHLCPreviousOpen[1]
- // Calc High
- LWHLCCurrentHigh = 0.0
- LWHLCCurrentHigh := is_newbar('W') ? LWHLCHigh : math.max(LWHLCCurrentHigh[1], LWHLCHigh)
- LWHLCPreviousHigh = 0.0
- LWHLCPreviousHigh := is_newbar('W') ? LWHLCCurrentHigh[1] : LWHLCPreviousHigh[1]
- // Calc Low
- LWHLCCurrentLow = 0.0
- LWHLCCurrentLow := is_newbar('W') ? LWHLCLow : math.min(LWHLCCurrentLow[1], LWHLCLow)
- LWHLCPreviousLow = 0.0
- LWHLCPreviousLow := is_newbar('W') ? LWHLCCurrentLow[1] : LWHLCPreviousLow[1]
- // Calc Close
- LWHLCPreviousClose = 0.0
- LWHLCPreviousClose := is_newbar('W') ? LWHLCClose[1] : LWHLCPreviousClose[1]
- // LWCa = ShowLastWeeksHLC and WeeklyOrLess ? line.new(bar_index[min(MajBarsSinseLWHLC, 300)], LWHLCPreviousClose, bar_index, LWHLCPreviousClose, color=color.blue, style = line.style_solid, width = 2, extend = extend.right) : na
- // LWHa = ShowLastWeeksHLC and WeeklyOrLess ? line.new(bar_index[min(MajBarsSinseLWHLC, 300)], LWHLCPreviousHigh, bar_index, LWHLCPreviousHigh, color=color.green, style = line.style_solid, width = 2, extend = extend.right) : na
- // LWLa = ShowLastWeeksHLC and WeeklyOrLess ? line.new(bar_index[min(MajBarsSinseLWHLC, 300)], LWHLCPreviousLow, bar_index, LWHLCPreviousLow, color=color.red, style = line.style_solid, width = 2, extend = extend.right) : na
- // // delete previous lines in the same period
- // //if (not is_newbar(pp_res)// or not show_historical_levels)
- // line.delete(LWCa[1])
- // line.delete(LWHa[1])
- // line.delete(LWLa[1])
- //////////////////////////////////////
- var int LWHLCTimeFromCalcA = 0
- var int LWHLCTimeToCalcA = 0
- if ta.change(time('W'))
- LWHLCTimeFromCalcA := bar_index[1]
- LWHLCTimeToCalcA := bar_index
- LWHLCTimeToCalcA
- LWHLCTimeFromCalcB = bar_index[math.min(MajBarsSinseLWHLC, 300)]
- LWHLCTimeToCalcB = bar_index
- LWHLCTimeFrom = timeframe.isintraday ? LWHLCTimeFromCalcB : LWHLCTimeFromCalcA
- LWHLCTimeTo = timeframe.isintraday ? LWHLCTimeToCalcB : LWHLCTimeToCalcA
- LWHLCLineWidth = 3 //MajLineStyleIn=="Dotted" ? MajLineWidthIn + 1 : MajLineWidthIn + 2
- LWCb = ShowLastWeeksHLC and WeeklyOrLess ? line.new(LWHLCTimeFrom, LWHLCPreviousClose, LWHLCTimeTo, LWHLCPreviousClose, color=color.blue, style=line.style_solid, extend=extend.right, width=LWHLCLineWidth) : na
- LWHb = ShowLastWeeksHLC and WeeklyOrLess ? line.new(LWHLCTimeFrom, LWHLCPreviousHigh, LWHLCTimeTo, LWHLCPreviousHigh, color=color.green, style=line.style_solid, extend=extend.right, width=LWHLCLineWidth) : na
- LWLb = ShowLastWeeksHLC and WeeklyOrLess ? line.new(LWHLCTimeFrom, LWHLCPreviousLow, LWHLCTimeTo, LWHLCPreviousLow, color=color.red, style=line.style_solid, extend=extend.right, width=LWHLCLineWidth) : na
- // delete previous lines in the same period
- //if (not is_newbar(pp_res)// or not show_historical_levels)
- line.delete(LWCb[1])
- line.delete(LWHb[1])
- line.delete(LWLb[1])
- alertcondition(not is_newbar('W') and ta.cross(close, LWHLCPreviousClose), 'Crossing LW\'s Close', 'Crossing Last Weeks Close')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, LWHLCPreviousClose), "Crossover Yesterdays Close", "Crossover Last Weeks Close")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, LWHLCPreviousClose), "Crossunder Yesterdays Close", "Crossunder Last Weeks Close")
- alertcondition(not is_newbar('W') and ta.cross(close, LWHLCPreviousHigh), 'Crossing LW\'s High', 'Crossing Last Weeks High')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, LWHLCPreviousHigh), "Crossover Yesterdays High", "Crossover Last Weeks High")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, LWHLCPreviousHigh), "Crossunder Yesterdays High", "Crossunder Last Weeks High")
- alertcondition(not is_newbar('W') and ta.cross(close, LWHLCPreviousLow), 'Crossing LW\'s Low', 'Crossing Last Weeks Low')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, LWHLCPreviousLow), "Crossover Yesterdays Low", "Crossover Last Weeks Low")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, LWHLCPreviousLow), "Crossunder Yesterdays Low", "Crossunder Last Weeks Low")
- ////////////////////////////////////////////
- MajBarsSinseLMHLC = 0
- MajBarsSinseLMHLC := is_newbar('M') ? 0 : MajBarsSinseLMHLC[1] + 1
- LMHLCLineWidth = 5 // = MajLineStyleIn=="Dotted" ? MajLineWidthIn + 2 : MajLineWidthIn + 3
- // Last Weeks High Low Close Calculations and Plots
- LMHLCOpen = request.security(DailyAndWeeklyHLCCandleType, 'M', open, barmerge.gaps_off, barmerge.lookahead_on)
- LMHLCClose = request.security(DailyAndWeeklyHLCCandleType, 'M', close, barmerge.gaps_off, barmerge.lookahead_on)
- LMHLCHigh = request.security(DailyAndWeeklyHLCCandleType, 'M', high, barmerge.gaps_off, barmerge.lookahead_on)
- LMHLCLow = request.security(DailyAndWeeklyHLCCandleType, 'M', low, barmerge.gaps_off, barmerge.lookahead_on)
- /////////////////////
- // Get HLC from HT //
- // Calc Open
- LMHLCCurentOpen = 0.0
- LMHLCCurentOpen := is_newbar('M') ? LMHLCOpen : LMHLCCurentOpen[1]
- LMHLCPreviousOpen = 0.0
- LMHLCPreviousOpen := is_newbar('M') ? LMHLCCurentOpen[1] : LMHLCPreviousOpen[1]
- // Calc High
- LMHLCCurrentHigh = 0.0
- LMHLCCurrentHigh := is_newbar('M') ? LMHLCHigh : math.max(LMHLCCurrentHigh[1], LMHLCHigh)
- LMHLCPreviousHigh = 0.0
- LMHLCPreviousHigh := is_newbar('M') ? LMHLCCurrentHigh[1] : LMHLCPreviousHigh[1]
- // Calc Low
- LMHLCCurrentLow = 0.0
- LMHLCCurrentLow := is_newbar('M') ? LMHLCLow : math.min(LMHLCCurrentLow[1], LMHLCLow)
- LMHLCPreviousLow = 0.0
- LMHLCPreviousLow := is_newbar('M') ? LMHLCCurrentLow[1] : LMHLCPreviousLow[1]
- // Calc Close
- LMHLCPreviousClose = 0.0
- LMHLCPreviousClose := is_newbar('M') ? LMHLCClose[1] : LMHLCPreviousClose[1]
- var int LMCOTimeFromCalcA = 0
- var int LMHLCTimeToCalcA = 0
- if ta.change(time('M'))
- LMCOTimeFromCalcA := bar_index[1]
- LMHLCTimeToCalcA := bar_index
- LMHLCTimeToCalcA
- LMHLCTimeFromCalcB = bar_index[math.min(MajBarsSinseLMHLC, 300)]
- LMHLCTimeToCalcB = bar_index
- LMHLCTimeFrom = timeframe.isintraday ? LMHLCTimeFromCalcB : LMCOTimeFromCalcA
- LMHLCTimeTo = timeframe.isintraday ? LMHLCTimeToCalcB : LMHLCTimeToCalcA
- // LMHLCb = ShowLastWeeksHLC and WeeklyOrLess ? line.new(LMHLCTimeFrom, LMHLCPreviousClose, LMHLCTimeTo, LMHLCPreviousClose, color=color.blue, style = line.style_solid, extend = extend.right, width=LWHLCLineWidth) : na
- LMCb = ShowLastMonthsHLC ? line.new(LMHLCTimeFrom, LMHLCPreviousClose, LMHLCTimeTo, LMHLCPreviousClose, color=color.blue, style=line.style_solid, extend=extend.right, width=LMHLCLineWidth) : na
- LMHb = ShowLastMonthsHLC ? line.new(LMHLCTimeFrom, LMHLCPreviousHigh, LMHLCTimeTo, LMHLCPreviousHigh, color=color.green, style=line.style_solid, extend=extend.right, width=LMHLCLineWidth) : na
- LMLb = ShowLastMonthsHLC ? line.new(LMHLCTimeFrom, LMHLCPreviousLow, LMHLCTimeTo, LMHLCPreviousLow, color=color.red, style=line.style_solid, extend=extend.right, width=LMHLCLineWidth) : na
- // delete previous lines in the same period
- //if (not is_newbar(pp_res)// or not show_historical_levels)
- line.delete(LMCb[1])
- line.delete(LMHb[1])
- line.delete(LMLb[1])
- alertcondition(not is_newbar('M') and ta.cross(close, LMHLCPreviousClose), 'Crossing LM\'s Close', 'Crossing Last Months Close')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, LMHLCPreviousClose), "Crossover Last Months Close", "Crossover Last Months Close")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, LMHLCPreviousClose), "Crossunder Last Months Close", "Crossunder Last Months Close")
- alertcondition(not is_newbar('M') and ta.cross(close, LMHLCPreviousHigh), 'Crossing LM\'s High', 'Crossing Last Months High')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, LMHLCPreviousHigh), "Crossover Last Months High", "Crossover Last Weeks High")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, LMHLCPreviousHigh), "Crossunder Last Months High", "Crossunder Last Months High")
- alertcondition(not is_newbar('M') and ta.cross(close, LMHLCPreviousLow), 'Crossing LM\'s Low', 'Crossing Last Months Low')
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossover(close, LMHLCPreviousLow), "Crossover Last Months Low", "Crossover Last Weeks Low")
- // alertcondition(not is_newbar(MajPivotPointResolution) and crossunder(close, LMHLCPreviousLow), "Crossunder Last Months Low", "Crossunder Last Months Low")
Add Comment
Please, Sign In to add comment