Time Weighted Average Price (TWAP)
stableDescription
TWAP script with user defined intervals - first interval is to draw/plot/record TWAP values, second interval is the TWAP reset.
HaasScript
-- Author: Fogg
DefineCommand("TWAP", "User Defined TWAP")
local interval = DefineParameter(NumberType, 'Interval', 'The interval to draw the TWAP, defaults to Current Interval', false, CurrentInterval(), 'InputInterval/CurrentInterval')
local twapint = DefineParameter(NumberType, 'twapinterval', 'The time interval to reset the TWAP, defaults to 1D', false, 1440, 'InputInterval/CurrentInterval')
local plot = DefineParameter(BooleanType, 'Plot', 'Enable plotting the chart, defaults to true', false, true, 'true/false')
local ohlc4 = OHLCPrices(interval, true, PriceMarket(), true)
local trigger = Load('trigger', true)
local newSession = trigger == OptimizedForInterval(twapint, function()
local trigger = Load('trigger', true)
Save('trigger', not trigger)
return trigger
end)
local twapsum = Load('twapsum', ohlc4)
local countersum = Load('countersum', countersum)
local counter = 1
twapsum = newSession and ohlc4 or twapsum+ohlc4
countersum = newSession and counter or countersum+counter
local twap = twapsum/countersum
if plot == true then
local X
if twap > 0 then
X=Plot(0, "TWAP", twap, {c=Cyan})
end
PlotCircle(X, Cyan(50))
end
Save('twapsum', twapsum)
Save('countersum', countersum)
DefineOutput(ListNumberType, twap, 'TWAP')
0 Comments
Sign in to leave a comment.
No comments yet. Be the first!