ctpbee ↔ QUANTAXIS 双向桥接,基于 ctpbee Tool 机制实现。
- 出站:ctpbee 的 tick/order/trade/position/account 事件实时转换为 QIFI 格式,通过 MIFI WebSocket 推送 + MongoDB 持久化
- 入站:接收 QA 客户端的报单/撤单/查询/订阅指令,转为 ctpbee 请求发往 CTP
pip install ctpbee_qa或从源码安装:
git clone https://github.com/ctpbee/ctpbee_qa
cd ctpbee_qa
pip install -e .依赖:
- ctpbee >= 1.7.4
- pymongo >= 4.0
- websockets >= 12.0
from ctpbee import CtpBee
from ctpbee_qa import QARelay
# 创建 QA 桥接工具
qa = QARelay(
host="0.0.0.0", # MIFI WebSocket 监听地址
mifi_port=8770, # MIFI 端口
mongo_host="127.0.0.1", # MongoDB 地址
mongo_port=27017, # MongoDB 端口
mongo_db="ctpbee_qa", # MongoDB 数据库名
mongo_enabled=True, # 是否启用 MongoDB
)
# 加载到 ctpbee
app = CtpBee("market", __name__).with_tools(qa)
app.config.from_json("config.json")
app.start()启动后 MIFI WebSocket 监听 ws://0.0.0.0:8770,QA 客户端连接即可接收实时行情并下发报单指令。
{
"action": "send_order",
"code": "rb2505",
"exchange": "SHFE",
"direction": "BUY",
"offset": "OPEN",
"price": 3200.0,
"volume": 1,
"order_type": "LIMIT"
}| action | 说明 |
|---|---|
send_order |
报单 |
cancel_order |
撤单 |
query_position |
查询持仓 |
query_account |
查询账户 |
subscribe |
订阅行情 |
┌─────────────────────────────────────────────┐
│ ctpbee 进程 │
│ │
│ CTP Gateway → Recorder → QARelay Tool │
│ │ │
│ 出站: on_tick/order/trade │ │
│ → QIFI 转换 │ │
│ → MIFI broadcast ──────┼──→ QA Client│
│ → MongoDB insert ──────┼──→ MongoDB │
│ │ │
│ 入站: MIFI Server ←──────────┼── QA Client │
│ → queue.Queue │ │
│ → _drain (主线程) │ │
│ → action.send_order ───┼──→ CTP │
└─────────────────────────────────────────────┘
MIT