In the `translate_and_relay_brokerd_events()` loop task that is, such that we never crash on a `status_msg = book._active.pop(oid)` in the 'closed' status handler whenever a double removal happens. Turns out there were unforeseen races here when a benign backend error would cause an order-mode dialog to be cancelled (incorrectly) and then a UI side `.on_cancel()` would trigger too-early removal from the `book._active` table despite the backend sending an actual 'closed' event (much) later, this would crash on the now missing entry.. So instead we now, - obviously use `book._active.pop(oid, None)` - emit a `log.warning()` (not info lol) on a null-read and with a less "one-line-y" message explaining the double removal and maybe *why*. |
||
|---|---|---|
| .. | ||
| README.rst | ||
| __init__.py | ||
| _client.py | ||
| _ems.py | ||
| _messages.py | ||
| _paper_engine.py | ||
| _util.py | ||
README.rst
piker.clearing
trade execution-n-control subsys for both live and paper trading as well as algo-trading manual override/interaction across any backend broker and data provider.
avail UIs
order ctl
the piker.clearing subsys is exposed mainly though the piker chart GUI as a "chart trader" style UX and is automatically enabled whenever a chart is opened.
the "manual" order control features are exposed via the piker.ui.order_mode API and can pretty much always be used (at least) in simulated-trading mode, aka "paper"-mode, and the micro-manual is as follows:
order_mode(edge triggered activation by any of the following keys,
mouse-clickon y-level to submit at that price ):f/ctl-fto stage buyd/ctl-dto stage sellato stage alert
search_mode(ctl-lorctl-spaceto open,ctl-corctl-spaceto close ) :- begin typing to have symbol search automatically lookup symbols from all loaded backend (broker) providers
- arrow keys and mouse click to navigate selection
- vi-like
ctl-[hjkl]for navigation
position (pp) mgmt
you can also configure your position allocation limits from the sidepane.