调用mainengine.send order(req,’CTP’)下单
创建req=OrderRequest()对象
其中参数设置offset=Offset.OPEN
运行结果 日志提示:’请选择开平方向’
查了下应该是运行到如下代码时判断出了问题,
可req.offset是在OFFSET_VT2CTP里面的。
求大神解惑?
def send_order(self, req: OrderRequest):
"""
Send new order.
"""
if req.offset not in OFFSET_VT2CTP:
self.gateway.write_log("请选择开平方向")
return ""
**
源代码
**
import multiprocessing
import sys
from time import sleep
from logging import INFO
from vnpy.event import EventEngine
from vnpy.trader.object import OrderRequest
from vnpy.trader.setting import SETTINGS
from vnpy.trader.engine import MainEngine
from vnpy.gateway.ctp import CtpGateway
from constant import Direction, Offset, OrderType, Exchange
SETTINGS["log.active"] = True
SETTINGS["log.level"] = INFO
SETTINGS["log.console"] = True
ctp_setting = {
"用户名": "180915",
"密码": "",
"经纪商代码": "9999",
"交易服务器": "180.168.146.187:10101",
"行情服务器": "180.168.146.187:10111",
"产品名称": "simnow_client_test",
"授权编码": "0000000000000000",
"产品信息": ""
}
def run_child():
"""
Running in the child process.
"""
SETTINGS["log.file"] = True
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
ctp_engine=main_engine.add_gateway(CtpGateway)
main_engine.connect(ctp_setting, "CTP")
main_engine.write_log("连接CTP接口")
sleep(10)
oms_engine = main_engine.get_engine('oms')
pos = oms_engine.get_all_positions()
exchange = Exchange('SHFE')
req = OrderRequest('rb2105', exchange, direction=Direction.LONG, type=OrderType.LIMIT, volume=1)
req.price = 4858
req.offset = Offset.OPEN
print(req.offset)
main_engine.send_order(req)
print(pos)
if name == "main":
run_child()