Overlays and multicharts UX: follow ups to #420 (and friends) #461
Labels
feature-request
New feature or request
graphics
(charting related) geometry chops
perf
efficiency and latency optimization
UI
The UI follow up to #414, it was originally a PR #420 but ended up being
a sequence of smaller (factored) PRs which landed finishing up with #455
📚
Hopefully this is the final core-UX feature you always wanted 🏄🏼
mult-instrument overlayed real-time and historical data feeds with
simultaneous interaction and "current symbol" selectable order mode
control
To run and test the UI:
piker chart btcusdt.binance ethusdt.binance xmrusdt.binance
This should (currently) spawn a chart with all real-time quote feeds and history overlayed on both the fast and slow chart and boot using the
method=loglin_ref_to_curve'
overlay method by default.First draft feature set included:
The first MVP for overlay charts lands in #455 and contained a plethora of precursor PRs including:
brokerd
feed (Agg feedz #414)samplerd
daemon introduced to conduct singleton sampler step event synchronization across multiple flow-actor processors (samplerd
service #440)ShmArray
->QPainterPath
rendering pipeline by adding a formalizedIncrementalFormatter
layer which allows incremental update (and cache) of source data to pre-graphics formats suitable for minimal conversion to a painter path (Pregraphics formatters:IncrementalFormatter
#447)Axis
sticky label APIs (moved to lower levelPlotItem
in Axis sticky api,PlotItem
is the new "chart" #448)L1
labels to enable tight (horizontal) stacking of y-axis co-domains (Compact L1 labels #452)Viz
API pipeline usage to speed up interaction handlersyrange
update from display loop via inputs toChartView.interact_graphics_loop()
Qt.Signal
stuff from view box handlers instead opting to call our.interact_graphics_cycle()
manually from mouse event callbacksViz
update methods for faster pipeline updates from incremental quote driven updates in the.ui._display
loop.Init basic funtionality / usage:
piker chart btcusdt.binance ethusdt.binance xmrusdt.binance
History view
since obviously it will result in non-time aligned data sets as it
is now using the
'index'
basis..pg.LinearRegion
item to show all background overlay curves transparently.Graphics loop
Feed.open_multi_steam()
for the update task and have it look up appropriate graphics update apis per symbol-quotethe global-ish
ChartPlotWidget
instance and API calls, insteadmoving all this state into
Flow
/Flume
items and possibly adda
Viz
type to replace theFlow
and instead make theFlow
a table of associated
src data -> procesor
pipelines?Search UI/UX:
GodWidget
Follow up ToDo task list after the last PR (#455) lands above:
These include outstanding todo features which are still in discussion / research.
Charting graphics layer: flows mgmt, backendy controls, viewlists, schema:
(Edit-able) list of rt-feeds on chart: the
ViewList
:watchlists but instead is a more sophisticated abstraction: a list
of trade-able asset pairs that maps to a display of rt-data-flows
shown overlayed in a single chart view
a legacy watchlist but with support for additional metadata:
[{'btcusdt.binance: {'pin_to': 'qqq.nasdaq.ib'}}, 'qqq.nasdaq.ib']
or something or other.. (we need to figure out the generic
data-structure syntax form(s)
vi-like controls similar to those in the
ranger
file managerexcept for moving entries between multiple stacked view lists in the
search pane.
bugs^
common axes for common dst-asset:
dst
but cross-broker markets, eg.xbtusdt.kraken
andbtcusdt.binance
OHLC chart overlays:
.ui._display
butwe should likely make this configurable, possibly through the UI,
definitely through a config file.
are substantially larger due to the lever profile?
and delta adjusted" scalar for the opt contract so that you can see
a "somewhat linear" translation of the deriv price vs. the underlying?
move to be mega squashed in the y-range.
respective y-axis):
of no-exactly-aligned (reverse) order of the y-axis from
left-to-right?
races where there are N > 2 overlay curves from diff providers?
.data.feed
shm allocationlogic?
FSP (subcharts)
the currently selected shown by default?
showing all combos and/or a toggle set of symbols from the overlay
set?
subchart for any market (in the viewlist) not currently selected
on the OHLC chart(s)?
=> bugs^
when multiple overlays are being backfilled the chart will get all
mucked up with strange lines from offscreen connecting to every step?
(TODO: PUT PIC HERE from @guilledk!)
Widget UIs: panes and controls, search..:
UI for "pair selection"
the
ViewList
idea from above:from/to a diff viewlist?
ViewList
:shift-click-drag-release
?) to create a group from a single/flat results tree?ctl-o
orctl-enter
on result row?)activate functionality for the order mode and possibly (or
independently) the current FSP processing (in subchart).
tab
orspace
global hotkey?)UI for overlay-curve config:
.ui.view_mode.overlay_viewlists()
) as well as parameters for eachmode if supported (eg.
'loglin_ref_to_curve'
can take a target curveto pin to)
rate, shm buffer sizing, host discovery, what daemon to use as
source.. etc?
Search UI/UX:
derivatives?
=> bugs^:
better distinction of pairs on axes?
Order mode
order mode client multi-market API support:
fqsns: list[str]
toopen_order_mode()
andhaving this setup the client loop and the ems tasks to use
feed.open_feed()
with the samefqsns
passed through?or should we add some kind of client-selectable API already that
strat code can (eventually) use for easy arbing?
selection oriented UX, show each mkt's EMS state by axis:
cc
cancelling should only cancel current instrument's orders?active orders indicator of some sort?
The text was updated successfully, but these errors were encountered: