在分钟回测时,如果是最后一根bar来触发下单,好像都要第二天的第一根bar成交。 而实际是希望能将这个成交算在当天。 有什么方式可以达到目标? 谢谢
暂时解决问题1)的办法,手动将数据库表的datetime字段修改长度为6,就可以插入毫秒数据了。不知道最初创建的是不是有bug?
其他问题,继续请教各位老大们。
1)用行情记录模块的功能,记录一个合约的tick数据。(mysql数据库)。可是查看数据库的时候,发现只有1秒一笔数据,而且只精确到秒。这是为什么?
2)如果只用vnpy框架来订阅合约,并指定保存到文件的方式记录tick。可以每秒2笔,发现一天下来,保存会有数据遗漏(大概几百笔,每天数量不定)。 这种遗漏是否用行情记录模块记录也会发生(现在每秒一笔也是有遗漏)。是网络丢包造成,还是程序写入时有错误,或者是ctp漏报?
3)实盘交易的时候,是否也会有收不到的tick数据? 怎样可以解决这种问题,交易程序放到(交易所)期货公司机房里边?
谢谢
报错如下:
Traceback (most recent call last):
File "c:\vnstudio\lib\site-packages\vnpy\app\portfolio_manager\ui\widget.py", line 207, in process_trade_event
self.monitor.update_trade(trade)
File "c:\vnstudio\lib\site-packages\vnpy\app\portfolio_manager\ui\widget.py", line 278, in update_trade
reference_cell = BaseCell(trade.reference, trade)
AttributeError: 'TradeData' object has no attribute 'reference'
在CTP的order回报中。关于时间的字段有很多:
///报单日期
TThostFtdcDateType InsertDate;
///委托时间
TThostFtdcTimeType InsertTime;
///激活时间
TThostFtdcTimeType ActiveTime;
///挂起时间
TThostFtdcTimeType SuspendTime;
///最后修改时间
TThostFtdcTimeType UpdateTime;
///撤销时间
TThostFtdcTimeType CancelTime;
自己看了下vnpy的代码,
在object.py 当中定义的OrderData 有两个时间字段,datetime: datetime = None 和 cancel_time: str = ""
在ctp_gateway.py 当中的onRtnOrder里边,有timestamp = f"{data['InsertDate']} {data['InsertTime']}"
疑问1)OrderData 的datetime代表什么?
测试在CTA策略模块里,下委托单后,打印每次收到on_order 里边的datetime,时间是变化的,而且比tick行情的时间早?
例如 09:45:10.400 tick行情触发下单,然后在on_order收到的情况是:09:45:09 提交中;09:45:09 提交中;09:45:10全部成交;
从上面的代码来看,OrderData 当中的datetime应该是委托报单时间才对?这个时间应该是ctp报过来的,不是本地时间对吧?那为什么会实际收到的变化的时间呢?
2)怎么可以在orderdata对象中增加对应CTP里边的CancelTime撤单时间 和 UpdateTime最后更新时间(我理解就是order的全部成交时间)?
在ctp_gateway.py 当中的data有定义data['CancelTime']吗,哪里可以增加这个定义,从而让接口有这个数据? 然后在ctp_gateway.py 的onRtnOrder添加一行 canceltime = data[CancelTime]? 同样的,这笔委托的最后更新时间 updatetime = data[updateTime]?
感谢!
委托来源字段记录了委托来自哪个策略(实例),可是VNPY没有将这些信息保存到文件或者数据库当中。当系统重启动后,这些来源字段就变成空了。。。。
请问,是否有接口可以直接查询并获取客户端显示的所有委托信息,从而自行保存?
同一个策略(不同参数)的两个实例,交易的是同一个品种。这种情况下,vnpy可以识别委托是属于哪一个策略实例的。
问题是:
1)如何去检查某个策略实例的持仓与实际持仓是否一致?
如果只有一个策略实例的时候,可以通过查询实际持仓 与 策略持仓比较来发现是否持仓一致。但是,两个实例(同一品种)的话,因为在同一个实际账户里边,查询实际持仓是得到两个策略实例的实际持仓,无法区分某个策略实例。一般是怎么做最理想呢?(是否只能通过成交回报来自行维护实例的持仓,无法进行实际持仓的比较?)
2)如果想要手动补单到对应的策略实例当中,可以怎么操作?
能否可以将某笔成交指定到某个策略实例当中。 假设当发现策略实例和实际持仓不一致时,想要手动补单到策略中。。
谢谢。我的处理方法是,在call_strategy_func()里边增加了一个发邮件的动作。目前大部分错误都能收到邮件。
谢谢,已确认是报的数据有问题。
用Python的交易员 wrote:
用Python的交易员 wrote:
- 不会影响
- 可以用send_email函数发送邮件到QQ邮箱(自动推送到手机微信)提醒
谢谢回复。
在策略代码的每个地方,自己写抓取错误的代码?vnpy本身有没有统计的入口把错误抓出来的(界面上能显示,这些错误是哪里获得的呢)? 看到CTAEngine 有个call_strategy_func()是这里边直接可以得到错有错误吗?
如果不是版本问题,那这个报错是什么问题?
好像是CTP版本问题。
请问,VNPY2.1.8 对应CTP什么版本? 如果要使用CTP 6.3.19的版本,要怎么做?
谢谢。
仿真环境下,ctpgateway报错。。。
ValueError: time data '20210408 144916.0' does not match format '%Y%m%d %H:%M:%S.%f'
At:
C:\vnstudio\lib_strptime.py(359): _strptime
C:\vnstudio\lib_strptime.py(577): _strptime_datetime
C:\vnstudio\lib\site-packages\vnpy\gateway\ctp\ctp_gateway.py(315): onRtnDepthMarketData
ValueError: time data '20210408 144917.0' does not match format '%Y%m%d %H:%M:%S.%f'
At:
C:\vnstudio\lib_strptime.py(359): _strptime
C:\vnstudio\lib_strptime.py(577): _strptime_datetime
C:\vnstudio\lib\site-packages\vnpy\gateway\ctp\ctp_gateway.py(315): onRtnDepthMarketData
ValueError: time data '20210408 144918.0' does not match format '%Y%m%d %H:%M:%S.%f'
At:
C:\vnstudio\lib_strptime.py(359): _strptime
C:\vnstudio\lib_strptime.py(577): _strptime_datetime
C:\vnstudio\lib\site-packages\vnpy\gateway\ctp\ctp_gateway.py(315): onRtnDepthMarketData
ValueError: time data '20210408 144919.0' does not match format '%Y%m%d %H:%M:%S.%f'
At:
C:\vnstudio\lib_strptime.py(359): _strptime
C:\vnstudio\lib_strptime.py(577): _strptime_datetime
C:\vnstudio\lib\site-packages\vnpy\gateway\ctp\ctp_gateway.py(315): onRtnDepthMarketData
在vnpy程序已经启动,并且CTA模块对应策略开始运行了。
如果在某些特殊情况,策略代码发生错误了。一般,在CTA界面上可以看到有报错提示。
1)某个策略错误,是否不影响其他策略的运行?
2)是否CTA模块在监测策略代码运行状态?什么位置可以获取这个错误。。。因为不一定随时都盯着界面看,想要及时知道报错发生了的话,在哪个地方可以增加一个处理:例如,在界面上报错的同时,发邮件微信或者做什么动作进行提醒?
。
谢谢
对一个未成交单进行撤单操作:cancel_order().想要知道撤单的处理结果,怎么能够的到呢?
1)在on_order() 里边好像也得不到回报? 好像"已撤单"状态可以收到. 但是如果撤单失败哪里得到??
2)撤单可能成功,也可能失败. 有各种原因的失败(比如, id报的不对; 单已被撤;等等) 这些错误信息又可以怎么获得?
谢谢
请问,关于延迟问题,有哪位大佬有分享代码可以参考吗? (之前好像有位大佬分享过代码,找不到了)
另外,想要分表存储(2.0以上版本不再支持?),有代码参考吗,谢谢
谢谢,是我自己把买卖开平那4个委托指令搞混淆了,所以转不出来。。。