239 浏览
0
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日
0

标准套利成交应该是分成两个标准合约成交了,比如 a2605&a2611 的买开

成交列表会显示a2605的买开a2611的卖开

chaos 发表新评论 2025年12月26日

有其他问题欢迎加入官方Q群748265037一起交流

那也应该打印出—-trade1 的日志。

分成两个标准合约后,应该只是trade中的合约编号不再是套利合约。

问题是:无法打印出—-trade1

用最小代码验证一下,先看下委托单有没有委托记录,再去成交列表里面看下有没有单腿成交信息

实盘自动委托都成交好几次了,都没有打印出来。

我的意思是重新开个程序用获取委托和成交记录,先排除代码问题,如果获取不到的话可以再反馈一下