Python friendly api for US Futures

Discussion in 'Automated Trading' started by RainierGrant7777, Jan 11, 2022.

  1. Tradovate, TradeStation, and (also IB) and ClearEdge all have a type of web api thing now, surprisingly, ClearEdges is a version of Rithmic by the way, my focus in this question.

    The main api in the US Futures industry seem to be Rithmic, CQG, and Trading Technologies. But the prices I was quoted for CQG were very steep.

    What I'm unfortunately realizing is there is very very little documentation or information about Rithimic's protobuf R Protocol option.
    Do multiple brokers support Rithimic websocket with google protocol buffers, or is it just ClearEdge?
    are there perhaps some python wrapped versions of the Rithmic C++ library? Or would you just have to do that from the ground up?
    I dug around on some discord channels and found a couple guys mentioning using GO infrastructure with Cannon Trading and the Rithmic protobufs, but I am trying to stay on python. Information on this seems pretty pretty scarce.
     
    vic38 and Ironbeam like this.
  2. Robert Morse

    Robert Morse Sponsor

    RainierGrant7777 - Eze EMS (formerly RealTick) is a software we offer. The new Eze EMS xAPI platform is powered by Google's high performance gRPC framework. Clients can now seamlessly connect their proprietary applications, custom models and workflows, built in any gRPC supported language - C#/C++, Python, Java, Go, or Ruby, to name a few. Eze EMS xAPI is supported on both Windows and Linux. Realtick is not a dedicated future platform but does offer access to many of the liquid CME futures. It will not access the CFE, most foreign exchanges or options on futures. If you are interested to learn more, please email me directly.
     
    Last edited: Jan 11, 2022
  3. Ironbeam

    Ironbeam Sponsor

    I believe any broker that offers R | API offers the google protocol buffers. About half of the customers we work with on the Rithmic API use the google protocol version. Have you already reached to Rithmic for more detailed documentation?
     
    Last edited: Oct 16, 2023
    MarkBrown likes this.
  4. Databento

    Databento Sponsor

    You can actually use all of those options in Python "from the ground up" as you said. You can use boost.python to create Python bindings for any C++ library. You can also use urllib3, requests or websockets to integrate web APIs, presumably HTTP-based, that you're referring to. And protobufs just describe an interchange format, if you had the schema you can generate a Python parser or write your own.

    If what you're looking for is a higher level Python client library simplifies this for you, there's open source clients for several of the vendors you named above (just search "Python client" + vendor name).
     
    metalztrader and MarkBrown like this.
  5. Is this offer for only US citizens?
     
  6. Hi all, I've put together a Python Rithmic Package that utilises the Rithmic Protocol Buffer API, check it out here: https://github.com/jacksonwoody/pyrithmic

    Allows live tick data streaming, historical download of data and order management, requires access to Rithmic, really need their RITHMIC_PAPER_TRADING environment access
     
    vic38, analgotrader and MarkBrown like this.
  7. MarkBrown

    MarkBrown

    truly brilliant
     
  8. BAT31

    BAT31

    Thanks for this. That's really great work.

    I trying to get setup on Rithmic's API and want to port an algo I created for Interactive Brokers' API to Rithimic's using Google Protocol Buffers.

    I want to build actually learn Rithmic's API and build my algo from the ground up. I'm thinking that your source code would be an excellent start and can accelerate my development.

    https://github.com/jacksonwoody/pyrithmic/tree/main/src/rithmic/protocol_buffers

    I'm curious about something. I didn't see a reference to where I can check current position. It's probably embedded in one of the source files. I just don't want to hunt for it.
     
  9. hey, haven't specifically built that functionality directly, can be backed out by the orders functions and collating fills but that's not ideal. When I have some time I'll look to add this, feel free to put a request up on github of exactly what you're after.
     
  10. BAT31

    BAT31

    Thanks for your response.

    I've already started down the path of building my app. After pondering it, I'd rather go this route for the learning experience. Just a mere three weeks ago, I had no idea about protocol buffers and asyncio. Now, I have a basic understanding.

    I did learn some valuable things by reading your README file, such as each plant requires its own websocket. I'm thinking that before its all over, I will have to build four different classes to connect to four different plants.

    It's been a bit of a challenge, but it has also been rewarding, because I like to learn new things.
     
    #10     Jan 3, 2024