Skip to main content

Python client for HFT Simulator Gateway (handshake, WebSockets, high-level helpers)

Project description

market-client (Python)

A high‑level Python client for the HFT Simulator gateway (server/) that mirrors the website's behavior but hides the server details.

  • Automatically performs handshake and login
  • Keeps a persistent CMD WebSocket session
  • Optionally auto-subscribes to the MD stream and maintains simple in‑memory state (symbols, book snapshots)
  • Provides high‑level helpers (get_symbols, get_book, place_order, list_orders)
  • Minimizes HTTP usage: performs requests over a persistent CMD WebSocket session
  • MD-driven book maintenance and candle aggregation with minimal refreshes

Install

This package depends on httpx and websockets.

  • With pip (editable for local dev):
python3 -m venv .venv
. .venv/bin/activate
pip install -e ./market-client

Or install directly:

pip install httpx>=0.24 websockets>=10

Quickstart (high‑level)

import asyncio
from market_client import MarketClient

async def main():
    # One call connects: handshake -> CMD -> login -> MD
    client = await MarketClient.connect("http://localhost:8000", connect_md=True)

    # High-level helpers
    symbols = await client.get_symbols()
    print("symbols:", symbols[:3])

    book = await client.get_book(symbols[0]["sym"], depth=10)
    print("book:", book)

    # Candles: configure and read
    await client.configure_candles(symbols[0]["sym"], interval_ms=1000, depth=50)
    print("candles:", client.get_candles(symbols[0]["sym"])[:3])

    # Orders
    # await client.place_order(sym, side="buy", price="100.00", qty=1)
    # orders = await client.list_orders()
    # print("orders:", orders)

    await client.aclose()

asyncio.run(main())

See examples/simple.py for a runnable sample.

Notes

  • The client auto-fills the JSON envelope (type, ver, msg_id, ts) and matches responses by corr_id.
  • Tokens are handled automatically by connect().
  • When connect_md=True, the client starts a background task to process MD events and keeps a simple book snapshot per symbol. Future iterations can extend this to persistent candles, etc.

API

  • await MarketClient.connect(base_url, connect_md=True, on_md_event=None, on_cmd_event=None)
    • Performs handshake, opens CMD, logs in, and optionally subscribes to MD.
  • High‑level methods
    • await get_symbols(force_refresh=False) -> list of { sym, tick, min_qty, lot, status }
    • await get_book(sym, depth=20) -> { sym, seq, bids, asks } (arrays)
    • await configure_candles(sym, interval_ms=1000, depth=50) -> seeds window; MD updates candles
    • get_candles(sym) -> list of OHLC entries suitable for charting
    • await send(op, payload={}, as_role=None, timeout=5.0) -> generic WS request/response helper
    • await place_order(sym, side, price, qty, tif='GTC') -> payload dict
    • await cancel_order(order_id) -> payload dict
    • await list_orders() -> list of order dicts
    • book_snapshot(sym, depth=20) -> current in-memory book from MD
    • best_bid_ask(sym) -> dict with top-of-book {bid, ask}

Low‑level access (still available if needed):

  • handshake(), api_request(), open_cmd(), open_md()

Request session class

  • RequestSession: alias of the request-capable CMD WebSocket session used internally for minimal-latency requests.

Server assumptions

  • Matches the FastAPI server under server/ with routes:
    • POST /auth/handshake
    • POST /api/request
    • WS /ws/cmd
    • WS /ws/md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hft_market_client-0.1.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hft_market_client-0.1.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file hft_market_client-0.1.0.tar.gz.

File metadata

  • Download URL: hft_market_client-0.1.0.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.9 Darwin/25.0.0

File hashes

Hashes for hft_market_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1dd28862f7e13e25101b47c5fdab9b25d44ed6eb3299d406eb91b98336d8dfc8
MD5 0d8f09be18b97244633c027213eb7164
BLAKE2b-256 a0e6cd7929c3cecaa9ba0c429ed4e5af469903dea78665eb92216509555b7679

See more details on using hashes here.

File details

Details for the file hft_market_client-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hft_market_client-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.9 Darwin/25.0.0

File hashes

Hashes for hft_market_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e50ea94687d0d0f13402c6235c3c66b6a5ce942b5bc99d11b26824a3b22c6174
MD5 9262204e82c2dc8af6854ad746dec411
BLAKE2b-256 8255c2eb94715d4cbe6479c9884391f2cc75693a65f3a5027f4f263ac7775f44

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page