Tyler Goodlet
1281755d65
Don't use mem chan cloning, it doesn't actually broadcast
2021-04-10 14:18:40 -04:00
Tyler Goodlet
ddae08493b
Manage the send mem chan lifetime
2021-04-10 14:18:40 -04:00
Tyler Goodlet
28a961ebc0
Add a maybe-startup-runtime manager
2021-04-10 14:18:40 -04:00
Tyler Goodlet
100e27ac12
Task lock bus loading, always close feed stream on disconnect
2021-04-10 14:18:40 -04:00
Tyler Goodlet
8069bbe105
Drop old incrementer func
2021-04-10 14:18:40 -04:00
Tyler Goodlet
ce4144aace
Deliver and utilise broker backend OHLC sample rate in init msg
2021-04-10 14:18:40 -04:00
Tyler Goodlet
c05fc8991a
Rework ohlc sampling to launch from .start()
...
Avoid bothering with a trio event and expect the caller to do manual shm
registering with the write loop. Provide OHLC sample period indexing
through a re-branded pub-sub func ``iter_ohlc_periods()``.
2021-04-10 14:18:40 -04:00
Tyler Goodlet
a8a3f098cf
Drop lingering prints
2021-04-10 14:18:40 -04:00
Tyler Goodlet
5a970dad72
Port kraken backend to new data feed api
2021-04-10 14:18:40 -04:00
Tyler Goodlet
29b73b41fb
Slight rename; fix predicate is None bug
2021-04-10 14:18:40 -04:00
Tyler Goodlet
24bda8636e
Port quest to new client api
2021-04-10 14:18:40 -04:00
Tyler Goodlet
30dabbab44
Support backend volume summing; handle disconnects
2021-04-10 14:18:40 -04:00
Tyler Goodlet
1d013126b9
Fix type annot
2021-04-10 14:18:40 -04:00
Tyler Goodlet
b2eacb85d4
Don't hold lock on initial client construction
2021-04-10 14:18:40 -04:00
Tyler Goodlet
3ebb7ab6b1
Only activate Qt hidpi detection on windows for now
2021-04-10 14:18:40 -04:00
Tyler Goodlet
4f51ca74f4
Broadcast all tick types to subs, not just trades
2021-04-10 14:18:40 -04:00
Tyler Goodlet
5fc2aba3ed
Drop some more old cruft
2021-04-10 14:18:40 -04:00
Tyler Goodlet
8ccf987d52
Fix typo
2021-04-10 14:18:40 -04:00
Tyler Goodlet
7cc395b5bf
Open data feed in ems main entrypoint
2021-04-10 14:18:40 -04:00
Tyler Goodlet
14c5fc24ec
Port to new setup routine name
2021-04-10 14:18:40 -04:00
Tyler Goodlet
a82f43e3a5
Rework data feed API to allow for caching streams
...
Move all feed/stream agnostic logic and shared mem writing into a new
set of routines inside the ``data`` sub-package. This lets us move
toward a more standard API for broker and data backends to provide
cache-able persistent streams to client apps.
The data layer now takes care of
- starting a single background brokerd task to start a stream for as
symbol if none yet exists and register that stream for later lookups
- the existing broker backend actor is now always re-used if possible
if it can be found in a service tree
- synchronization with the brokerd stream's startup sequence is now
oriented around fast startup concurrency such that client code gets
a handle to historical data and quote schema as fast as possible
- historical data loading is delegated to the backend more formally by
starting a ``backfill_bars()`` task
- write shared mem in the brokerd task and only destruct it once requested
either from the parent actor or further clients
- fully de-duplicate stream data by using a dynamic pub-sub strategy
where new clients register for copies of the same quote set per symbol
This new API is entirely working with the IB backend; others will need
to be ported. That's to come shortly.
2021-04-10 14:18:40 -04:00
Tyler Goodlet
f17a26c948
Don't mistakenly alias options to underlyingn for positions
2021-04-10 14:18:40 -04:00
Tyler Goodlet
65e7680cdd
Draft a feed cacheing sub-system
2021-04-10 14:18:40 -04:00
Tyler Goodlet
0d4073dbd2
Move quote stream setup into a cacheing func
2021-04-10 14:18:40 -04:00
Tyler Goodlet
aa61bf5a65
Use mem-chans for quote streams; clone for multiple consumers
2021-04-10 14:18:40 -04:00
Tyler Goodlet
17d3e7a9e2
Don't shield ems feed; enact remote cancels
2021-04-10 14:18:40 -04:00
goodboy
feb8d5bbad
Merge pull request #153 from wattygetlood/windows_patches
...
Windows patches
2021-04-06 11:55:51 -04:00
Tyler Goodlet
549f81e85d
Fix lints
2021-04-03 12:29:56 -04:00
Tyler Goodlet
2b7cecc78e
Drop upcoming cached feed usage
2021-04-03 12:22:14 -04:00
Tyler Goodlet
6891309abd
Fix import
2021-04-03 12:22:14 -04:00
Tyler Goodlet
b1a1b32315
Better tractor startup, runtime detection
2021-04-03 12:22:14 -04:00
Tyler Goodlet
877db52162
Add license header
2021-04-03 12:22:14 -04:00
Tyler Goodlet
2a51582ec0
Start forming an services api
...
Add a `Services` nurseries container singleton for spawning sub-daemons
inside the long running `pikerd` tree. Bring in `brokerd` spawning util
funcs to start getting eyes on what can be factored into a service api.
2021-04-03 12:22:14 -04:00
Tyler Goodlet
38471b7b34
Use early return instead of branching for remote emsd spawning
2021-04-03 12:22:14 -04:00
Tyler Goodlet
fb996bfffb
Change subpkg name in cli
2021-04-03 12:22:14 -04:00
Tyler Goodlet
20a9617c18
Use open pikerd from chart entrypoint
2021-04-03 12:22:14 -04:00
Tyler Goodlet
4ab8545e87
Return early on remote actor lookups instead of branching
2021-04-03 12:22:14 -04:00
Tyler Goodlet
8ce37875a0
Use pikerd to spawn emsd
2021-04-03 12:22:14 -04:00
Tyler Goodlet
1931da97f4
Fix spawn attr typo, merge tractor kwargs
2021-04-03 12:22:14 -04:00
Tyler Goodlet
7ca05238af
Port pikerd entry to drop `tractor.run()`
2021-04-03 12:22:14 -04:00
Tyler Goodlet
79d37646a2
Add `open_pikerd()` and `spawn_emsd()`
...
The direct open is needed for running `pikerd` cmd and
the ems spawn point is the first step toward detaching UI based order
entry from the engine itself.
2021-04-03 12:22:14 -04:00
Tyler Goodlet
8812aff3b8
Fix import
2021-04-03 12:22:14 -04:00
Tyler Goodlet
26ee7260d6
Clearing is a better name
2021-04-03 12:22:14 -04:00
Tyler Goodlet
2b9ac8d8ec
Port daemon(s) to new clearing system apis
2021-04-03 12:22:14 -04:00
Guillermo Rodriguez
189c56c012
Add piker root daemon spawning machinery
...
Refactor maybe_spawn_brokerd to adapt to new process tree structure
and add a ``maybe_open_pikerd``.
2021-04-03 12:22:14 -04:00
Tyler Goodlet
d4395dbcbc
Make default view more zooomed in
2021-03-31 14:26:32 -04:00
Tyler Goodlet
f75b3108ce
Size execution arrows to dpi
2021-03-31 14:26:13 -04:00
Tyler Goodlet
0dfa92230d
Size level line markers to dpi aware font size
2021-03-31 14:25:51 -04:00
Tyler Goodlet
54d36f26f0
Base anchor contents labels based on dpi-aware font bounding rect
2021-03-31 14:25:17 -04:00
Tyler Goodlet
3f7d9c5c15
Base axis text offset on dpi-aware font size
2021-03-31 14:24:39 -04:00
Tyler Goodlet
3bd87caf4b
Hip shot: try making low dpi font sizes "just work"
2021-03-29 17:52:32 -04:00
wattygetlood
c39c4f11db
Forcinng trio spawner seems to work?
2021-03-28 17:24:30 -04:00
wattygetlood
583cafc947
Avoid loading posix unlinker, use shm bytes size
2021-03-28 17:23:59 -04:00
Tyler Goodlet
07a5bf4b7c
Use low dpi inches on 96 dpi
2021-03-19 09:33:47 -04:00
Tyler Goodlet
77fbde1115
Override the inverse transform func from pg
2021-03-19 00:40:39 -04:00
Tyler Goodlet
6fa1d4dc88
Show xhair even if order is filled while line is hovered
2021-03-18 21:57:08 -04:00
Tyler Goodlet
5610807b8e
Move marker factory funcs to new mod
2021-03-18 16:59:22 -04:00
Tyler Goodlet
55de079320
Add low dpi settings and different default view bars counts
2021-03-18 13:40:31 -04:00
Tyler Goodlet
67c5563090
Enable marker-on-select through order mode
2021-03-18 13:33:10 -04:00
Tyler Goodlet
68f75b582a
More fixes for kivy shit
2021-03-18 13:32:34 -04:00
Tyler Goodlet
cd5da45abf
Show order line marker on hover
2021-03-18 13:28:28 -04:00
Tyler Goodlet
2c7d8cdbb0
Support hiding only "half" the xhair
2021-03-18 13:27:49 -04:00
Tyler Goodlet
e1dc2b9225
Enable daemon debug through top level kwarg
2021-03-17 08:36:34 -04:00
Tyler Goodlet
aaca2b2f33
Tweak L1 labels to have more spaces
2021-03-17 08:26:28 -04:00
Tyler Goodlet
17b66e685f
Experiment with zoom focal @ L1 edge
2021-03-17 08:25:58 -04:00
Tyler Goodlet
d1c8c2a072
More level line reworking
...
- break (custom) graphics item style marker drawing into separate func
but keep using it since it still seems oddly faster then the
QGraphicsPathItem thing..
- unfactor hover handler; it was uncessary
- make both the graphics path item and custom graphics items approaches
both work inside ``.paint()``
2021-03-16 19:36:05 -04:00
Tyler Goodlet
adf6437449
Move margin settings to class scope
2021-03-16 15:59:44 -04:00
Tyler Goodlet
61198818dc
Fix label snap on line highlight bug
2021-03-14 12:28:11 -04:00
Tyler Goodlet
cf2f001bcc
Add save last datum toggle to y-label
2021-03-13 21:06:53 -05:00
Tyler Goodlet
776395791a
Pass action to line editor
2021-03-13 19:31:22 -05:00
Tyler Goodlet
c75dacb239
Support func ops on field data, extend anchor logics
2021-03-13 19:29:52 -05:00
Tyler Goodlet
c71a3e0fc5
Level line look and feel rework
...
Add support for drawing ``QPathGraphicsItem`` markers but don't use them
since they seem to be shitting up when combined with the infinite line
(bounding rect?): weird artifacts and whatnot. The only way to avoid
said glitches seems to be to update inside the infinite line's
`.paint()` but that slows stuff down.. Instead stick with the manual
paint job use the same pin point: left of the L1 spread graphics - where
the lines now also extend to.
Further stuff:
- Pin the y-label to a line's value on hover.
- Disable x-dimension line moving
- Rework the labelling to be more minimal
2021-03-13 17:31:15 -05:00
Tyler Goodlet
887c305d46
Allow y-label pinning on cross hair hide
2021-03-13 17:29:35 -05:00
Tyler Goodlet
9798689961
Lengthen label arrow a tad
2021-03-13 17:28:57 -05:00
Tyler Goodlet
f6dbdfab84
Don't crash on unknown orders execing
2021-03-13 17:28:22 -05:00
Tyler Goodlet
396f6b2a0d
Fix type annot
2021-03-12 07:41:47 -05:00
Tyler Goodlet
18ab81a967
Make crosshair lines a milder gray
2021-03-11 21:44:35 -05:00
Tyler Goodlet
624617d8e1
Don't run brokerds in debug mode by default
2021-03-11 21:44:10 -05:00
Tyler Goodlet
d016abcd0d
Adjust right axis anchor closure to include l1 label size
2021-03-11 21:43:29 -05:00
Tyler Goodlet
4a1df686a5
Update max l1 label size on chart
2021-03-11 21:42:38 -05:00
Tyler Goodlet
a51d5c536e
Add a couple more grays
2021-03-11 21:41:13 -05:00
Tyler Goodlet
31c14a2f9f
Add l1 label size tracking to chart widget
2021-03-11 21:40:50 -05:00
Tyler Goodlet
ea8120156f
Add position line updating to order mode
2021-03-11 21:40:06 -05:00
Tyler Goodlet
e91e7bea1f
Add position event support to ems
2021-03-11 21:38:59 -05:00
Tyler Goodlet
6265ae8057
Add position event relay to ib broker backend
2021-03-11 21:38:31 -05:00
Tyler Goodlet
98bfee028a
Add a position line api
...
Add a line which shows the current average price position with and arrow
marker denoting the direction (long or short). Required some further
rewriting of the infinite line from pyqtgraph including:
- adjusting marker (arrow) placement to be offset from axis + l1 labels
- fixing the hover event to not require the `.movable` attribute to be
set
2021-03-11 21:35:09 -05:00
Tyler Goodlet
7075a968b4
Create an order mode module
2021-03-08 09:05:37 -05:00
Tyler Goodlet
7e214180a6
Remove old simulated order price on update
2021-03-07 22:17:19 -05:00
Tyler Goodlet
fff9efe4aa
Snap level line movements to tick size
2021-03-07 22:16:46 -05:00
Tyler Goodlet
d58a82bd38
Factor and simplify paper clearing logic
2021-03-07 16:41:14 -05:00
Tyler Goodlet
5deea50963
Factor order request processing into new func
2021-03-07 16:25:47 -05:00
Tyler Goodlet
e71bcb363c
Drop stage line cacheing; the complexity isn't worth it.
2021-03-07 16:07:23 -05:00
Tyler Goodlet
de5a69c59c
Add mouse drag order update support to UI
2021-03-07 16:01:42 -05:00
Tyler Goodlet
6851bacd0a
Add drag start/end callback support, remove from cursor hovered on delete
2021-03-07 15:50:50 -05:00
Tyler Goodlet
0ade7daebc
Support simulated live order modification in paper engine
2021-03-07 13:34:03 -05:00
Tyler Goodlet
919ecab732
Support order modification in ems request loop
2021-03-07 13:12:39 -05:00
Tyler Goodlet
a43ab1b983
Add order update method to client
2021-03-07 10:56:09 -05:00
Tyler Goodlet
2cabe1831c
Attempt to handle existing order updates with ib backend
2021-03-06 16:33:56 -05:00
Tyler Goodlet
a1a1dec885
Move L1 labels into lone module
2021-03-01 14:48:08 -05:00
Tyler Goodlet
8997b6029b
Drop cruft
2021-03-01 12:02:07 -05:00
Tyler Goodlet
72c4a4366b
Tag TWS trade events
2021-03-01 12:01:48 -05:00
Tyler Goodlet
a1691cf1c5
Keep to one EMS daemon if possible
2021-03-01 11:28:44 -05:00
Tyler Goodlet
327129db37
Drop paper limit submissions for alerts
2021-02-25 18:44:40 -05:00
Tyler Goodlet
9f9b5480a6
More explicit private var name
2021-02-24 12:05:09 -05:00
Tyler Goodlet
948e133cae
Split out ems daemon, client api and paper engine into new mods
2021-02-22 18:37:57 -05:00
Tyler Goodlet
a9bbc223bb
Add a new exchange subpackage
2021-02-22 17:28:34 -05:00
Tyler Goodlet
1142a538ea
Don't forward errors without an order id
2021-02-22 10:45:01 -05:00
Tyler Goodlet
e6ea053d40
Get kivy/questrade shit working again
2021-02-21 12:32:40 -05:00
Tyler Goodlet
f724798336
Fix incorrect bounding rect calc
2021-02-21 12:02:20 -05:00
Tyler Goodlet
4b0e5662a5
Add default order lot sizes by asset type
2021-02-21 12:01:48 -05:00
Tyler Goodlet
6fb1945360
Fix and pass through piker loglevel correctly
2021-02-21 11:50:33 -05:00
Tyler Goodlet
aa4a2ef64f
Bump up font size one more time
2021-02-21 11:49:27 -05:00
Tyler Goodlet
c2890b8197
Port level line to xhair methods
2021-02-21 11:48:51 -05:00
Tyler Goodlet
d5b41e12c5
Add crosshair hide/show convenience methods
2021-02-21 11:45:24 -05:00
Tyler Goodlet
71745ddcd4
Even smaller text fill on axes
2021-02-21 11:44:58 -05:00
Tyler Goodlet
8c757d0bdd
Accept a symbol type key from broker
2021-02-21 11:42:19 -05:00
Tyler Goodlet
38b2e99002
Fill clearable prices asap
2021-02-20 16:43:33 -05:00
Tyler Goodlet
d8b157d209
First draft paper trading engine!
...
It's a super naive implementation with no slippage model or network
latency besides some slight delays. Clearing only happens on bid/ask
sweep ticks at the moment - simple last volume based clearing coming
up next.
2021-02-20 15:25:53 -05:00
Tyler Goodlet
ead2f77d40
Add a symbol/asset type key
2021-02-19 18:43:56 -05:00
Tyler Goodlet
add63734f1
Add an auto-reconnect websocket API
2021-02-19 18:42:50 -05:00
Tyler Goodlet
bbd54e8f95
Report asset types, tick sizes, and order actions from ib
2021-02-19 17:23:37 -05:00
Tyler Goodlet
1ac4cc3dd3
Use new field label api for L1
2021-02-16 06:42:48 -05:00
Tyler Goodlet
880bdcffa7
Document order status list from ib
2021-02-12 09:07:49 -05:00
Tyler Goodlet
b794855ad3
Port order mode to new order line api
2021-02-11 23:42:57 -05:00
Tyler Goodlet
d91f07c947
Drop old candlestick graphics code
2021-02-11 23:42:17 -05:00
Tyler Goodlet
aec8f1d25c
Hide y-label on level line mouse over
2021-02-11 23:41:40 -05:00
Tyler Goodlet
bf78c13df4
Attempt px perfection on crosshair lines placement
2021-02-11 14:03:47 -05:00
Tyler Goodlet
f51e503e47
Support arbitrary fields (with update) in labels
...
This turned into a larger endeavour then intended but now we're using our
own label system on level lines to be able to display things nicely
**pinned wherever we want in the UI**. Keep the old ``LevelLabel`` for
now for the L1 graphics but we'll likely replace this as well since i'm
pretty sure the new label type (which wraps `QGraphicsTextItem`) is more
performant anyway.
2021-02-11 13:59:50 -05:00
Tyler Goodlet
cbf259f3f3
Add hidpi issue regarding it being borky
2021-02-11 11:49:33 -05:00
Tyler Goodlet
ca576ca3cf
Add label delete method
2021-02-11 11:49:01 -05:00
Tyler Goodlet
0edca84b3d
Yet another font size tweak
2021-02-11 11:48:40 -05:00
Tyler Goodlet
dd1aed627e
Tidy axis code
2021-02-11 11:48:19 -05:00
Tyler Goodlet
02edfdf846
Pass order size to ems
2021-02-11 11:47:34 -05:00
Tyler Goodlet
21e1561a57
Add a sane label type..smh
2021-02-11 00:12:37 -05:00
Tyler Goodlet
386cd9404d
Drop hidpi detection? it doesn't seem to yield benefits
2021-02-08 07:07:04 -05:00
Tyler Goodlet
ac84087755
Fix stage line updating, size up arrow heads?
2021-02-08 07:06:00 -05:00
Tyler Goodlet
0449734c53
Drop YSticky for level lines stuff
2021-02-08 07:04:08 -05:00
Tyler Goodlet
1ef2d18a41
Try to make crosshair lines px perfect
2021-02-08 07:03:28 -05:00
Tyler Goodlet
708ed89894
Hard code font inches
2021-02-08 07:01:26 -05:00
Tyler Goodlet
890f932400
Use through lot digits, drop YSticky
2021-02-08 07:00:51 -05:00
Tyler Goodlet
bf66eb0b3d
Support lot tick size (mostly for crypto)
2021-02-08 06:42:59 -05:00
Tyler Goodlet
d7f806c57b
Add arrowheads to labels
...
For labels that want it add nice arrow paths that point just over the
respective axis. Couple label text offset from the axis line based on
parent 'tickTextOffset' setting. Drop `YSticky` it was not enough
meat to bother with.
2021-02-08 06:40:11 -05:00
Tyler Goodlet
c3fa31e731
Convert symbol type to use pydantic
2021-02-06 14:38:25 -05:00
Tyler Goodlet
0c184b1b41
Port ib to new provide new tick size fields in symbol info
2021-02-06 14:37:24 -05:00
Tyler Goodlet
69df73afc3
Deliver symbol info from kraken; start using pydantic
2021-02-06 14:23:27 -05:00
Tyler Goodlet
a8c4829cb6
Start using `tick_size` throughout charting
...
The min tick size is the smallest step an instrument can move in value
(think the number of decimals places of precision the value can have).
We start leveraging this in a few places:
- make our internal "symbol" type expose it as part of it's api
so that it can be passed around by UI components
- in y-axis view box scaling, use it to keep the bid/ask spread (L1 UI)
always on screen even in the case where the spread has moved further
out of view then the last clearing price
- allows the EMS to determine dark order live order submission offsets
2021-02-06 11:35:12 -05:00
Tyler Goodlet
03541bd368
Drop unneeded .hide(); add more comments
2021-01-26 22:16:18 -05:00
Tyler Goodlet
cfc36e7928
Snap y-cursor-label to min tick
2021-01-26 22:15:45 -05:00
Tyler Goodlet
708086cbcb
Convert contractsto dicts on errors
2021-01-26 13:34:49 -05:00
Tyler Goodlet
5a0612e6a8
Factor some line and label steps
2021-01-26 13:34:29 -05:00