[HaasScriptPrices] HSP: HighSpeedPrices

stable
By Kobalt in Miscellaneous Published October 2020 👁 1,636 views 💬 0 comments

Description

OneForAll ..prices.. in HighSpeed resolution great for calculating higher timeframes and a one stop shop for what you need. Based on Pshai\'s HighSpeedPrices returns o, h, l, c, v, a, b, hl, hlc, hlcc, ohlc data arrays with latest ticker data added. Added: ask, bid, hlcc - Weighted Close Price. OutputIndex 1-7 matches included CurrentPrice: object key order. kO_b 2do: - log+compare to Indicator price versions i.e. MEDIAN, MED, AVG etc under Technical Analysis commands in HTS. - check to include MIDPRICE/POINT and rest in VE test Needs: review by pshai [CHECKED, APPROVED]. Some testing. then 2: HSVolumes.. Bid, Ask, RecentTrades=Traded==xAsk, xBid, size filtered, aggregated, cumulative, easy deltas. (for imbalances, bas, order depth...all that.....)_ [not yet included]..
HaasScript
DefineCommand('HSP', 'Returns o, h, l, c, v, a, b, hl, hlc, hlcc, ohlc data arrays with latest ticker data added. Based on Pshai\'s [HighSpeedPrices Returns OHLCV] Added: ask, bid (changed OutputIndex 1-7 so it matches included CurrentPrice: ohlcvab object key order) and Weighted Close Price to get All variations on price found in HTS')

local interval = DefineParameter(NumberType, 'interval', 'Price data interval', false, 0, 'InputInterval, Number')
local market = DefineParameter(StringType, 'market', 'Market for data', false, PriceMarket(), 'PriceMarket, InputMarket, InputAccountMarket')
local hlcStyle = DefineParameter(BooleanType, 'hlcStyle', 'When enabled, the data returned will be adjusted for HLC instead of OHLC. Meaning that the OHL data can change.', false, false, 'True, False, Input')

local roundDown = function(x, a)
    return x - (x % a)
end
if interval == 0 then interval = CurrentInterval() end

local time = roundDown(Time(), interval * 60)
local time2 = roundDown(Time(), 60)
local cp = CurrentPrice(market)
local fo = Load('fo')
local fh = Load('fh')
local fl = Load('fl')
local fc = Load('fc')
local fv = Load('fv')
local fa = Load('fa')
local fb = Load('fb')

if Load('pt', 0) != time then
    fo = cp.open
    fh = cp.high
    fl = cp.low
    fc = cp.close
    fv = cp.volume
    fa = cp.ask
    fb = cp.bid
    Save('pt', time)
    Save('pt2', time2)
else
   
    fh = ArrayGet(Max(fh, cp.high), 1)
    fl = ArrayGet(Min(fl, cp.low), 1)

    if Load('pt2', 0) != time2 then
        fv = fv + cp.volume
        Save('pt2', time2)
    end
end

Save('fo', fo)
Save('fh', fh)
Save('fl', fl)
Save('fc', fc)
Save('fv', fv)
Save('fa', fa)
Save('fb', fb)

local o = OpenPrices(interval, true, market, hlcStyle)
local h = HighPrices(interval, true, market, hlcStyle)
local l = LowPrices(interval, true, market, hlcStyle)
local c = ClosePrices(interval, true, market, hlcStyle)
local v = GetVolume(interval, true, market, hlcStyle)
local a = AskPrices(interval, true, market, hlcStyle)
local b = BidPrices(interval, true, market, hlcStyle)
local hl = HLPrices(interval, true, market, hlcStyle)
local hlc = HLCPrices(interval, true, market, hlcStyle)
local hlcc = HLCPrices(interval, true, market, hlcStyle)
local ohlc = OHLCPrices(interval, true, market, hlcStyle)

o = ArrayUnshift(o, fo)
h = ArrayUnshift(h, fh)
l = ArrayUnshift(l, fl)
c = ArrayUnshift(c, cp.close)
v = ArrayUnshift(v, fv)
a = ArrayUnshift(a, fa)
b = ArrayUnshift(b, fb)
hl = ArrayUnshift(hl, (fh + fl) / 2)
hlc = ArrayUnshift(hlc, (fh + fl + cp.close) / 3)
hlcc = ArrayUnshift(hlcc, (fh + fl + c + cp.close) / 4)
ohlc = ArrayUnshift(ohlc, (fo + fh + fl + cp.close) / 4)

local result = {
    open = o,
    high = h,
    low = l,
    close = c,
    volume = v,
    ask = a,
    bid = b,
    median = hl,
    typical = hlc,
    weightedclose = hlcc,
    average = ohlc
    }

DefineOutput(ListDynamicType, result)
DefineOutputIndex(1, ListNumberType, 'open', 'Open prices')
DefineOutputIndex(2, ListNumberType, 'high', 'High prices')
DefineOutputIndex(3, ListNumberType, 'low', 'Low prices')
DefineOutputIndex(4, ListNumberType, 'close', 'Close prices')
DefineOutputIndex(5, ListNumberType, 'volume', 'Volumes')
DefineOutputIndex(6, ListNumberType, 'ask', 'Ask prices')
DefineOutputIndex(7, ListNumberType, 'bid', 'Bid prices')
DefineOutputIndex(8, ListNumberType, 'hl', 'Median prices')
DefineOutputIndex(9, ListNumberType, 'hlc', 'Typical prices')
DefineOutputIndex(10, ListNumberType, 'hlcc', 'Weighted Close prices') 
DefineOutputIndex(11, ListNumberType, 'ohlc', 'Average prices')

0 Comments

Sign in to leave a comment.

No comments yet. Be the first!