Description
Here is a VWAP mod more suited to trend following.
Requires CC_RMA https://www.haasscripts.com/t/rma-mod/
HaasScript
DefineCommand("VWAP_", "VWAP Stdev Bands")
local interval = DefineParameter(NumberType, 'Interval', 'The time series interval', false, CurrentInterval(), 'InputInterval/CurrentInterval')
local vwapint = DefineParameter(NumberType, 'VWAPInterval', 'The time series interval for vwap reset', false, 10080, 'InputInterval/CurrentInterval')
local market = DefineParameter(DynamicType, 'Market', 'The market to calculate on', false, PriceMarket(), 'Input/PriceMarket()')
local plot = DefineParameter(BooleanType, 'Plot', 'Enable plotting the chart', false, true, 'true/false')
local chartindex = 0
local fullcdl = true
local hlc = false
local smooth = 2
local stDevMultiplier = 1
local close = HeikenClosePrices(1, fullcdl, market, hlc)
local hl2 = OHLCPrices(interval, fullcdl, market, hlc)
local volume = GetVolume(interval, fullcdl, market, hlc)
local trigger = Load('trigger', true)
local newSession = trigger == OptimizedForInterval(vwapint, function()
local trigger = Load('trigger', true)
Save('trigger', not trigger)
return trigger
end)
local vwapsum = Load('vwapsum', hl2*volume)
local volumesum = Load('volumesum', volume)
local v2sum = Load('v2sum', volume*hl2*hl2)
vwapsum = newSession and hl2*volume or vwapsum+hl2*volume
volumesum = newSession and volume or volumesum+volume
v2sum = newSession and volume*Pow(hl2, 2) or volume*Pow(hl2, 2)+v2sum
local vwap = vwapsum/volumesum
local variance = v2sum / volumesum - Pow(vwap, 2)
local variance = variance < 0 and 0 or variance
local stDev = Sqrt(variance)
local lowerBand = vwap - stDev * stDevMultiplier
local upperBand = vwap + stDev * stDevMultiplier
vwap = CC_RMA(vwap, smooth, {plot=false})
lowerBand = CC_RMA(lowerBand, smooth, {plot=false})
upperBand = CC_RMA(upperBand, smooth, {plot=false})
if plot == true then
local A,B,C
if vwap > 0 then
A=Plot(chartindex, "VWAP", vwap, {c=White})
B=Plot(chartindex, "VWAP-Upper", upperBand, {c=Red})
C=Plot(chartindex, "VWAP-Lower", lowerBand, {c=Teal})
end
PlotCircle(A, White(50))
PlotCircle(B, Red(50))
PlotCircle(C, Teal(50))
end
Save('vwapsum', vwapsum)
Save('volumesum', volumesum)
Save('v2sum', v2sum)
local cp = CurrentPrice()
local signal = IndicatorContainer(GetAboveBelowSignal(close, lowerBand), GetAboveBelowSignal(close, upperBand))
signal = IfElseIf(signal[1]!=SignalNone, signal[2]!=SignalNone, signal[1], signal[2], SignalNone)
PlotSignalEnum(-2, signal)
DefineOutput(DynamicType, signal, 'The signal')
0 Comments
Sign in to leave a comment.
No comments yet. Be the first!