看报错应该和天勤的TQSDK有关系,换个别的数据服务(或者干错去掉)试试?
在VeighNa Trader主界面中,点击菜单栏的【配置】按钮,修改其中的datafeed相关字段即可
感谢分享!没看出来这种计算方法的额外信息,这个XMA主要的思路是什么呢?
搜了下似乎xlwings也要付费的PRO版本才能跑RTD:https://github.com/xlwings/xlwings/issues/888
操作系统的默认语言是否为中文?
用3.4.0的install.bat试试吧
这个思路方便啊,啥时候跑完了通知一下
通常应该是合成bars推送的条件判断不严谨导致的了
VeighNa Studio直接在www.vnpy.com主页就能下载。
另外Github上的仓库代码从3.0开始就做了模块拆分,具体功能模块自己按需安装即可
#判断是否平仓
for vt_symbol in self.vt_symbols:
target_pos = self.targets[vt_symbol]
current_pos = self.get_pos(vt_symbol)
pos_diff = target_pos - current_pos
volume = abs(pos_diff)
price = self.last_tick_price[vt_symbol]
if pos_diff > 0:#开多或平空
# price = bars[vt_symbol].close_price
if current_pos < 0:
self.cover(vt_symbol, price, volume)
self.sig[vt_symbol] = 0
else:
self.buy(vt_symbol, price, volume)
# self.sig[vt_symbol] = 1
elif pos_diff < 0:
# price = bars[vt_symbol].close_price
if current_pos > 0:
self.sell(vt_symbol, price, volume)
self.sig[vt_symbol] = 0
else:
self.short(vt_symbol,price, volume)
# self.sig[vt_symbol] = -1
self.put_event()
看了下你的buy函数调用,只出现在了这个目标仓位交易操作里,on_bars函数头部也调用了cancel_all全撤之前的委托。
之前截图里看不到委托号信息,如果是不一样的话,建议排查下你的on_tick函数里的那个pbg(看着应该是K线合成器?),看看是否同一个时间点重复推送了多次。
排查方式可以在on_bars函数头部,加一个self.write_log(str(datetime.now())),打印输出下on_bars被调用的本地时间
感谢分享!
注意从www.vnpy.com下载安装包,现在名字是VeighNa了
订阅后要等待服务器数据推送过来,才会有行情能get_tick获取到。
所以subscribe后要等一段时间,另外subscribe函数的入参是vt_symbols合约代码列表,而不是单一的合约代码字符串
pip升级下vnpy_datamanager到最新版
DataManager没有提供Tick数据的查看功能(因为数量太大了,UI会卡死),可以直接通过开发接口访问,大概如下:
from vnpy.trader.database import get_database
db = get_database()
ticks = db.load_tick_data(xxx)
其中xxx是你要加载的数据参数(代码、交易所、开始、结束)
贴下具体的策略代码?
策略中不要sleep,会阻塞事件引擎运行,导致整个程序卡顿
如果要启动后就立即恢复的话,还可以在on_tick回调函数下,通过一次性变化的状态量来控制。
否则其实常规的逻辑写法,在第一分钟on_bar走完后应该也会挂出去停止单。