xiaohe wrote:
持仓数据的更新应该取决于接口的获取方式,有一些可能是按特定的时间间隔查询,有一些可能是由交易所进行推送。如果感兴趣,可以自己print一下看看间隔是怎样的。
1:老师您好,我是用的盈透IB的gateway,在盈透的\vnpy\gateway\ib\ib_gateway.py文件里面没有找到相关“持仓"数据刷新时间,总是要等非常久,才能看见持仓-盈亏的更新,如下图所示,如果要想提高持仓-盈亏的刷新频率,需要修改ib_gateway.py里面的那部分代码呢?望指点,万分感激!
2:老师您好,使用盈透IB的gateway交易时,发出的所有委托(限价或者STOP)都无法看见委托时间,有什么办法可以解决这个问题呢?
1:使用如下代码,会存在重复发单的情况,可能是程序还未接收到成交回报,就再次发单了,如何避免这类情况呢?王老师指导,万分感激!
def on_tick(self, tick: TickData):
self.cancel_all()
self.bg_x.update_tick(tick)
self.price = tick.last_price
if self.pos > 0:
if tick.last_price < self.long_stop:
self.sell(tick.last_price*0.9, abs(self.pos))
self.write_log(f"策略名称:15号策略 {tick.datetime} 多头平仓:{abs(self.pos)}手 {tick.last_price*0.9} 备注:保命出场")
elif self.pos < 0:
if tick.last_price > self.short_stop:
self.cover(tick.last_price*1.2, abs(self.pos))
self.write_log(f"策略名称:15号策略 {tick.datetime} 空头平仓:{abs(self.pos)}手 {tick.last_price*1.2} 备注:保命出场")
self.put_event()
hxxjava wrote:
无思路,无代码,无过程,三无,谁能够回答你?呵呵
是我自己没理清思路,谢谢您,已修改,主要是想实现当if self.pos > 0:时,print(bar.datetime,bar.close_price ,"开空单 开仓手数:",self.lots)只打印一次,结果回测一直打印,您知道如何处理吗?望回答,万分感激
咨询老师一下,在on_trade中使用trade.offset == Offset.CLOSE如何获取平仓手数呢?我使用如下代码获取到的结果是,平仓: 0 手
def on_trade(self, trade: TradeData):
if trade.offset == Offset.CLOSE:
self.bar_counts = 0
print("策略名称:15号",trade.datetime,"平仓:", abs(self.pos),"手",trade.price,"备注:平仓")
打印出来的结果显示如下:平仓:0 手
策略名称:15号策略 2020-02-24 18:18:00+08:06 平仓: 0 手 13450.0 备注:平仓
望指导,万分感激!
1:vnpy中的持仓数据是多久更新一次呢?
2:具体是在vnpy的那个文件可以查询到持仓更新时间间隔呢?
关于vnpy意外停止,委托单全部取消,重启后是否还会重新发送原来取消的委托订单呢?
膜拜与期待!万分感激
1:在vnpy中如何避免反复打印开平仓数据呢?限制只打印一次即可
if self.pos > 0:
print(bar.datetime,bar.close_price ,"开空单 开仓手数:",self.lots)
1:原版example下的no_ui_run.py,在策略停止的时候都没有调用stop_all_strategy,这样就不会把结束时候的状态保存下来,这样就不是无人值守啊,example下的no_ui_run.py中是否有必要同步持仓和止盈止损的数据,把结束时候的状态保存下来,防止run.py的重启?
2:如何在策略on_bar函数内调用sync_data函数来同步数据?是直接在on_bar的最后面添加一句 self.sync_data就可以了吗?
self.sync_data
self.put_event()
2.1:如果在on_tick 、on_bar、on_xmin_bar都有交易,是否需要在on_tick 、on_bar、on_xmin_bar都添加self.sync_data这句代码呢?
3:是否可以在no_ui_run.py中,实现类似vntrader界面版一样,点击全部停止后,就自动同步持仓和止盈止损的variables列表数据到硬盘中? 望指导,万分感激
1:如何在no_ui.py中添加vnpy的email成交发送邮件的功能?望指导
1:老师您好,咨询一下,可以通过加载api数据计算出的变量,是否有必要放入variables列表里面去呢?
用Python的交易员 wrote:
策略会认为仓位就是0了,所以此时根据你的策略逻辑,应该只会做开仓操作
策略原本逻辑是:平仓,因为外盘的净持仓制度,现在反向开仓,这与策略逻辑不符,老师您好,针对这类问题,最好的解决方案是?
用Python的交易员 wrote:
- on_trade这个回调函数都没有推送bar,你直接访问这个变量肯定找不到了
- on_bar推送了bar,你要在on_trade里访问就要自己缓存下,这个是基础Python语法的问题了
老师您好,实在不好意思,给您添麻烦了,我基础比较差,您可以指导一下我吗?万分感激,望回复
1:在vnpy中,交易外盘A50品种,如果把.vntrader目录中的cta_strategy_data.json文件,原本持仓的pos=2修改为pos=0,策略平仓时是否还会反向开仓吗?
1:老师您好,如下面代码所示,在on_trade回调函数中使用print总是报错,望回复,万分感激
代码如下:
def on_trade(self, trade: TradeData):
"""
Callback of new trade data update.
"""
if trade.offset == Offset.CLOSE:
self.bar_counts = 0
print(bar.datetime, "bar_counts持仓周期计数器平仓归零")
报错如下:
File "C:\Users\78405\Desktop\vnpy_20200624\vnpy\app\cta_strategy\backtesting.py", line 945, in cross_stop_order
self.strategy.on_trade(trade)
File "C:\Users\78405\strategies\AtrRsiStrategy_Thorn荆轮止损.py", line 239, in on_trade
print(bar.datetime, "bar_counts持仓周期计数器平仓归零")
NameError: name 'bar' is not defined
2:在on_bar中使用这句代码print(bar.datetime, "bar_counts持仓周期计数器平仓归零")不会报错,是因为不能在on_trade中使用吗?
老师您好,咨询vnpy中一跳的具体函数名称是?
用Python的交易员 wrote:
课程中的方法,是由固定分钟整除切分,改为基于1分钟线的数量统计来切分。
如果发现回测结果不一致,那么大概率就是数据问题,缺失了部分导致的,用的是RQData数据吗?还是别的什么
1:嗯,是RQData,回测的是rb888.SHFE
2:vnpy自带的BarGenerator是基于什么原因无法自定义合成N分钟周期呢?
2:老师您好,是否可以把课程中的NewBargenerator,合并GitHub中的vnpy中呢? 自定义合成N周期,我看也是问的最多的问题之一,这对初学者还是有些难度的。
如下图所示,为什么vnpy在GitHub中Languages显示占比,C++占75.4%份额,反而Python只占16.0%呢?是编写api的原因吗?
1:examples/no_ui脚本中设置好启动、停止时间等信息,然后直接启动就可以7*24小时自动运行了吗?
2:是否还需要在windows任务计划建一个bat文件,然后把bat文件加入windows的任务计划每日定时运行no_ui脚本的bat文件吗?望回复,万分感激!