发送交易邮件出现smtplib.SMTPDataError,错误554,说是发送的邮件内容包含了未被许可的信息或被系统识别为垃圾邮件。请问这种情况该如何发?谢谢
早盘和晚盘开盘前总是会收到一个tick数据,而这个数据会触发报单,但是又不可能成交,会影响到策略的正常运行,请问该如何过滤开盘前的tick数据?我在on_tick中加了过滤条件,但感觉还是有些问题,请问一般都是怎么处理的?谢谢
请问为什么实盘中策略启动后没有tick数据,但是在已经开盘的时候启动就不会存在没有数据的问题,请问是因为策略自动启动过早吗?还是其他的原因?而且这种情况总爱发生在早晨和晚上,中午没有出现过,谢谢
xiaohe wrote:
on_stop_order是不会返回信息的
你说的应该是send_order函数返回的orderid列表吧,请结合需求去vnpy.app.cta_strategy.engine下自己看一下send_order函数的代码吧
谢谢您的回答,我去看了下CTP接口文档,已经解决了,一个简单的趋势策略,楞写了将近2000行代码,回测到实盘的确还是有很多细节要处理的,希望不会再有坑了
xiaohe wrote:
不清楚策略逻辑了,可以下次注意一下,如果推送两次是同一个orderid应该就是接口推送了重复的信息,如果是不同orderid则是下了两个单,那应该就要根据策略逻辑排查了
谢谢回答,是同一个orderid,应该是推送了两次重复的信息,另外请教一下,发限价单被触发时,on_stop_order中返回的vt_orderids是list,也就是有可能会返回多个orderid,但是在on_order中只会返回一个orderid,请问什么情况下会on_stop_order中会返回多个orderid?
xiaohe wrote:
- 先排查一下下一次单为什么会推两次on_order的问题吧,请看一下是否是同一个orderid;
- 10手分两次5手成交的话,应该会有一个orderid,两个tradeid。
排查时还是请多观察orderid和tradeid吧
谢谢,但是两次on_order的问题还是没有找到。。。
主要还是不太了解CTP消息返回的流程,谢谢
目前已经开始实盘,但开仓量还没提上去,主要是关于部分成交的问题还没有解决:
1.on_order中,每次发单都会收到两次信息,比如会连续收到两次提交中,两次收到未成交,但只会收到一次全部成交的状态,请问如何修正?
2.如果开仓时发生部分成交,比如开10单位,on_order中显示5单位成交(Status==”PARTTRADED“),那这成交的5单位是不是会返回到on_trade中,将来如果再次成交剩余的,又会再次返回到on_trade中?
谢谢
中信建投也升级了,不兼容6.3.16版本,希望能更新下,谢谢
xiaohe wrote:
这个json文件是储存在你电脑本地的,就是记录一下策略仓位和技术指标值的,应该不用加密吧
策略要在别人的电脑上跑,所以这些参数也会在别人电脑上储存,考虑如何能加密,否则很容易推测出策略,谢谢
.vntrader中的cta_strategy_data.json用来存储参数,但是该参数如何加密?谢谢
请问实盘或模拟盘如何request得到风险度?谢谢
请问能否向交易所request历史成交记录?谢谢
用Python的交易员 wrote:
针对路径依赖的变量,比如持仓数据、移动止损高低点等,无法直接通过行情回放算出来,就需要variables保存了
谢谢,是这样,但是针对上面提到的示例中的那些类似ma,布林带等没有必要存储吧?
ctp策略中variables是为了保存策略终止时变量的值,在下次启动策略时继续使用。但问题是,比如示例中的策略,都会保存像"boll_up","boll_down","kk_up","kk_down"这类的变量,但我们知道on_init函数中会用self.load_bar() 去load数据,从而会形成新的“boll_up","boll_down"等变量,但在按最新数据形成这些变量后,却又要用原来保存的值来覆盖这些变量,岂不是多此一举,或者当策略有一段时间未启动,反而会导致按照这些过期的变量进行建仓?请问这些variables保存的意义是什么?谢谢
请问实盘中用on_position会接受交易所发送的持仓数据,但是有时并不及时,如果用get_position函数来获取持仓情况,该函数得到的数据是主动向交易所申请的还是被动接受来的信号(就是on_position中接受的数据)。另外如何实现主动向交易所请求get_position?谢谢
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\vnstudio\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\vnstudio\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Truego\trader_fixed\vnpy\event\engine.py", line 60, in _run
self._process(event)
File "C:\Users\Truego\trader_fixed\vnpy\event\engine.py", line 73, in _process
[handler(event) for handler in self._handlers[event.type]]
File "C:\Users\Truego\trader_fixed\vnpy\event\engine.py", line 73, in <listcomp>
[handler(event) for handler in self._handlers[event.type]]
File "C:\Users\Truego\trader_fixed\vnpy\app\cta_strategy\engine.py", line 221, in process_trade_event
self.sync_strategy_data(strategy)
File "C:\Users\Truego\trader_fixed\vnpy\app\cta_strategy\engine.py", line 861, in sync_strategy_data
save_json(self.data_filename, self.strategy_data)
File "C:\Users\Truego\trader_fixed\vnpy\trader\utility.py", line 115, in save_json
ensure_ascii=False
File "C:\vnstudio\lib\json__init.py", line 179, in dump
for chunk in iterable:
File "C:\vnstudio\lib\json\encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "C:\vnstudio\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "C:\vnstudio\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "C:\vnstudio\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "C:\vnstudio\lib\json\encoder.py", line 438, in _iterencode
o = _default(o)
File "C:\vnstudio\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.class.name__} '
TypeError: Object of type method is not JSON serializable
请问是什么问题?谢谢
最新版本增加了portfolio strategy engine,但是不支持限价单,那这样对策略的影响比较大,需要改策略。不太清楚portfolio manager是用来做什么的,麻烦望解释下区别,谢谢。另外关于cta strategy engine中的实盘部分,一个策略可以用在不同品种上同时运行吗?因为运行的时候发现变量在多个品种下是共享的。请问该如何进行多品种同策略的实盘操作,谢谢。