Time Weighted Average Price (TWAP)

stable
By ajd1107 in Other Published November 2022 👁 1,185 views 💬 0 comments

Description

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!