Commit Graph

527 Commits (a7d3afc9b14d8b631a06e9d282d41583223024eb)

Author SHA1 Message Date
Tyler Goodlet 0564bbd9c3 Use focus switch signal to update status bar 2021-06-10 13:23:28 -04:00
Tyler Goodlet 754a5cce4f WIP toying with a simple status bar 2021-06-10 13:23:28 -04:00
Tyler Goodlet 8d02778158 Don't bail on unknown order ids 2021-06-10 12:02:57 -04:00
Tyler Goodlet b06cb5bb5a Comments clean and improvments 2021-06-10 08:24:10 -04:00
Tyler Goodlet 6e58f31fd8 Port EMS to typed messaging + bidir streaming
This moves the entire clearing system to use typed messages using
`pydantic.BaseModel` such that the streamed request-response order
submission protocols can be explicitly viewed in terms of message
schema, flow, and sequencing. Using the explicit message formats we can
now dig into simplifying and normalizing across broker provider apis to
get the best uniformity and simplicity.

The order submission sequence is now fully async: an order request is
expected to be explicitly acked with a new message and if cancellation
is requested by the client before the ack arrives, the cancel message is
stashed and then later sent immediately on receipt of the order
submission's ack from the backend broker. Backend brokers are now
controlled using a 2-way request-response streaming dialogue which is
fully api agnostic of the clearing system's core processing; This
leverages the new bi-directional streaming apis from `tractor`.  The
clearing core (emsd) was also simplified by moving the paper engine to
it's own sub-actor and making it api-symmetric with expected `brokerd`
endpoints.

A couple of the ems status messages were changed/added:
'dark_executed' -> 'dark_triggered'
added 'alert_triggered'

More cleaning of old code to come!
2021-06-08 14:33:30 -04:00
Tyler Goodlet 0bcad35c70 Set ack time on pydantic model 2021-06-08 14:31:04 -04:00
Tyler Goodlet b689adaeb0 Throttle L1 label updates at a lower rate 2021-05-28 14:11:02 -04:00
Tyler Goodlet 1a7b06c147 Limit l1 graphics updates to half the refresh rate 2021-05-28 14:11:02 -04:00
Tyler Goodlet ee71f445fb Clear entries on no results returned per task 2021-05-28 14:08:24 -04:00
Tyler Goodlet a31b83c5ca Don't ever send plain whitespace a search pattern 2021-05-28 13:44:30 -04:00
Tyler Goodlet ea3d96e7ed Accept arbitrary QEvent subscriptions via a set 2021-05-28 13:30:26 -04:00
Tyler Goodlet c56c7b8540 Increase min debounce period, stop searching on user nav selection 2021-05-28 10:16:00 -04:00
Tyler Goodlet ec6ea32dda Don't pass through linked charts x-axis handle 2021-05-27 13:05:23 -04:00
Tyler Goodlet 7dfc7f7fa2 Factor chart selection into widget, cleanups, add resource links 2021-05-27 13:05:23 -04:00
Tyler Goodlet ab3adcee9e Get basic switch-on-click mouse support working 2021-05-27 13:05:23 -04:00
Tyler Goodlet 607e1a8299 Add per-provider-async searching with status updates 2021-05-27 13:05:23 -04:00
Tyler Goodlet 89beb92866 Add api for per-section filling/clearing
Makes it so we can move toward separate provider results fills in an
async way, on demand.

Also,
- add depth 1 iteration helper method
- add section finder helper method
- fix last selection loading to be mostly consistent
2021-05-27 13:05:23 -04:00
Tyler Goodlet c478ddaed0 Disable cursor blink globally 2021-05-27 13:05:23 -04:00
Tyler Goodlet 924960a359 Add label to search bar 2021-05-27 13:05:23 -04:00
Tyler Goodlet 46d88965d3 Get LIFO sort on cache syms working properly 2021-05-27 13:05:23 -04:00
Tyler Goodlet 59475cfd81 Store lowercase symbols within piker data internals 2021-05-27 13:05:23 -04:00
Tyler Goodlet af9dcf9230 Use an ordered dict to get LIFO cache sorting on sym selection 2021-05-27 13:05:23 -04:00
Tyler Goodlet 9bfc230dde Speedup: load provider searches async at startup 2021-05-27 13:05:23 -04:00
Tyler Goodlet 82cdb176e1 Make ctrl-l highlight current text in edit 2021-05-27 13:05:23 -04:00
Tyler Goodlet 212882a5a5 Don't try to show xhair if no active plot 2021-05-27 13:05:23 -04:00
Tyler Goodlet 307afb1935 Clean some key handling 2021-05-27 13:05:23 -04:00
Tyler Goodlet 67498c60af More UX features
- load previous search state on open
- show cached on empty search bar
- allow ctrl-u/d to navigate provider "sections"
2021-05-27 13:05:23 -04:00
Tyler Goodlet 8129fcc648 Ignore key auto-repeats 2021-05-27 13:05:23 -04:00
Tyler Goodlet 07d8bf1453 Add a `.select_first()` view method + more cleaning 2021-05-27 13:05:23 -04:00
Tyler Goodlet d5e83e61d4 Reorder, drop some cruft 2021-05-27 13:05:23 -04:00
Tyler Goodlet 9d2c8a9526 Factor selection details into completer view methods 2021-05-27 13:05:23 -04:00
Tyler Goodlet 43d73b4a7c Info log the current provider search 2021-05-27 13:05:23 -04:00
Tyler Goodlet 64c1d9a965 Support ctrl-space to open search pane 2021-05-27 13:05:23 -04:00
Tyler Goodlet d8a200aadc Increase completion-tree width, support ctrl-space toggle 2021-05-27 13:05:23 -04:00
Tyler Goodlet 2471ce446e Require `<symbol>.<provider>` format to cli 2021-05-27 13:05:23 -04:00
Tyler Goodlet e77a51f16e Support multi-provider cache symbol switching 2021-05-27 13:05:23 -04:00
Tyler Goodlet 1bd0ee8746 Support loading multi-brokerds search at startup 2021-05-27 13:05:23 -04:00
Tyler Goodlet fd8dc4f1a3 Make -b a multi-option for backends 2021-05-27 13:05:23 -04:00
Tyler Goodlet b2ff09f193 Support min and max keyboard pauses
Some providers do well with a "longer" debounce period (like ib) since
searching them too frequently causes latency and stalls.  By supporting
both a min and max debounce period on keyboard input we can only send
patterns to the slower engines when that period is triggered via
`trio.move_on_after()` and continue to relay to faster engines when the
measured period permits. Allow search routines to register their "min
period" such that they can choose to ignore patterns that arrive before
their heuristically known ideal wait.
2021-05-27 13:05:23 -04:00
Tyler Goodlet 63363d750c Port chart to multi-search api 2021-05-27 13:05:23 -04:00
Tyler Goodlet cb102f692c Top level widget `.focus()` 2021-05-27 13:05:23 -04:00
Tyler Goodlet 0163a582a5 Move search machinery to ui module, add fast cached chart selection 2021-05-27 13:05:23 -04:00
Tyler Goodlet 82ece83d33 Drop commented cruft 2021-05-27 13:05:23 -04:00
Tyler Goodlet b39fd5e1fc Use per-provider indented tree layout for results 2021-05-27 13:05:23 -04:00
Tyler Goodlet 25dbe60c77 Flip to ctrl-l to pop out search/list 2021-05-27 13:05:23 -04:00
Tyler Goodlet 51c61587d2 Make list pop out next to primary y-axis 2021-05-27 13:05:23 -04:00
Tyler Goodlet 2c24c9ef2d Compose search bar and view under parent widget 2021-05-27 13:05:23 -04:00
Tyler Goodlet 25d7122cb6 Throttle requests using a static "typing paused period" 2021-05-27 13:05:22 -04:00
Tyler Goodlet 5766dd518d Enforce lower case symbols across providers 2021-05-27 13:05:22 -04:00
Tyler Goodlet 478b114708 First draft completion in background task 2021-05-27 13:05:22 -04:00
Tyler Goodlet c9efbcc6d2 Drop completion list from startup 2021-05-27 13:05:22 -04:00
Tyler Goodlet 431fdd3f9c Add initial working symbol search with async completions 2021-05-27 13:05:22 -04:00
Tyler Goodlet a5826e6e22 Up the kb event queue size 2021-05-27 13:05:22 -04:00
Tyler Goodlet be39e9bdf5 Load async kb search handler at startup 2021-05-27 13:05:22 -04:00
Tyler Goodlet 60d44f30ee Make search kb handling async 2021-05-27 13:05:22 -04:00
Tyler Goodlet 2861f321ce Add async keyboard cloner sub-sys 2021-05-27 13:05:22 -04:00
Tyler Goodlet 5e1b15f319 Repair indents from rebasing 2021-05-27 13:05:22 -04:00
Tyler Goodlet 821d5ab9ec Bring back in and merge tractor stream api patch 2021-05-27 13:05:22 -04:00
Tyler Goodlet da0cb9b2ac Call search focus directly 2021-05-27 13:05:22 -04:00
Tyler Goodlet 0e83906f11 Initial WIP search completer; still a mess 2021-05-27 13:05:22 -04:00
Tyler Goodlet 157f6ab02b Drop lingering chart focus call 2021-05-27 13:05:22 -04:00
Tyler Goodlet 1f9f2b873a Super fast switching, just hide loaded charts 2021-05-27 13:05:22 -04:00
Tyler Goodlet 0627f7dcee First draft: symbol switching via QLineEdit widget 2021-05-27 13:05:22 -04:00
goodboy 9c821c8cfd
Merge pull request #181 from pikers/syseng_tweaks
Syseng tweaks
2021-05-25 08:39:06 -04:00
Tyler Goodlet 9e367432fd Minimize update to Qt reported display's refresh rate 2021-05-25 06:56:18 -04:00
Tyler Goodlet e623c58754 Naively throttle graphics updates to 60 FPS 2021-05-25 06:33:22 -04:00
Tyler Goodlet 319eacd8c1 Use compact async with tuple syntax from py3.9 2021-05-24 12:26:50 -04:00
Tyler Goodlet f6f4a0cd8d Use tractor settings for qtractor 2021-05-24 12:26:34 -04:00
Tyler Goodlet 435e005d6e Drop quantdum legend item 2021-05-24 12:23:02 -04:00
Tyler Goodlet ecd94ce24d Better indexing logic? 2021-05-24 12:17:08 -04:00
Tyler Goodlet c08f192f77 Move charting to new tractor stream api
This required a fsp task spawning logic rework which ended up being
cleaner just spawning tasks in a loop sequentially instead of trying
a 2-phase spawn-then-initialize approach.

This also includes changes from the symbol search branch hacked in.
Mostly it includes isolating the main chart startup-sequence to a
function that can be run in a new task every time a new symbol is
requested by the selector/searcher. The actual search functionality
obviously isn't in here yet but minor changes are included as part of
pulling out the `tractor` stream api patch from the symbol search dev
branch.
2021-04-29 11:28:00 -04:00
Tyler Goodlet 3375735914 Port kivy monitor to new tractor stream api 2021-04-29 09:10:11 -04:00
Tyler Goodlet 7d6bc4d856 Move feed api(s) into new submodule
Also add a --pdb flag to chart app.
2021-04-15 10:43:29 -04:00
Tyler Goodlet 0b10c8d6d6 Make standalone mode work again 2021-04-15 08:23:08 -04:00
Tyler Goodlet 9622254cdb Hack broadcast chan for order submissions, smh 2021-04-14 11:02:14 -04:00
Tyler Goodlet 9a15cd48f0 Just symbol info in window title 2021-04-10 14:18:40 -04:00
Tyler Goodlet 1523637979 Always update L1 labels 2021-04-10 14:18:40 -04:00
Tyler Goodlet 3506bbe05c Nest async withs 2021-04-10 14:18:40 -04:00
Tyler Goodlet a18a4b5a4c Call the app what it is 2021-04-10 14:18:40 -04:00
Tyler Goodlet 20c99733b6 Let cli pass through actor name 2021-04-10 14:18:40 -04:00
Tyler Goodlet a8a3f098cf Drop lingering prints 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
goodboy feb8d5bbad
Merge pull request #153 from wattygetlood/windows_patches
Windows patches
2021-04-06 11:55:51 -04:00
Tyler Goodlet 6891309abd Fix import 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 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
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