kraken: drop `OHLC.ticks` field and just inject to quote before send

basic_buy_bot
Tyler Goodlet 2023-06-20 14:33:32 -04:00
parent 65f2549d90
commit d9708e28c8
1 changed files with 14 additions and 14 deletions

View File

@ -65,7 +65,7 @@ from .api import (
)
class OHLC(Struct):
class OHLC(Struct, frozen=True):
'''
Description of the flattened OHLC quote format.
@ -76,6 +76,8 @@ class OHLC(Struct):
chan_id: int # internal kraken id
chan_name: str # eg. ohlc-1 (name-interval)
pair: str # fx pair
# unpacked from array
time: float # Begin time of interval, in seconds since epoch
etime: float # End time of interval, in seconds since epoch
open: float # Open price of interval
@ -85,8 +87,6 @@ class OHLC(Struct):
vwap: float # Volume weighted average price within interval
volume: float # Accumulated volume **within interval**
count: int # Number of trades within interval
# (sampled) generated tick data
ticks: list[Any] = []
async def stream_messages(
@ -150,14 +150,15 @@ async def process_data_feed_msgs(
pair
]:
if 'ohlc' in chan_name:
array: list = payload_array[0]
ohlc = OHLC(
chan_id,
chan_name,
pair,
*payload_array[0]
*map(float, array[:-1]),
count=array[-1],
)
ohlc.typecast()
yield 'ohlc', ohlc
yield 'ohlc', ohlc.copy()
elif 'spread' in chan_name:
@ -430,7 +431,7 @@ async def stream_quotes(
feed_is_live.set()
# keep start of last interval for volume tracking
last_interval_start = ohlc_last.etime
last_interval_start: float = ohlc_last.etime
# start streaming
topic: str = mkt.bs_fqme
@ -448,24 +449,23 @@ async def stream_quotes(
# new OHLC sample interval
if quote.etime > last_interval_start:
last_interval_start = quote.etime
tick_volume = volume
last_interval_start: float = quote.etime
tick_volume: float = volume
else:
# this is the tick volume *within the interval*
tick_volume = volume - ohlc_last.volume
tick_volume: float = volume - ohlc_last.volume
ohlc_last = quote
last = quote.close
quote = normalize(quote)
if tick_volume:
quote.ticks.append({
quote['ticks'] = [{
'type': 'trade',
'price': last,
'size': tick_volume,
})
quote = normalize(quote)
}]
case 'l1':
# passthrough quote msg