如题,我是实盘程序。代码在Windows环境反复测试,没有问题,但在CentOS 上跑实盘只要遇到set_targetvolume() 下单就没有反应,从日志里看根本就没有发送任何报单请求。
担心是程序逻辑问题,又专门写了一个简单测试方法,去掉策略逻辑,初始化API后直接调用set_targetvolume(),while 循环执行wait_update, 跑了10几分钟,还是一样,没有任何报单请求。CentOS 机器是租用的云服务器,共享IP,其他的订阅行情和指标计算都没有问题,就是这个方法有问题,麻烦看一下,是Linux环境的问题还是sdk的问题,谢谢!
另外,CentOS上跑回测时set_targetvolume()可以成交,但有时会报“下单失败, 不在可交易时间段内”, 在Windows上就从来没出过问题,不管实盘还是回测。
贴代码看看呢?我没遇到过这个问题
测试代码如下:
def pos_test():
api = TqApi()
symbol = “DCE.p2101”
tp = TargetPosTask(api, symbol)
acc_pos = api.get_position(symbol)
open_pos = 1
tp.set_target_volume(open_pos)
while acc_pos.pos_long_today != open_pos:
api.wait_update()
print(“调仓中…”)
orders = api.get_order()
print(“订单列表:”)
print (orders)
print(“调仓成功”)
Windows上运行结果如下:
2020-09-29 10:14:27,327 – INFO – 通知: 与 wss://openmd.shinnytech.com/t/md/front/mobile 的网络连接已建立
调仓中…
订单列表:
{}
调仓中…
订单列表:
{‘3553fd51bd38f84cd439d1d7c4512b4b’: , D({‘order_id’: ‘3553fd51bd38f84cd439d1d7c4512b4b’, ‘exchange_order_id’: ‘3553fd51bd38f84cd439d1d7c4512b4b’, ‘exchange_id’: ‘DCE’, ‘instrument_id’: ‘p2101’, ‘direction’: ‘BUY’, ‘offset’: ‘OPEN’, ‘volume_orign’: 1, ‘volume_left’: 0, ‘limit_price’: 5936.0, ‘price_type’: ‘LIMIT’, ‘volume_condition’: ‘ANY’, ‘time_condition’: ‘GFD’, ‘insert_date_time’: 1601345667733000000, ‘last_msg’: ‘全部成交’, ‘status’: ‘FINISHED’, ‘user_id’: ‘TQSIM’, ‘symbol’: ‘DCE.p2101’, ‘frozen_margin’: 0.0})}
调仓成功
2020-09-29 10:14:27,470 – INFO – 模拟交易下单 3553fd51bd38f84cd439d1d7c4512b4b: 时间:2020-09-29 10:14:27.733000,合约:DCE.p2101,开平:OPEN,方向:BUY,手数:1,价格:5936.0
2020-09-29 10:14:27,470 – INFO – 模拟交易委托单 3553fd51bd38f84cd439d1d7c4512b4b: 全部成交
CentOS上运行结果如下:
在使用天勤量化之前,默认您已经知晓并同意以下免责条款,如果不同意请立即停止使用:https://www.shinnytech.com/blog/disclaimer/
2020-09-29 10:13:25,831 – INFO – 通知: 与 wss://openmd.shinnytech.com/t/md/front/mobile 的网络连接已建立
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
调仓中…
订单列表:
{}
可以看到Linux上根本没有报单
找到原因了,是tqsdk版本的问题,1.8.3 有问题,换成1.6.2 就好了 :(