为何VNPY自己合成的bar数据总有一些错误的异常数据?
经常出现一些偏离很远的价格,在其他行情软件上都没有这个价格,但vnpy合成的bar就有这个错误价格,哪位大神知道是什么原因吗?能否解决呢?
我想做一个止损程序,用script_trader,但这个程序要针对所有期货合约,由于合约太多,所以我不想一开始就订阅行情,希望能够在判断有持仓后,才订阅行情,然后再根据行情来判断是否要止损。
我写了如下一些代码,然后实际运行中,却无法获得行情,返回的tick为None,哪位大神帮忙看看是什么问题?
engine.connect_gateway(ctp_setting, "CTP")
subscribe_list = []
while True:
positions = engine.get_all_positions(use_df=False)
for item in positions:
volume = item.volume
if volume != 0:
if vt_symbol not in subscribe_list:
engine.subscribe(vt_symbol)
subscribe_list.append(vt_symbol)
tick = engine.get_tick(vt_symbol=vt_symbol)
以上最后一句,tick总是取不到。
在价差策略中用self.buy发出订单,到了spread_strategy_engine里面的def send_order中,这时req经过了一次converter的转换:
req_list = self.offset_converter.convert_order_request(
original_req, lock)
返回的是一个空的list,后面发单就不会成功。
进一步跟踪发现,是converter.py中,def convert_order_request_shfe()里面有个:
if req.volume > pos_available:
return []
而pos_available一直等于0,导致返回的是空值。
pos_available = self.short_pos - self.short_pos_frozen
最终发现,这里的self.short_pos 和 self.short_pos_frozen 始终等于0.
请问这个问题该如何解决呢?
目前的spread_setting模板好像有问题,哪位大神改成正确的啊?
仿照ctp的no ui格式,我想将其用于价差策略,按下面步骤改了一下,但好像有问题,策略一直不被执行,哪位大神帮我看看问题所在:
把引入的cta_engine 改成spread_engine:
# from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.app.spread_trading import SpreadTradingApp
把run_child中的主引擎改成spread引擎
# cta_engine = main_engine.add_app(CtaStrategyApp)
spread_engine = main_engine.add_app(SpreadTradingApp)
把后面的初始化改成:
spread_engine.start()
main_engine.write_log("spread策略初始化完成")
spread_engine.init_all_strategies()
sleep(10) # Leave enough time to complete strategy initialization
main_engine.write_log("spread策略全部初始化")
spread_engine.start_all_strategies()
main_engine.write_log("spread策略全部启动")
这样修改后,策略一直没有反应,请问是哪里错了?
一直在用vnpy1.9,好不容易下决心要切换到新版本,却发现很多功能没有啊,望大神们给予解答:
1、 1.9版本有个ctatratdng,想新开一个账号,直接复制一下这个文件夹就可以,同时要交易什么品种,直接在文件夹里面的cta_setting里面设置,每个文件夹可以不同的设置。但现在2.0版本,设置要到C盘下面的一个隐藏目录去更改? 这样岂非很麻烦?
2、 1.9版本的策略里面有个同步参数self.syncList, 可以在策略重启时读取之前保存的参数值, 2.0版本的策略模板里面好似没有这个了?要如何才能保存参数呢?
2.0.9版本价差引擎中的setting_filename在哪里?
setting_filename = "spraed_trading_strategy.json", 但找不到spraed_trading_strategy.json这个文件。
之前总感觉加载的历史数据有问题,算出来的指标和其他软件不一致,用了一年多才发现,原来数据库中保存的K线中,夜盘的时间竟然算到了第二天,导致加载数据时,昨天晚上夜盘的数据总是在今天白天数据之后,所以算出来的指标就都错了。
这个好像又牵涉到合成K线的问题,请问群主有办法解决吗?
实盘运行过程中,经常会预见策略发出错误指令,然后返回一个错误的提示,策略中要如何读出这个错误提示从而调整某些参数呢?
常见的例如策略有持仓,实际没有持仓,策略发出平仓指令,交易所就返回错误提示说清仓量超过持仓量,这时候如果不修改策略持仓数据,就会一直不停发出平仓指令,也就一直收到错误提示,这种情况该如何避免?
请教个问题,在某个品种的策略运行中,怎么取到另一个品种的tick数据? 我在vtEngine中看到一个函数gettick(),但用此取出来是个None值