Initial draft code working with `pg.LinearRegionItem`
parent
97b074365b
commit
55fc4114b4
|
@ -63,7 +63,7 @@ from ..log import get_logger
|
||||||
log = get_logger(__name__)
|
log = get_logger(__name__)
|
||||||
|
|
||||||
# TODO: load this from a config.toml!
|
# TODO: load this from a config.toml!
|
||||||
_quote_throttle_rate: int = 22 # Hz
|
_quote_throttle_rate: int = 16 # Hz
|
||||||
|
|
||||||
|
|
||||||
# a working tick-type-classes template
|
# a working tick-type-classes template
|
||||||
|
@ -719,15 +719,17 @@ async def display_symbol_data(
|
||||||
tick_throttle=_quote_throttle_rate,
|
tick_throttle=_quote_throttle_rate,
|
||||||
|
|
||||||
) as feed:
|
) as feed:
|
||||||
ohlcv: ShmArray = feed.shm
|
ohlcv: ShmArray = feed.rt_shm
|
||||||
bars = ohlcv.array
|
bars = ohlcv.array
|
||||||
symbol = feed.symbols[sym]
|
symbol = feed.symbols[sym]
|
||||||
fqsn = symbol.front_fqsn()
|
fqsn = symbol.front_fqsn()
|
||||||
|
|
||||||
times = bars['time']
|
times = feed.hist_shm.array['time']
|
||||||
end = pendulum.from_timestamp(times[-1])
|
end = pendulum.from_timestamp(times[-1])
|
||||||
start = pendulum.from_timestamp(times[times != times[-1]][-1])
|
# start = pendulum.from_timestamp(times[times != times[-1]][-1])
|
||||||
step_size_s = (end - start).seconds
|
# step_size_s = (end - start).seconds
|
||||||
|
|
||||||
|
step_size_s = 1
|
||||||
tf_key = tf_in_1s[step_size_s]
|
tf_key = tf_in_1s[step_size_s]
|
||||||
|
|
||||||
# load in symbol's ohlc data
|
# load in symbol's ohlc data
|
||||||
|
@ -753,7 +755,8 @@ async def display_symbol_data(
|
||||||
ohlcv,
|
ohlcv,
|
||||||
sidepane=pp_pane,
|
sidepane=pp_pane,
|
||||||
)
|
)
|
||||||
chart.default_view()
|
|
||||||
|
# chart.default_view()
|
||||||
chart._feeds[symbol.key] = feed
|
chart._feeds[symbol.key] = feed
|
||||||
chart.setFocus()
|
chart.setFocus()
|
||||||
|
|
||||||
|
@ -773,7 +776,38 @@ async def display_symbol_data(
|
||||||
# )
|
# )
|
||||||
|
|
||||||
# size view to data once at outset
|
# size view to data once at outset
|
||||||
chart.cv._set_yrange()
|
# chart.cv._set_yrange()
|
||||||
|
|
||||||
|
# Add the LinearRegionItem to the ViewBox, but tell the ViewBox
|
||||||
|
# to exclude this item when doing auto-range calculations.
|
||||||
|
hist_pi = chart.plotItem
|
||||||
|
region = pg.LinearRegionItem()
|
||||||
|
region.setZValue(10)
|
||||||
|
# hist_pi.addItem(region, ignoreBounds=True)
|
||||||
|
flow = chart._flows[chart.name]
|
||||||
|
region.setClipItem(flow.graphics)
|
||||||
|
|
||||||
|
def update():
|
||||||
|
region.setZValue(10)
|
||||||
|
minX, maxX = region.getRegion()
|
||||||
|
# p1.setXRange(minX, maxX, padding=0)
|
||||||
|
|
||||||
|
region.sigRegionChanged.connect(update)
|
||||||
|
|
||||||
|
def update_region_from_pi(
|
||||||
|
window,
|
||||||
|
viewRange: tuple[tuple, tuple],
|
||||||
|
) -> None:
|
||||||
|
# set the region on the history chart
|
||||||
|
# to the range currently viewed in the
|
||||||
|
# HFT/real-time chart.
|
||||||
|
rgn = viewRange[0]
|
||||||
|
# region.setRegion(rgn)
|
||||||
|
|
||||||
|
# connect region to be updated on plotitem interaction.
|
||||||
|
hist_pi.sigRangeChanged.connect(update_region_from_pi)
|
||||||
|
# causes recursion error right now!?..
|
||||||
|
# region.setRegion([l, r])
|
||||||
|
|
||||||
# NOTE: we must immediately tell Qt to show the OHLC chart
|
# NOTE: we must immediately tell Qt to show the OHLC chart
|
||||||
# to avoid a race where the subplots get added/shown to
|
# to avoid a race where the subplots get added/shown to
|
||||||
|
@ -816,6 +850,10 @@ async def display_symbol_data(
|
||||||
vlm_chart,
|
vlm_chart,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await trio.sleep(0)
|
||||||
|
chart.default_view()
|
||||||
|
l, lbar, rbar, r = chart.bars_range()
|
||||||
|
|
||||||
async with (
|
async with (
|
||||||
open_order_mode(
|
open_order_mode(
|
||||||
feed,
|
feed,
|
||||||
|
|
Loading…
Reference in New Issue