class TradeWatcher:
"""监听成交并写入记录与通知"""
def __init__(self, api, notifier, trader: List[Dict[str, Any]]):
self.api = api
self.logger = setup_logger(__name__)
self.notifier = notifier
self.trader = trader
trades_snapshot = self.api.get_trade()
self._processed_trade_ids: Set[str] = {
trade_id for trade_id in trades_snapshot.keys() if not trade_id.startswith("_")
}
self._task = self.api.create_task(self._watch_trades(trades_snapshot))
#
async def _watch_trades(self, trades):
async with self.api.register_update_notify(trades) as update_chan:
async for _ in update_chan:
self._handle_trade_updates(trades)
#
def _handle_trade_updates(self, trades):
if not trades:
return
oc_map = {'OPEN': 'open', 'CLOSE': 'close', 'CLOSETODAY': 'close_today'}
for trade_id, trade in trades.items():
print("----trade1:", dump(trade))
上面代码,在标准合约测试OK,可以打印—-trade1:
但是,标准套利合约总是无法打印。是否self.api.get_trade()接口对标准套利合约不生效?
janreyho 编辑问题 2025年12月26日
标准套利成交应该是分成两个标准合约成交了,比如 a2605&a2611 的买开
成交列表会显示a2605的买开a2611的卖开
chaos 发表新评论 2025年12月26日
那也应该打印出—-trade1 的日志。
分成两个标准合约后,应该只是trade中的合约编号不再是套利合约。
问题是:无法打印出—-trade1
用最小代码验证一下,先看下委托单有没有委托记录,再去成交列表里面看下有没有单腿成交信息
实盘自动委托都成交好几次了,都没有打印出来。
我的意思是重新开个程序用获取委托和成交记录,先排除代码问题,如果获取不到的话可以再反馈一下
有其他问题欢迎加入官方Q群748265037一起交流