Пример #1
0
            if (_slope < self.params.up_slope):
                self.order = self.close()
            else:
                # 判断是否可以加仓吧。
                # 我的加仓方式是超过上个价格0.5个atr,就加仓一定比率
                _price_trade = self.position.price + self.atr[
                    -1] * self.params.atr_add
                if (_close > _price_trade):
                    _size = int(_max_size * self.params.ratio2)
                    # 不得超过最大比率
                    if (_size < _max_size * self.params.max_ratio):
                        self.order = self.buy(size=_size)
                pass
        # elif self.position.size < 0:
        # if(_slope > self.params.down_slope):
        # self.order = self.close()


if __name__ == '__main__':
    # Create a cerebro entity
    cerebro = CerebroBase.CerebroAGTD()
    # Add a strategy
    cerebro.addstrategy(Strategy_KAMA)

    # Set our desired cash start
    cerebro.set_cash(5000.0)

    cerebro.show_analyzer(cerebro.run())

    cerebro.show_plot()
Пример #2
0
                if pclose < pstop:
                    self.close()  # stop met - get out
                else:
                    pdist = self.atr[0] * self.p.atrdist
                    # Update only if greater than
                    self.pstop = max(pstop, pclose - pdist)
                    self.buy_add()
            # elif self.position.size < 0:
            # pclose = self.data.close[0]
            # pstop = self.pstop

            # if pclose > pstop:
            # self.close()  # stop met - get out
            # else:
            # pdist = self.atr[0] * self.p.atrdist
            # # Update only if greater than
            # self.pstop = min(pstop, pclose + pdist)
            # self.sell_add()


if __name__ == '__main__':
    # Create a cerebro entity
    cerebro = CerebroBase.CereborAGE()
    # Add a strategy
    cerebro.addstrategy(Strategy_MACD)
    # Set our desired cash start
    cerebro.set_cash(5000.0)
    cerebro.show_analyzer(cerebro.run())
    cerebro.show_plot()
Пример #3
0
        关于资金管理,大体如下:
            海龟交易 : 海龟交易赢在资金管理,重要的是每次损失不超过1%
                是根据真实波幅ATR来计算可能的亏损,再计算需要投入的手数
            凯莉法则 : 假设 p = 获胜的概率,q = 失败的概率,b = 赔率
                那么需要投入的资金为f = (bp - q) / b
                其中(bp - q) 可以理解为期望的盈利
                    如果这个为正,那么表示可以投入,
                    如果这个为负,表示不可以投入。

        """
        # Check if an order is pending ... if yes, we cannot send a 2nd one
        if self.order:
            return
        pass


if __name__ == '__main__':
    #  测试策略在这里
    # Create a cerebro entity
    cerebro = CerebroBase.CerebroAGUSDO()
    # Add a strategy
    cerebro.addstrategy(Strategy_sample)
    # Set our desired cash start
    cerebro.set_cash(10000.0)
    #  run
    results = cerebro.run()
    # 显示分析师的结果
    cerebro.show_analyzer(results)
    # 用图表显示结果
    cerebro.show_plot()
Пример #4
0
        if self.kama[0] > self.kama[-1] and self.kama[-2] > self.kama[-1]:
            self.order = self.buy()
            pass
        elif self.kama[0] < self.kama[-1] and self.kama[-2] < self.kama[-1]:
            # 这里就是卖掉了
            self.order = self.close()
            pass

        # Check if we are in the market
        if not self.position:
            pass
            # 如果没有订单。
        else:
            # 到这里往往表示有订单了。
            pass
        print(1 / 0)


if __name__ == '__main__':
    # Create a cerebro entity
    cerebro = CerebroBase.CerebroAUTD()
    # Add a strategy
    cerebro.addstrategy(Strategy_KAMA)

    # Set our desired cash start
    cerebro.set_cash(5000.0)

    cerebro.show_analyzer(cerebro.run())

    cerebro.show_plot()