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 bycorr_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 candlesget_candles(sym)-> list of OHLC entries suitable for chartingawait send(op, payload={}, as_role=None, timeout=5.0)-> generic WS request/response helperawait place_order(sym, side, price, qty, tif='GTC')-> payload dictawait cancel_order(order_id)-> payload dictawait list_orders()-> list of order dictsbook_snapshot(sym, depth=20)-> current in-memory book from MDbest_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/handshakePOST /api/requestWS /ws/cmdWS /ws/md
Release files for hft-market-client 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hft_market_client-0.1.0.tar.gz | 4.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hft_market_client-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.6 kB
Release files / hft_market_client-0.1.0.tar.gz
| Download URL | hft_market_client-0.1.0.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1dd28862f7e13e25101b47c5fdab9b25d44ed6eb3299d406eb91b98336d8dfc8
|
|
BLAKE2b-256 checksum How to use checksums |
a0e6cd7929c3cecaa9ba0c429ed4e5af469903dea78665eb92216509555b7679
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.9 Darwin/25.0.0
|
Release files / hft_market_client-0.1.0-py3-none-any.whl
| Download URL | hft_market_client-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e50ea94687d0d0f13402c6235c3c66b6a5ce942b5bc99d11b26824a3b22c6174
|
|
BLAKE2b-256 checksum How to use checksums |
8255c2eb94715d4cbe6479c9884391f2cc75693a65f3a5027f4f263ac7775f44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.9 Darwin/25.0.0
|