vnpy / vnpy

基于Python的开源量化交易平台开发框架
http://www.vnpy.com
MIT License
24.42k stars 8.58k forks source link

MT5 on_order没对 ret_code做处理 #2623

Closed pg-adm1n closed 4 years ago

pg-adm1n commented 4 years ago

环境

Issue类型

Bug

预期程序行为

MT5端vnpy_server on_order的时候根据 ret_code 来转换order的状态

实际程序行为

MT5端vnpy_server on_order的时候没有根据 ret_code 来更新order的状态

重现步骤

在周末(休市), 发单, send_order是正确的, 返回的是10008, 即发单成功, 但是on_order的时候result_retcode为10018(Market_closed), 但是 在MT5端vnpy_server 无把result_retcode传去vnpy端, 在vnpy端也没有根据result_retcode 做order的状态更新

https://www.mql5.com/zh/docs/constants/errorswarnings/enum_trade_return_codes

日志: (这里on_order_info 有ret_code是我自己加进去的, vnpy_server 和 vnpy端都加了关于这个字段的提取) time,msg,gateway_name 18:18:14.33,"on_order_info: {'type': 'order', 'data': {'symbol': None, 'deal': 0, 'order': 0, 'trans_type': 10, 'order_type': 0, 'order_state': 0, 'order_price': 0.0, 'order_volume_initial': 0.0, 'order_volume_current': 0.0, 'order_comment': None, 'order_time_setup': 0, 'deal_type': 0, 'trans_price': 0.0, 'trans_volume': 0.0, 'trans_state': 0.0, 'result_deal': 0, 'result_order': 0, 'result_volume': 0.0, 'result_price': 0.0, 'result_comment': None, 'result_retcode': 10018, 'request_action': 5, 'request_type': 2, 'request_comment': '20200808_181813_0001'}}",MT5 18:18:13.756,"send_order result: {'type': 'send', 'data': {'result': True, 'retcode': 10008, 'comment': 'Order placed'}}",MT5 18:18:07.631,委托信息查询成功,MT5 18:18:07.619,合约信息查询成功,MT5 18:18:07.618,MT5连接成功,MT5

解决方案

MT5的vnpy_server OnTradeTransaction 应该要把 result_retcode 传过去 vnpy, vnpy也应该根据result_retcode做order的状态变更

vnpy commented 4 years ago

已在dev分支修改