使用2.0.4版本,之前连接实盘不进行交易,只把信号写入log文件,然后复盘看效果如何,但是我连接实盘后,发现没有日志文件,同时交割单也找不到,请问日志和交割单在那里可以看到?
使用2.0.4版本,之前连接实盘不进行交易,只把信号写入log文件,然后复盘看效果如何,但是我连接实盘后,发现没有日志文件,同时交割单也找不到,请问日志和交割单在那里可以看到?
通过gateway文件里面的on_querry_order()和on_querry_trade()可以查询到历史委托和历史成交,不同的接口查询到的历史记录不同,有些接口甚至只能查询到当天的成交记录。
委托回报函数on_order或者on_trade推送的实时信息,一般委托通过组件/成交组件/活动委托组件显示出来。
请问是在策略文件里加上on_querry_order()这个函数吗:
比如:
def on_querry_order(self, order):
pass
def on_querry_trade(self, trade):
pass
谢谢
getway文件里没找到on_querry_order()和on_querry_trade()两个函数啊,我用的是2.0.4版本
是类似的命名函数,举个例子,tiger_gateway.py的查询委托以及历史委托回报函数如下:
def query_order(self):
""""""
try:
data = self.trade_client.get_orders()
data = sorted(data, key=lambda x: x.order_time, reverse=False)
except: # noqa
traceback.print_exc()
self.write_log("查询委托失败")
return
self.process_order(data)
self.process_deal(data)
def process_order(self, data):
""""""
for i in data:
symbol, exchange = convert_symbol_tiger2vt(str(i.contract))
local_id = self.get_new_local_id()
order = OrderData(
symbol=symbol,
exchange=exchange,
orderid=local_id,
direction=Direction.NET,
price=i.limit_price if i.limit_price else 0.0,
volume=i.quantity,
traded=i.filled,
status=STATUS_TIGER2VT[i.status],
time=datetime.fromtimestamp(
i.order_time / 1000).strftime("%H:%M:%S"),
gateway_name=self.gateway_name,
)
self.ID_TIGER2VT[str(i.order_id)] = local_id
self.on_order(order)
self.ID_VT2TIGER = {v: k for k, v in self.ID_TIGER2VT.items()}
def process_deal(self, data):
"""
Process trade data for both query and update.
"""
for i in data:
if i.status == OrderStatus.PARTIALLY_FILLED or i.status == OrderStatus.FILLED:
symbol, exchange = convert_symbol_tiger2vt(str(i.contract))
self.tradeid += 1
trade = TradeData(
symbol=symbol,
exchange=exchange,
direction=Direction.NET,
tradeid=self.tradeid,
orderid=self.ID_TIGER2VT[str(i.order_id)],
price=i.avg_fill_price,
volume=i.filled,
time=datetime.fromtimestamp(
i.trade_time / 1000).strftime("%H:%M:%S"),
gateway_name=self.gateway_name,
)
self.on_trade(trade)
老师,在ctp_gateway文件里没有这两个函数啊,是手动加进去吗?
还有2.0.4的仓位判断只有self.pos这个属性,如果我同时持有多仓和空仓怎么判断仓位呢?
1) ctp_gateway有相关的函数,命名不同而已,可以仔细阅读一下原代码
2) vnpy是可以判断仓位的多空,今仓昨仓的,如converer.py 就有仓位调整的细致操作,如上期所模式,中金所平今惩罚模式。