MTF wrote:
buy/sell/short/cover函数调用后,都会返回委托号列表。
可以检查下该列表是否为空,为空则说明委托失败,可能原因包括:
- 没有启动策略交易
- RiskManager模块风控拦截
- 交易接口状态异常(网络断线、合约代码找不到等)
按照顺序排查看看吧
请问要在哪里看委托号列表?我在on_order下面写了一条打印语句如下,不会有任何打印输出,是不是说明调用buy/sell/short/cover函数后根本就没有发出委托(在回测的时候,每次调用buy/sell/short/cover函数这条打印语句都会有相应的输出)?
def on_order(self, order: OrderData):
"""
Callback of new order data update.
"""
print("order:", order.datetime, order.orderid,
order.direction, order.price, order.status)
您说的几个原因,目前情况如下:
1、策略交易有启动。我在策略中有写了打印策略指标、交易信号、是否调用了buy/sell/short/cover函数等的指令,每跟K线都有正确的打印输出。
2、我不知道有没有启用RiskManager,应该也没有动过风控拦截参数,查看了risk_manager_setting.json,内容是空({})。打开VN Station图形界面,也看到没有启动RiskManager模块,然后尝试启动了模块查看,里面的参数也都是默认值,都设得比较大,不至于拦截。之前都没注意到有这个模块。
3、交易接口没有问题,能正确接收行情数据,显示的每根K线的收盘价都是正确的,这应该也说明能找到合约代码。
我感觉调用buy/sell/short/cover函数后根本就没有send_order,所以on_order里面的print语句也就不会被执行。
请问还可以进行哪些排查?