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

在self.buy(bar.close_price + 5, self.fixed_size) 后面加上
print("开仓"),
在self.sell(long_stop, abs(self.pos), stop=True)加上
print("平多仓")
输出来应该是一次“开仓”一次“平多单”,为什么一直输出“开多仓”,然后再输出“平多仓”

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

委托记录没有错,一开一平,但是就是打印输出有问题

Administrator
avatar
加入于:
帖子: 1468
声望: 68

那就是打印输出语句放的位置问题了,自己检查吧

Member
avatar
加入于:
帖子: 26
声望: 0
    if self.pos == 0:
        self.intra_trade_high = bar.high_price
        self.intra_trade_low = bar.low_price

        if self.atr_value > self.atr_ma:
            if self.rsi_value > self.rsi_buy:
                self.buy(bar.close_price + 5, self.fixed_size)
                print("开多仓")
            elif self.rsi_value < self.rsi_sell:
                self.short(bar.close_price - 5, self.fixed_size)
                print("开空仓")
    elif self.pos > 0:

        self.intra_trade_high = max(self.intra_trade_high, bar.high_price)
        self.intra_trade_low = bar.low_price

        long_stop = self.intra_trade_high * \
            (1 - self.trailing_percent / 100)
        self.sell(long_stop, abs(self.pos), stop=True)
        print("平多仓")

    elif self.pos < 0:
        self.intra_trade_low = min(self.intra_trade_low, bar.low_price)
        self.intra_trade_high = bar.high_price

        short_stop = self.intra_trade_low * \
            (1 + self.trailing_percent / 100)
        self.cover(short_stop, abs(self.pos), stop=True)
        print("平空仓")
    self.put_event()

放到了开仓函数和平仓函数的后面

Administrator
avatar
加入于:
帖子: 1468
声望: 68

注意,这里打印的内容是下单操作,每次on_bar调用头部的cancel_all会全部撤掉未成交委托,你要看成交记录的话,应该在on_trade里打印

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

成交记录里面能对上的,不懂回测的逻辑让你见笑啦,谢谢解答

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3