backtrader综合案例与海龟策略的实现

家人莫名就“阳”了,看状态应该还好,目前我还好。

北京这几天早晚高峰人都还行,没有特别多。这就是“市场”的力量,大家该不出门自然不出门,“计划”让大家一起不出门会出问题。

早与晚的事情,我倒不恐慌,当然战术上重视,其实就是口罩戴好的问题,所谓快递啊,接触啊之类的其实还好。

做投资有几天的。从场外基金开始,其实花了很多时间,很多主动型基金我都分析过,但经过去年市场风格切换,有两位特别看好的基金经理,不仅跟不上市场(跟不上正常),而是发生了大的回撤,以致于他所在的公司都不相信只是暂时回调,而是能力出了问题。——这本身就是个玄学,事后看很清楚,事前看一片茫然。

当然做场外基金这段时间,最大的收获是——大类资产配置。总结起来也非常简单:找到长期向上的低相关性的回报流,配置大类资产,做好定期再平衡——后来我干脆用“恒定市场”来再平衡。以追求年化10%的长期回报。目前看这个体系比较成熟了。看遍了市场的几乎所有的理财书,100万$与500万RMB,可能是财务自由入门的一个点(年入50万的被动收入,其实就是北京一个金领的年薪水平)。

很多人想不明白这10%,当然更多人认为500万更难。500只是一个概数,看个人需求,200或300也可以。另外延伸出一个核心逻辑就是提升工资外收入占比。要么创业要么副业。副业是个不错的起点。

现在做场内基金的组合,今天想重点说一说:海龟策略。

海龟交易法则的策略思路:

入场条件:当收盘价突破20日价格高点时,买入一单元股票;

加仓条件:当价格大于上一次买入价格的0.5ATR(平均波幅),买入一单元股票,加仓次数不超过3次;

止损条件:当价格小于上一次买入价格的2ATR时清仓;

离场条件:当价格跌破10日价格低点时清仓。

这里的20日价格高点和10日价格低点构成唐奇安通道,所以海龟交易法则也可以理解成通道突破的趋势跟踪

原则:掌握优势,管理风险,坚定不移,简单明了。

截断风险,让利润奔跑

def __init__(self):
    #self.high = self.data.high
    #self.high_ = self.data.high(-1)
    self.buyprice = 0
    self.buycomm = 0
    self.buy_size = 0
    self.buy_count = 0
    self.order = None

    # 海龟交易法则中的唐奇安通道和平均波幅ATR
    self.H_line = bt.indicators.Highest(self.data.high(-1), period=self.p.long_period)
    self.L_line = bt.indicators.Lowest(self.data.low(-1), period=self.p.short_period)
    self.TR = bt.indicators.Max((self.data.high(0) - self.data.low(0)),
                                abs(self.data.close(-1) - self.data.high(0)),
                                abs(self.data.close(-1) - self.data.low(0)))
    self.ATR = bt.indicators.SimpleMovingAverage(self.TR, period=14)

    # 价格与上下轨线的交叉
    self.buy_signal = bt.ind.CrossOver(self.data.close(0), self.H_line)
    self.sell_signal = bt.ind.CrossOver(self.data.close(0), self.L_line)

def next(self):

    # 入场:价格突破上轨线且空仓时
    if self.buy_signal > 0 and self.buy_count == 0:

        self.buy_size = self.broker.getvalue() * 0.2 #/ self.ATR
        print(self.data.open[0]* self.buy_size)
        self.buy_size = int(self.buy_size / 100) * 100
        #self.sizer.p.stake = self.buy_size
        self.buy_count = 1
        self.order = self.buy(size=self.buy_size)
        return

    # 加仓:价格上涨了买入价的0.5ATR且加仓次数少于3次(含)
    if self.data.close > self.buyprice + 0.5 * self.ATR[0] and 0 < self.buy_count <= 4:
        self.buy_size = self.broker.getvalue() * 0.2 #/ self.ATR
        self.buy_size = int(self.buy_size / 100) * 100
        #self.sizer.p.stake = self.buy_size
        self.order = self.buy(size=self.buy_size)
        self.buy_count += 1
    # 离场:价格跌破下轨线且持仓时
    if self.sell_signal < 0 and self.buy_count > 0:
        self.order = self.close()
        self.buy_count = 0
        # 止损:价格跌破买入价的2ATR且持仓时
    if self.data.close < (self.buyprice - 2 * self.ATR[0]) and self.buy_count > 0:
        self.order = self.close()
        self.buy_count = 0

图片

小结:

海龟策略很适合backtrader拿来练手,因为比较全面。

但趋势交易其实都是有超额收益的,多与少罢了。但投资最难的地方,想要更大的收益,更少的风险,如何控制到回撤,这个平衡很难。

 

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/104191
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注