API Reference

Python Client example

Introduction

The RapidMarket Python client allows users to subscribe to and receive real-time market data. This client leverages ZeroMQ for communication and Protocol Buffers (Protobuf) for efficient data serialization.

Usage

Below is an example version of the RapidMarket Python client.

import sys import zmq import l2_book_pb2 CR_LINE = "\r" + " " * 64 + "\r" def run(ipcpath: str): # create zmq context context = zmq.Context() # create zmq subscriber socket socket = context.socket(zmq.SUB) # connect to zmq publisher socket.connect(ipcpath) # subscribe all messages socket.subscribe("") book = l2_book_pb2.L2BookProto() print("Receiving market data...") while True: # receive message msg = socket.recv() # parse message book.ParseFromString(msg) bid = book.levels_bids[0] ask = book.levels_asks[0] bid_price = bid.price bid_qty = bid.qty ask_price = ask.price ask_qty = ask.qty exchange = book.exchange symbol = book.symbol # print message print( f" {CR_LINE}bid: {bid_price}, {bid_qty}\task: {ask_price}, {ask_qty} {exchange} {symbol}" ) book.Clear() def main(): if len(sys.argv) != 2: print("Usage: python3 rapidmarket_client.py <path>", file=sys.stderr) print( 'Example: python3 rapidmarket_client.py "tcp://localhost:50000"', file=sys.stderr, ) exit(1) ipcpath = sys.argv[1] run(ipcpath) if __name__ == "__main__": main()

Requirements

To use the RapidMarket Python client to receive data, you need the following environment and tools:

# Install the Proto Buffer compiler sudo apt install -y protobuf-compiler sudo apt install python3-pip # The following two commands install the runtime dependency that matches the version of the Proto Buffer compiler version=$(apt show protobuf-compiler | grep -i version | awk -F'[ -]' '{print $2}') pip install protobuf==${version} # Install ZeroMQ dependency pip install pyzmq

These commands will install the following dependencies:

  • protobuf-compiler: Compiler for compiling Protobuf files.
  • protobuf: Python runtime library for Protocol Buffers.
  • pyzmq: Python bindings for ZeroMQ, used for communication with RapidMarket.

Getting Started

For more detailed information on ZeroMQ and Protobuf, including their roles in the RapidMarket application, please refer to the Getting Started page.

Directory structure

├── l2_book.proto           Protobuf definition file
└── rapidmarket_client.py   Client example code

Compilation

To generate the l2_book_pb2.py file required by Proto Buffer, use the following command:

protoc --python_out=. ./l2_book.proto

Start command

IP_ADDR and PORT below are the IP address and port of the RapidMarket server, respectively.

python3 ./rapidmarket_client.py "tcp://${IP_ADDR}:${PORT}" # For example: python3 ./rapidmarket_client.py "tcp://192.168.0.1:50000"

The program outputs real-time market data:

Receiving market data...
bid: 30033.05000, 6.48043       ask: 30033.06000, 4.91876

l2_book.proto File Explanation

The message format released by RapidMarket is defined in l2_book.proto. It outlines the hierarchical structure and fields of market data, aiding clients in correctly parsing received market data.