Correctly load order mode for first fqsn in overlay set
parent
dc88364253
commit
a82911d8a9
|
@ -1049,6 +1049,10 @@ async def display_symbol_data(
|
|||
group_key=True
|
||||
)
|
||||
|
||||
# (TODO: make this not so shit XD)
|
||||
# close group status once a symbol feed fully loads to view.
|
||||
# sbar._status_groups[loading_sym_key][1]()
|
||||
|
||||
# TODO: ctl over update loop's maximum frequency.
|
||||
# - load this from a config.toml!
|
||||
# - allow dyanmic configuration from chart UI?
|
||||
|
@ -1131,6 +1135,8 @@ async def display_symbol_data(
|
|||
# and sub-charts for FSPs
|
||||
fqsn, flume = fitems[0]
|
||||
|
||||
# TODO NOTE: THIS CONTROLS WHAT SYMBOL IS USED FOR ORDER MODE
|
||||
# SUBMISSIONS, we need to make this switch based on selection.
|
||||
rt_linked._symbol = flume.symbol
|
||||
hist_linked._symbol = flume.symbol
|
||||
|
||||
|
@ -1221,9 +1227,6 @@ async def display_symbol_data(
|
|||
# get a new color from the palette
|
||||
bg_chart_color, bg_last_bar_color = next(palette)
|
||||
|
||||
rt_linked._symbol = flume.symbol
|
||||
hist_linked._symbol = flume.symbol
|
||||
|
||||
ohlcv: ShmArray = flume.rt_shm
|
||||
hist_ohlcv: ShmArray = flume.hist_shm
|
||||
|
||||
|
@ -1234,9 +1237,14 @@ async def display_symbol_data(
|
|||
name=fqsn,
|
||||
axis_title=fqsn,
|
||||
)
|
||||
hist_pi.hideAxis('left')
|
||||
# only show a singleton bottom-bottom axis by default.
|
||||
hist_pi.hideAxis('bottom')
|
||||
|
||||
# XXX: TODO: THIS WILL CAUSE A GAP ON OVERLAYS,
|
||||
# i think it needs to be "removed" instead when there
|
||||
# are none?
|
||||
hist_pi.hideAxis('left')
|
||||
|
||||
viz = hist_chart.draw_curve(
|
||||
fqsn,
|
||||
hist_ohlcv,
|
||||
|
@ -1313,36 +1321,14 @@ async def display_symbol_data(
|
|||
|
||||
# XXX: if we wanted it at the bottom?
|
||||
# rt_linked.splitter.addWidget(hist_linked)
|
||||
rt_linked.focus()
|
||||
|
||||
godwidget.resize_all()
|
||||
|
||||
# add all additional symbols as overlays
|
||||
# greedily do a view range default and pane resizing
|
||||
# on startup before loading the order-mode machinery.
|
||||
for fqsn, flume in feed.flumes.items():
|
||||
|
||||
# size view to data prior to order mode init
|
||||
rt_chart.default_view()
|
||||
rt_linked.graphics_cycle()
|
||||
await trio.sleep(0)
|
||||
|
||||
hist_chart.default_view(
|
||||
bars_from_y=int(len(hist_ohlcv.array)), # size to data
|
||||
y_offset=6116*2, # push it a little away from the y-axis
|
||||
)
|
||||
hist_linked.graphics_cycle()
|
||||
await trio.sleep(0)
|
||||
|
||||
godwidget.resize_all()
|
||||
|
||||
# trigger another view reset if no sub-chart
|
||||
hist_chart.default_view()
|
||||
rt_chart.default_view()
|
||||
# let qt run to render all widgets and make sure the
|
||||
# sidepanes line up vertically.
|
||||
await trio.sleep(0)
|
||||
|
||||
# dynamic resize steps
|
||||
godwidget.resize_all()
|
||||
|
||||
# TODO: look into this because not sure why it was
|
||||
# commented out / we ever needed it XD
|
||||
|
@ -1352,21 +1338,11 @@ async def display_symbol_data(
|
|||
# determine if auto-range adjustements should be made.
|
||||
# rt_linked.subplots.pop('volume', None)
|
||||
|
||||
# TODO: make this not so shit XD
|
||||
# close group status
|
||||
# sbar._status_groups[loading_sym_key][1]()
|
||||
|
||||
hist_chart.default_view()
|
||||
hist_linked.graphics_cycle()
|
||||
rt_chart.default_view()
|
||||
await trio.sleep(0)
|
||||
|
||||
bars_in_mem = int(len(hist_ohlcv.array))
|
||||
hist_chart.default_view(
|
||||
bars_from_y=bars_in_mem, # size to data
|
||||
# push it 1/16th away from the y-axis
|
||||
y_offset=round(bars_in_mem / 16),
|
||||
)
|
||||
godwidget.resize_all()
|
||||
await trio.sleep(0)
|
||||
|
||||
await link_views_with_region(
|
||||
rt_chart,
|
||||
|
@ -1374,7 +1350,7 @@ async def display_symbol_data(
|
|||
flume,
|
||||
)
|
||||
|
||||
# start graphics update loop after receiving first live quote
|
||||
# start update loop task
|
||||
ln.start_soon(
|
||||
graphics_update_loop,
|
||||
ln,
|
||||
|
@ -1385,20 +1361,31 @@ async def display_symbol_data(
|
|||
vlm_charts,
|
||||
)
|
||||
|
||||
# boot order-mode
|
||||
order_ctl_symbol: str = fqsns[0]
|
||||
mode: OrderMode
|
||||
async with (
|
||||
open_order_mode(
|
||||
feed,
|
||||
godwidget,
|
||||
fqsns[-1],
|
||||
fqsns[0],
|
||||
order_mode_started
|
||||
) as mode
|
||||
):
|
||||
|
||||
rt_linked.mode = mode
|
||||
|
||||
viz = rt_chart.get_viz(order_ctl_symbol)
|
||||
viz.plot.setFocus()
|
||||
|
||||
# default view adjuments and sidepane alignment
|
||||
# as final default UX touch.
|
||||
rt_chart.default_view()
|
||||
rt_chart.view.enable_auto_yrange()
|
||||
|
||||
hist_chart.default_view()
|
||||
hist_chart.view.enable_auto_yrange()
|
||||
|
||||
godwidget.resize_all()
|
||||
|
||||
await trio.sleep_forever() # let the app run.. bby
|
||||
|
|
|
@ -349,7 +349,7 @@ class OrderMode:
|
|||
|
||||
'''
|
||||
if not order:
|
||||
staged = self._staged_order
|
||||
staged: Order = self._staged_order
|
||||
# apply order fields for ems
|
||||
oid = str(uuid.uuid4())
|
||||
order = staged.copy()
|
||||
|
@ -703,7 +703,6 @@ async def open_order_mode(
|
|||
|
||||
# symbol id
|
||||
symbol = chart.linked.symbol
|
||||
symkey = symbol.front_fqsn()
|
||||
|
||||
# map of per-provider account keys to position tracker instances
|
||||
trackers: dict[str, PositionTracker] = {}
|
||||
|
@ -864,7 +863,7 @@ async def open_order_mode(
|
|||
# the expected symbol key in its positions msg.
|
||||
for (broker, acctid), msgs in position_msgs.items():
|
||||
for msg in msgs:
|
||||
log.info(f'Loading pp for {symkey}:\n{pformat(msg)}')
|
||||
log.info(f'Loading pp for {acctid}@{broker}:\n{pformat(msg)}')
|
||||
await process_trade_msg(
|
||||
mode,
|
||||
book,
|
||||
|
|
Loading…
Reference in New Issue