Pop vlm chart from subplots to avoid double render
parent
56f9ddb880
commit
e4bf3a5fe4
|
@ -115,13 +115,14 @@ async def update_linked_charts_graphics(
|
||||||
vlm_chart: Optional[ChartPlotWidget] = None,
|
vlm_chart: Optional[ChartPlotWidget] = None,
|
||||||
|
|
||||||
) -> None:
|
) -> None:
|
||||||
'''The 'main' (price) chart real-time update loop.
|
'''
|
||||||
|
The 'main' (price) chart real-time update loop.
|
||||||
|
|
||||||
Receive from the primary instrument quote stream and update the OHLC
|
Receive from the primary instrument quote stream and update the OHLC
|
||||||
chart.
|
chart.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
# TODO: bunch of stuff:
|
# TODO: bunch of stuff (some might be done already, can't member):
|
||||||
# - I'm starting to think all this logic should be
|
# - I'm starting to think all this logic should be
|
||||||
# done in one place and "graphics update routines"
|
# done in one place and "graphics update routines"
|
||||||
# should not be doing any length checking and array diffing.
|
# should not be doing any length checking and array diffing.
|
||||||
|
@ -181,13 +182,34 @@ async def update_linked_charts_graphics(
|
||||||
view = chart.view
|
view = chart.view
|
||||||
last_quote = time.time()
|
last_quote = time.time()
|
||||||
|
|
||||||
|
# async def iter_drain_quotes():
|
||||||
|
# # NOTE: all code below this loop is expected to be synchronous
|
||||||
|
# # and thus draw instructions are not picked up jntil the next
|
||||||
|
# # wait / iteration.
|
||||||
|
# async for quotes in stream:
|
||||||
|
# while True:
|
||||||
|
# try:
|
||||||
|
# moar = stream.receive_nowait()
|
||||||
|
# except trio.WouldBlock:
|
||||||
|
# yield quotes
|
||||||
|
# break
|
||||||
|
# else:
|
||||||
|
# for sym, quote in moar.items():
|
||||||
|
# ticks_frame = quote.get('ticks')
|
||||||
|
# if ticks_frame:
|
||||||
|
# quotes[sym].setdefault(
|
||||||
|
# 'ticks', []).extend(ticks_frame)
|
||||||
|
# print('pulled extra')
|
||||||
|
|
||||||
|
# yield quotes
|
||||||
|
|
||||||
|
# async for quotes in iter_drain_quotes():
|
||||||
|
|
||||||
async for quotes in stream:
|
async for quotes in stream:
|
||||||
|
|
||||||
now = time.time()
|
|
||||||
quote_period = time.time() - last_quote
|
quote_period = time.time() - last_quote
|
||||||
quote_rate = round(
|
quote_rate = round(
|
||||||
1/quote_period, 1) if quote_period > 0 else float('inf')
|
1/quote_period, 1) if quote_period > 0 else float('inf')
|
||||||
|
|
||||||
if (
|
if (
|
||||||
quote_period <= 1/_quote_throttle_rate
|
quote_period <= 1/_quote_throttle_rate
|
||||||
|
|
||||||
|
@ -196,7 +218,8 @@ async def update_linked_charts_graphics(
|
||||||
and quote_rate >= _quote_throttle_rate * 1.5
|
and quote_rate >= _quote_throttle_rate * 1.5
|
||||||
):
|
):
|
||||||
log.warning(f'High quote rate {symbol.key}: {quote_rate}')
|
log.warning(f'High quote rate {symbol.key}: {quote_rate}')
|
||||||
last_quote = now
|
|
||||||
|
last_quote = time.time()
|
||||||
|
|
||||||
# chart isn't active/shown so skip render cycle and pause feed(s)
|
# chart isn't active/shown so skip render cycle and pause feed(s)
|
||||||
if chart.linked.isHidden():
|
if chart.linked.isHidden():
|
||||||
|
@ -621,9 +644,15 @@ async def display_symbol_data(
|
||||||
await trio.sleep(0)
|
await trio.sleep(0)
|
||||||
linkedsplits.resize_sidepanes()
|
linkedsplits.resize_sidepanes()
|
||||||
|
|
||||||
|
# NOTE: we pop the volume chart from the subplots set so
|
||||||
|
# that it isn't double rendered in the display loop
|
||||||
|
# above since we do a maxmin calc on the volume data to
|
||||||
|
# determine if auto-range adjustements should be made.
|
||||||
|
linkedsplits.subplots.pop('volume', None)
|
||||||
|
|
||||||
# TODO: make this not so shit XD
|
# TODO: make this not so shit XD
|
||||||
# close group status
|
# close group status
|
||||||
sbar._status_groups[loading_sym_key][1]()
|
sbar._status_groups[loading_sym_key][1]()
|
||||||
|
|
||||||
# let the app run.
|
# let the app run.. bby
|
||||||
await trio.sleep_forever()
|
await trio.sleep_forever()
|
||||||
|
|
Loading…
Reference in New Issue