VWMA Reversion Bands
stableDescription
Optimized Reversion Bands based on VWMA. Will signal long/short when bid/ask breaches first level of bands. These are excellent in Ranging markets, but can be dangerous at the onset of a strong trend. Bands filter VWMA values through a STDDEV() indicator to dampen out extremes.
Requires Pshai's VWMA v2 Indicator:
https://www.haasscripts.com/t/pshaicmd-vwma-v2-optimized/
HaasScript
-- Author: Fogg
-- VWMA Reversion Bands
-- Great in Ranging Markets, Beware of strong trends!
DefineCommand('VWMA_Bands', 'VWMA Reversion Bands')
local int = DefineParameter(NumberType, 'interval', '', false, CurrentInterval(), 'Number, InputInterval')
local length = DefineParameter(NumberType, 'VWMA Length', 'VWMA Period Length', true, 50, 'VMWA Period Length')
local multiplier = DefineParameter(NumberType, 'Deviation Multiplier', 'Deviation Multiplier', true, 2.618, 'Deviation from VWMA for first band')
--
local vol = GetVolume(int)
local p = ClosePrices(int, true)
local outer = multiplier + 1
local outer1 = multiplier + 2
local outer2 = multiplier + 3
local extreme = multiplier + 4
local upperband, lowerband = OptimizedForInterval(
int, function()
local vwma = CC_VWMA_v2(p, vol, length)
local av = (p - vwma)/vwma
local dev = STDDEV(av, length, 1) * vwma
local devup = vwma + av + dev * multiplier
local devdn = vwma + av - dev * multiplier
local devup2 = vwma + av + dev * outer
local devdn2 = vwma + av - dev * outer
local devup3 = vwma + av + dev * outer1
local devdn3 = vwma + av - dev * outer1
local devup4 = vwma + av + dev * outer2
local devdn4 = vwma + av - dev * outer2
local devup5 = vwma + av + dev * extreme
local devdn5 = vwma + av - dev * extreme
Plot(0, 'vwma', vwma, Cyan)
local U1 = Plot(0, 'devup', devup, Maroon(0))
local D1 = Plot(0, 'devdn', devdn, Teal(0))
local U2 = Plot(0, 'devup2', devup2, Maroon(0))
local D2 = Plot(0, 'devdn2', devdn2, Teal(0))
local U3 = Plot(0, 'devup3', devup3, Maroon(0))
local D3 = Plot(0, 'devdn3', devdn3, Teal(0))
local U4 = Plot(0, 'devup4', devup4, Maroon(0))
local D4 = Plot(0, 'devdn4', devdn4, Teal(0))
local U5 = Plot(0, 'devup5', devup5, Maroon(10))
local D5 = Plot(0, 'devdn5', devdn5, Teal(10))
PlotBands(U1, U2, Maroon(50))
PlotBands(D1, D2, Teal(50))
PlotBands(U2, U3, Maroon(40))
PlotBands(D2, D3, Teal(40))
PlotBands(U3, U4, Maroon(30))
PlotBands(D3, D4, Teal(30))
PlotBands(U4, U5, Maroon(20))
PlotBands(D4, D5, Teal(20))
return devup, devdn
end)
local signal = SignalNone
local cp = CurrentPrice()
if cp.bid >= upperband then
signal = SignalShort
end
if cp.ask <= lowerband then
signal = SignalLong
end
PlotSignalEnum(-2, signal)
DefineOutput(EnumType, signal, 'The signal')
0 Comments
Sign in to leave a comment.
No comments yet. Be the first!