Add and update y-sticky labels on new price data
parent
363d4cf609
commit
7a245ddda4
|
@ -15,7 +15,8 @@ from ._axes import (
|
|||
PriceAxis,
|
||||
)
|
||||
from ._graphics import CrossHair, BarItems
|
||||
from ._style import _xaxis_at, _min_points_to_show
|
||||
from ._axes import YSticky
|
||||
from ._style import _xaxis_at, _min_points_to_show, hcolor
|
||||
from ._source import Symbol
|
||||
from .. import brokers
|
||||
from .. import data
|
||||
|
@ -225,7 +226,6 @@ class LinkedSplitCharts(QtGui.QWidget):
|
|||
|
||||
cpw.setFrameStyle(QtGui.QFrame.StyledPanel | QtGui.QFrame.Plain)
|
||||
cpw.getPlotItem().setContentsMargins(*CHART_MARGINS)
|
||||
# self.splitter.addWidget(cpw)
|
||||
|
||||
# link chart x-axis to main quotes chart
|
||||
cpw.setXLink(self.chart)
|
||||
|
@ -246,6 +246,9 @@ class LinkedSplitCharts(QtGui.QWidget):
|
|||
# scale split regions
|
||||
self.set_split_sizes()
|
||||
|
||||
# XXX: we need this right?
|
||||
# self.splitter.addWidget(cpw)
|
||||
|
||||
return cpw
|
||||
|
||||
|
||||
|
@ -282,6 +285,7 @@ class ChartPlotWidget(pg.PlotWidget):
|
|||
self._array = array # readonly view of data
|
||||
self._graphics = {} # registry of underlying graphics
|
||||
self._labels = {} # registry of underlying graphics
|
||||
self._ysticks = {} # registry of underlying graphics
|
||||
|
||||
# show only right side axes
|
||||
self.hideAxis('left')
|
||||
|
@ -350,6 +354,7 @@ class ChartPlotWidget(pg.PlotWidget):
|
|||
self._graphics[name] = graphics
|
||||
|
||||
# XXX: How to stack labels vertically?
|
||||
# Ogi says: "
|
||||
label = pg.LabelItem(
|
||||
justify='left',
|
||||
size='5pt',
|
||||
|
@ -373,6 +378,8 @@ class ChartPlotWidget(pg.PlotWidget):
|
|||
# show last 50 points on startup
|
||||
self.plotItem.vb.setXRange(xlast - 50, xlast + 50)
|
||||
|
||||
self._add_sticky(name)
|
||||
|
||||
return graphics
|
||||
|
||||
def draw_curve(
|
||||
|
@ -421,6 +428,21 @@ class ChartPlotWidget(pg.PlotWidget):
|
|||
|
||||
return curve
|
||||
|
||||
def _add_sticky(
|
||||
self,
|
||||
name: str,
|
||||
# retreive: Callable[None, np.ndarray],
|
||||
) -> YSticky:
|
||||
# add y-axis "last" value label
|
||||
last = self._ysticks['last'] = YSticky(
|
||||
chart=self,
|
||||
parent=self.getAxis('right'),
|
||||
# digits=0,
|
||||
opacity=1,
|
||||
color=pg.mkPen(hcolor('gray'))
|
||||
)
|
||||
return last
|
||||
|
||||
def update_from_array(
|
||||
self,
|
||||
name: str,
|
||||
|
@ -636,6 +658,10 @@ async def _async_main(
|
|||
loglevel,
|
||||
)
|
||||
|
||||
# update last price sticky
|
||||
last = chart._ysticks['last']
|
||||
last.update_from_data(*chart._array[-1][['index', 'close']])
|
||||
|
||||
# graphics update loop
|
||||
|
||||
async with data.open_feed(
|
||||
|
@ -646,7 +672,7 @@ async def _async_main(
|
|||
|
||||
# wait for a first quote before we start any update tasks
|
||||
quote = await stream.__anext__()
|
||||
print(f'RECEIVED FIRST QUOTE {quote}')
|
||||
log.info(f'RECEIVED FIRST QUOTE {quote}')
|
||||
|
||||
# start graphics tasks after receiving first live quote
|
||||
n.start_soon(add_new_bars, delay, linked_charts)
|
||||
|
@ -675,6 +701,10 @@ async def _async_main(
|
|||
chart.name,
|
||||
chart._array,
|
||||
)
|
||||
# update sticky(s)
|
||||
last = chart._ysticks['last']
|
||||
last.update_from_data(
|
||||
*chart._array[-1][['index', 'close']])
|
||||
chart._set_yrange()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue