有遇到过同样问题的吗?
有遇到过同样问题的吗?
如果是通过 CMD 或终端 启动的,有可能在运行过程中误触键盘,导致终端进入了 “选择模式”或“编辑模式”(Windows终端常见问题)。
Enter
键退出选择模式,或者改用图形界面启动。如果是通过 VeighNa Station 或双击启动器 启动的,则不会有这个问题。
on_tick
或 on_bar
中加入打印语句,确认是否还在接收数据:def on_bar(self, bar: BarData):
self.write_log(f"收到K线: {bar.vt_symbol} {bar.datetime} {bar.close_price}")
如果日志还在持续输出,说明策略仍在运行,只是可能没有触发交易或信号变化。
步骤 | 操作 | 目的 |
---|---|---|
1 | 检查策略日志输出 | 确认是否还在收到行情 |
2 | 在策略中添加打印 | 判断是否进入 on_bar / on_tick |
3 | 检查策略状态(inited/trading) | 是否初始化完成并启动 |
4 | 检查订阅的 vt_symbol |
是否正确,是否行情中断 |
5 | 检查是否有异常抛出 | 是否策略崩溃但未捕获 |
6 | 检查是否阻塞主线程 | 是否执行了耗时操作导致事件循环卡住 |
def on_bar(self, bar: BarData):
try:
self.write_log(f"收到K线: {bar.vt_symbol} {bar.datetime} 收盘价: {bar.close_price}")
# 策略逻辑
# ...
except Exception as e:
self.write_log(f"策略异常: {str(e)}", level=Level.ERROR)
问题 | 建议排查方式 |
---|---|
策略“没反应” | 在策略中打印日志,确认是否收到行情 |
是否误触终端 | 如果是CMD启动,尝试按 Enter 或换图形界面 |
是否策略崩溃 | 使用 try-except 捕获异常 |
是否阻塞主线程 | 避免在 on_bar 中执行耗时操作 |
如您能提供以下信息,我可以进一步帮您定位问题:
这样我们可以更有针对性地解决问题。