1)每次点击功能->CTA策略都会报错,需要将VN trader启动配置的文件夹删除重建之后才能够正常启动。
2)运行dual thrust 策略,下单成交之后,行情窗口行情停止跳动,好像是不再接收行情了。
1)每次点击功能->CTA策略都会报错,需要将VN trader启动配置的文件夹删除重建之后才能够正常启动。
2)运行dual thrust 策略,下单成交之后,行情窗口行情停止跳动,好像是不再接收行情了。
miaoming wrote:
1)每次点击功能->CTA策略都会报错,需要将VN trader启动配置的文件夹删除重建之后才能够正常启动。
2)运行dual thrust 策略,下单成交之后,行情窗口行情停止跳动,好像是不再接收行情了。
请问用的什么交易接口,什么机器和网络环境,以及提供下具体的报错截图?
用的CTP借口,联想的笔记本,电信家庭宽带,换了一台台式机也是同样的情况。
你的CTA策略缓存json文件被破坏了,删掉c:\users\administrator.vntrader目录,然后重启程序就行
删除重启还是遇到同样的情况。
我发现程序开仓之后,cta_strategy_data.json文件中的pos变量会变成1或-1,但是vntrader界面显示还是0,界面上的行情也从此时开始不再跳动,看起来像死机。
策略中,有成交或者行情变化,希望刷新界面时,需要调用put_event函数
加了这么多put_event 还是不好使,一开仓行情就不调动了。
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""
self.cancel_all()
if self.day_open == 0:
self.day_open = bar.open_price
self.range = self.last_high - self.last_low
self.long_entry = self.day_open + self.k1 * self.range
self.short_entry = self.day_open - self.k2 * self.range
if not self.range:
return
if bar.datetime.time() < self.exit_time:
if self.pos == 0:
if bar.close_price > self.day_open:
if not self.long_entered:
self.buy(self.long_entry, self.fixed_size, stop=True)
else:
if not self.short_entered:
self.short(self.short_entry,
self.fixed_size, stop=True)
elif self.pos > 0:
self.long_entered = True
self.sell(self.short_entry, self.fixed_size, stop=True)
if not self.short_entered:
self.short(self.short_entry, self.fixed_size, stop=True)
elif self.pos < 0:
self.short_entered = True
self.cover(self.long_entry, self.fixed_size, stop=True)
if not self.long_entered:
self.buy(self.long_entry, self.fixed_size, stop=True)
self.put_event()
if self.pos > 0:
if bar.close_price > self.long_entry * (1+self.stop_win):
self.sell(bar.close_price-1, self.fixed_size) # stop win
if bar.close_price < self.long_entry * (1-self.stop_loss):
self.sell(bar.close_price-1, self.fixed_size) # stop loss
if self.pos < 0:
if bar.close_price < self.short_entry * (1-self.stop_win):
self.cover(bar.close_price+1, self.fixed_size) # stop win
if bar.close_price > self.short_entry * (1 + self.stop_loss):
self.cover(bar.close_price+1, self.fixed_size) # stop win
self.put_event()
else:
if self.pos > 0:
self.sell(bar.close_price-1, abs(self.pos))
elif self.pos < 0:
self.cover(bar.close_price+1, abs(self.pos))
self.put_event()