vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 15
声望: 0

1)每次点击功能->CTA策略都会报错,需要将VN trader启动配置的文件夹删除重建之后才能够正常启动。

2)运行dual thrust 策略,下单成交之后,行情窗口行情停止跳动,好像是不再接收行情了。

Administrator
avatar
加入于:
帖子: 2125
声望: 96

miaoming wrote:

1)每次点击功能->CTA策略都会报错,需要将VN trader启动配置的文件夹删除重建之后才能够正常启动。

2)运行dual thrust 策略,下单成交之后,行情窗口行情停止跳动,好像是不再接收行情了。

请问用的什么交易接口,什么机器和网络环境,以及提供下具体的报错截图?

Member
avatar
加入于:
帖子: 15
声望: 0

用的CTP借口,联想的笔记本,电信家庭宽带,换了一台台式机也是同样的情况。
description

description

Administrator
avatar
加入于:
帖子: 2125
声望: 96

你的CTA策略缓存json文件被破坏了,删掉c:\users\administrator.vntrader目录,然后重启程序就行

Member
avatar
加入于:
帖子: 15
声望: 0

删除重启还是遇到同样的情况。

Member
avatar
加入于:
帖子: 15
声望: 0

我发现程序开仓之后,cta_strategy_data.json文件中的pos变量会变成1或-1,但是vntrader界面显示还是0,界面上的行情也从此时开始不再跳动,看起来像死机。

Administrator
avatar
加入于:
帖子: 2125
声望: 96

策略中,有成交或者行情变化,希望刷新界面时,需要调用put_event函数

Member
avatar
加入于:
帖子: 15
声望: 0

加了这么多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()
© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3