Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
Personally I use Sierra Chart (via wine on Linux) and their CME order routing which is free and co-located with CME in Aurora. Sierra Chart uses their own protocol (DTC) which has C++ source files you can use already. I prefer it over Rithmic's API and it's cheaper and has similar latency <500micros for order routing. You can connect via localhost to Sierra Chart's built-in DTC protocol server and speak DTC messages. Check out dtcprotocol.org for available messages.
I made the transition from IBKR then to IBKR/Iqfeed now to Rithmic RApi, all c++ based.
I can write a long post on the pros and cons, I am happy with rithmics order flow, but they're intraday historical data is buggy and support has not been much help.
I have not tried IBKR with fix, but I have used their proprietary API. And it is the best documented, and the cheapest. But their historical data is slow, and the live data is aggregated and only released every 250 milliseconds.
SierraChart Denali data feed and order routing is co-located with CME. You can connect to a local install of SierraChart using DTC protocol. They have C++ serialization code available. No lag. No aggregation of quote trades or quotes. No lag for depth either. Historical data is slow like Rithmic. Denali is cheaper than Rithmic and SierraChart order routing is free with latency <500 micros.
I've heard good things about SierraChart with the denali feed, honestly it's next on my list. But the burden of c++ for me vs python, is the development time is so long, and debugging is longer.
Rithmic's historical data is not so much slow as it is buggy, so times I get what I requested sometimes I do not. IQFeed is the best but at $200 a month it's too pricey.
I will miss that with Rithmic I have one compiled program that does everything and no need to install anything else. And it's easily portable to Ubuntu.
IQfeed is way overpriced and is located in Nebraska.
You can connect via any language to SierraChart. DTC protocol is open dtcprotocol.org. It’s a binary protocol over TCP. I have generated Go and Rust serialization code based on the latest schema. I created a schema generation toolkit for it on GitHub in Go. Generating Python would be easy.
I pay ~$36 per month for SierraChart with Denali and order routing. CME fees are just $3 for L1 and $30 for L2. If you only need time and sales then L1 works.
IQfeed has a newish data center in aurora, about 35-40ms latency from my testing from my VPS in chicago, but it's still way overpriced, but super fast historical data. I tested Rithmic to be consistently a few ms faster.
I use python for prototyping and optimizing never for actual trading.
Man I'm amazed, you created a tool that generates schemas? How does it work? I'm not familiar with the GO language but it seems similar enough to c.
It parses the raw C++ header files into an intermediate schema model. That model is then translated into a language specific schema model. Then it just goes through the types and generates source files. DTC messages are flat (no nested structs or pointers). Just C structs with little-endian encoding with C based structure padding. This all is normalized when parsing into intermediate schema. The network protocol simply passes these messages back and forth.
codegen/go/generator_test.go generates go source code that is located at: v8 directory on the root. v8 is DTC protocol version 8 (current).
codegen/rust/generator_test.go generates rust located in codegen/rust/dtc-rs
The code generation models are complete including a handler trait or interface to automatically parse incoming messages and send outgoing messages.
All you need to do is connect to local SierraChart on the DTC server port. There are separate ports for real-time (11099) and historical (11098).
You can get a basic version of SierraChart for development. Connect to some free data feeds like SPX500 cash index. Use simulated trading account to test order management.