Look up "index field" in display cycles
Again, to make epoch indexing a flip-of-switch for testing look up the `Viz.index_field: str` value when updating labels. Also, drops the legacy tick-type set tracking which we no longer use thanks to the new throttler subsys and it's framing msgs.pre_viz_calls
parent
a7cebc0026
commit
1144b3f2f5
|
@ -301,17 +301,25 @@ async def graphics_update_loop(
|
||||||
fqsn = symbol.fqsn
|
fqsn = symbol.fqsn
|
||||||
|
|
||||||
# update last price sticky
|
# update last price sticky
|
||||||
fast_pi = fast_chart._vizs[fqsn].plot
|
fast_viz = fast_chart._vizs[fqsn]
|
||||||
|
index_field = fast_viz.index_field
|
||||||
|
fast_pi = fast_viz.plot
|
||||||
last_price_sticky = fast_pi.getAxis('right')._stickies[fqsn]
|
last_price_sticky = fast_pi.getAxis('right')._stickies[fqsn]
|
||||||
last_price_sticky.update_from_data(
|
last_price_sticky.update_from_data(
|
||||||
*ohlcv.array[-1][['index', 'close']]
|
*ohlcv.array[-1][[
|
||||||
|
index_field,
|
||||||
|
'close',
|
||||||
|
]]
|
||||||
)
|
)
|
||||||
last_price_sticky.show()
|
last_price_sticky.show()
|
||||||
|
|
||||||
slow_pi = hist_chart._vizs[fqsn].plot
|
slow_pi = hist_chart._vizs[fqsn].plot
|
||||||
hist_last_price_sticky = slow_pi.getAxis('right')._stickies[fqsn]
|
hist_last_price_sticky = slow_pi.getAxis('right')._stickies[fqsn]
|
||||||
hist_last_price_sticky.update_from_data(
|
hist_last_price_sticky.update_from_data(
|
||||||
*hist_ohlcv.array[-1][['index', 'close']]
|
*hist_ohlcv.array[-1][[
|
||||||
|
index_field,
|
||||||
|
'close',
|
||||||
|
]]
|
||||||
)
|
)
|
||||||
|
|
||||||
vlm_chart = vlm_charts[fqsn]
|
vlm_chart = vlm_charts[fqsn]
|
||||||
|
@ -513,12 +521,12 @@ def graphics_update_cycle(
|
||||||
chart = ds.chart
|
chart = ds.chart
|
||||||
# TODO: just pass this as a direct ref to avoid so many attr accesses?
|
# TODO: just pass this as a direct ref to avoid so many attr accesses?
|
||||||
hist_chart = ds.godwidget.hist_linked.chart
|
hist_chart = ds.godwidget.hist_linked.chart
|
||||||
assert hist_chart
|
|
||||||
|
|
||||||
flume = ds.flume
|
flume = ds.flume
|
||||||
sym = flume.symbol
|
sym = flume.symbol
|
||||||
fqsn = sym.fqsn
|
fqsn = sym.fqsn
|
||||||
main_viz = chart._vizs[fqsn]
|
main_viz = chart._vizs[fqsn]
|
||||||
|
index_field = main_viz.index_field
|
||||||
|
|
||||||
profiler = Profiler(
|
profiler = Profiler(
|
||||||
msg=f'Graphics loop cycle for: `{chart.name}`',
|
msg=f'Graphics loop cycle for: `{chart.name}`',
|
||||||
|
@ -605,7 +613,7 @@ def graphics_update_cycle(
|
||||||
# if the segment of history that is being prepended
|
# if the segment of history that is being prepended
|
||||||
# isn't in view there is no reason to do a graphics
|
# isn't in view there is no reason to do a graphics
|
||||||
# update.
|
# update.
|
||||||
log.debug('Skipping prepend graphics cycle: frame not in view')
|
log.info('Skipping prepend graphics cycle: frame not in view')
|
||||||
return
|
return
|
||||||
|
|
||||||
# TODO: eventually we want to separate out the utrade (aka
|
# TODO: eventually we want to separate out the utrade (aka
|
||||||
|
@ -637,11 +645,6 @@ def graphics_update_cycle(
|
||||||
# do_append=do_append,
|
# do_append=do_append,
|
||||||
)
|
)
|
||||||
|
|
||||||
# NOTE: we always update the "last" datum
|
|
||||||
# since the current range should at least be updated
|
|
||||||
# to it's max/min on the last pixel.
|
|
||||||
typs: set[str] = set()
|
|
||||||
|
|
||||||
# from pprint import pformat
|
# from pprint import pformat
|
||||||
# frame_counts = {
|
# frame_counts = {
|
||||||
# typ: len(frame) for typ, frame in frames_by_type.items()
|
# typ: len(frame) for typ, frame in frames_by_type.items()
|
||||||
|
@ -665,11 +668,6 @@ def graphics_update_cycle(
|
||||||
price = tick.get('price')
|
price = tick.get('price')
|
||||||
size = tick.get('size')
|
size = tick.get('size')
|
||||||
|
|
||||||
if typ in typs:
|
|
||||||
continue
|
|
||||||
|
|
||||||
typs.add(typ)
|
|
||||||
|
|
||||||
# compute max and min prices (including bid/ask) from
|
# compute max and min prices (including bid/ask) from
|
||||||
# tick frames to determine the y-range for chart
|
# tick frames to determine the y-range for chart
|
||||||
# auto-scaling.
|
# auto-scaling.
|
||||||
|
@ -679,7 +677,6 @@ def graphics_update_cycle(
|
||||||
mn = min(price - tick_margin, mn)
|
mn = min(price - tick_margin, mn)
|
||||||
|
|
||||||
if typ in clear_types:
|
if typ in clear_types:
|
||||||
|
|
||||||
# XXX: if we only wanted to update graphics from the
|
# XXX: if we only wanted to update graphics from the
|
||||||
# "current"/"latest received" clearing price tick
|
# "current"/"latest received" clearing price tick
|
||||||
# once (see alt iteration order above).
|
# once (see alt iteration order above).
|
||||||
|
@ -692,7 +689,10 @@ def graphics_update_cycle(
|
||||||
# set.
|
# set.
|
||||||
|
|
||||||
# update price sticky(s)
|
# update price sticky(s)
|
||||||
end_ic = array[-1][['index', 'close']]
|
end_ic = array[-1][[
|
||||||
|
index_field,
|
||||||
|
'close',
|
||||||
|
]]
|
||||||
ds.last_price_sticky.update_from_data(*end_ic)
|
ds.last_price_sticky.update_from_data(*end_ic)
|
||||||
ds.hist_last_price_sticky.update_from_data(*end_ic)
|
ds.hist_last_price_sticky.update_from_data(*end_ic)
|
||||||
|
|
||||||
|
@ -825,7 +825,10 @@ def graphics_update_cycle(
|
||||||
|
|
||||||
# always update y-label
|
# always update y-label
|
||||||
ds.vlm_sticky.update_from_data(
|
ds.vlm_sticky.update_from_data(
|
||||||
*array[-1][['index', 'volume']]
|
*array[-1][[
|
||||||
|
index_field,
|
||||||
|
'volume',
|
||||||
|
]]
|
||||||
)
|
)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -1122,7 +1125,7 @@ async def display_symbol_data(
|
||||||
# avoiding needless Qt-in-guest-mode context switches
|
# avoiding needless Qt-in-guest-mode context switches
|
||||||
tick_throttle=min(
|
tick_throttle=min(
|
||||||
round(_quote_throttle_rate/len(fqsns)),
|
round(_quote_throttle_rate/len(fqsns)),
|
||||||
22,
|
22, # aka 6 + 16
|
||||||
),
|
),
|
||||||
|
|
||||||
) as feed:
|
) as feed:
|
||||||
|
@ -1372,8 +1375,7 @@ async def display_symbol_data(
|
||||||
# trigger another view reset if no sub-chart
|
# trigger another view reset if no sub-chart
|
||||||
hist_chart.default_view()
|
hist_chart.default_view()
|
||||||
rt_chart.default_view()
|
rt_chart.default_view()
|
||||||
|
# let qt run to render all widgets and make sure the
|
||||||
# let Qt run to render all widgets and make sure the
|
|
||||||
# sidepanes line up vertically.
|
# sidepanes line up vertically.
|
||||||
await trio.sleep(0)
|
await trio.sleep(0)
|
||||||
|
|
||||||
|
@ -1421,9 +1423,6 @@ async def display_symbol_data(
|
||||||
vlm_charts,
|
vlm_charts,
|
||||||
)
|
)
|
||||||
|
|
||||||
rt_chart.default_view()
|
|
||||||
await trio.sleep(0)
|
|
||||||
|
|
||||||
mode: OrderMode
|
mode: OrderMode
|
||||||
async with (
|
async with (
|
||||||
open_order_mode(
|
open_order_mode(
|
||||||
|
|
Loading…
Reference in New Issue