Skip to content

Conversation

@goodboy
Copy link
Contributor

@goodboy goodboy commented Sep 2, 2020

Starts a backend using ib_insync with some decently heavy modifications and overrides.

This relies on the new infected asycio feature of tractor which is still in dev.

There's an open issue with have with ib_insync but there's some debate of how to manage the time format:

Also a small study is underway using our new charting to figure out how useful the rtTime ms time stamps are for tracking latency issues.

@goodboy goodboy requested a review from iamzoltan September 2, 2020 15:42
@goodboy goodboy changed the base branch from marketstore_integration to unleash_the_kraken September 2, 2020 16:13
@goodboy goodboy added data-layer real-time and historical data processing and storage feature-request New feature or request integration external stack and/or lib augmentations labels Sep 2, 2020
Base automatically changed from unleash_the_kraken to master September 29, 2020 20:43
Start working towards meeting the backend client api.
Infect `asyncio` using `trio`'s new guest mode and demonstrate
real-time ticker streaming to console.
Infected `asyncio` support is being added to `tractor` in
goodboy/tractor#121 so delegate to all that new machinery.

Start building out an "actor-aware" api which takes care of all the
`trio`-`asyncio` interaction for data streaming and request handling.
Add a little (shudder) method proxy system which can be used to invoke
client methods from another actor. Start on a streaming api in
preparation for real-time charting.
Add a `Client.find_contract()` which internally takes
a <symbol>.<exchange> str as input and uses `IB.qualifyContractsAsync()`
internally to try and validate the most likely contract. Make the module
script call this using `asyncio.run()` for console testing.
Start a draft normalization format for (sampled) tick data.
Ideally we move toward the dense tick format (DFT) enforced by
techtonicDB, but for now let's just get a dict of something simple
going: `{'type': 'trade', 'price': <price}` kind of thing. This
gets us started being able to real-time chart from all data feed
back-ends. Oh, and hack in support for XAUUSD..and get subactor
logging workin.
Since the new FSP system will require time aligned data amongst actors,
it makes sense to share broker data feeds as much as possible on a local
system. There doesn't seem to be downside to this approach either since
if not fanning-out in our code, the broker (server) has to do it anyway
(and who knows how junk their implementation is) though with more
clients, sockets etc. in memory on our end. It also preps the code for
introducing a more "serious" pub-sub systems like zeromq/nanomessage.
@goodboy goodboy merged commit a122acf into master Oct 2, 2020
@goodboy goodboy deleted the ib_backend branch April 6, 2021 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

data-layer real-time and historical data processing and storage feature-request New feature or request integration external stack and/or lib augmentations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants