BBI指标和BOLL布林带组合的量化策略真的能稳定盈利吗

企业微信

BBI和BOLL到底是什么东西

先别被这些英文缩写吓到。BBI就是四根均线的平均值,把3日、6日、12日、24日均线加在一起除以4。它比单根均线反应更稳,不会因为一天暴涨暴跌就乱翻方向。BOLL布林带更直观,中间一条线是20日均线,上下各画一条通道,通道宽度跟着股价波动自动收放。股价在通道里跑,碰到上轨容易回落,碰到下轨容易反弹,但这不是铁律,得看趋势。

很多人把BBI当趋势过滤器,把BOLL当波动测量仪。两个一起用,能解决一个老问题:单用BOLL,震荡市里反复被上下轨扇耳光;单用BBI,横盘时均线粘合,信号模糊。

BBI指标和BOLL布林带组合的量化策略真的能稳定盈利吗

这个组合策略底层逻辑是什么

BBI线向上倾斜,说明中期趋势偏多。BBI线向下倾斜,中期趋势偏空。BOLL中轨是20日均线,股价站上中轨,短期动能偏强。股价跌破中轨,短期动能偏弱。

具体信号设计:

  • BBI向上,股价回调到BOLL中轨附近不破,再次向上突破中轨时做多。

  • BBI向下,股价反弹到BOLL中轨附近受阻,再次向下跌破中轨时做空。

  • 止损放在BOLL上轨或下轨之外一定距离,或者ATR的1.5倍。

  • 止盈可以用移动止盈,价格跌破BBI线平仓多单,涨破BBI线平空单。

这套逻辑本质是顺大势、逆小势。BBI定多空大方向,BOLL中轨找回调入场点。

股票和期货上怎么用才不亏钱

股票市场T+1,当天买不能卖,这套策略更适合日线级别,持股周期三五天到两三周。期货市场T+0且带杠杆,可以切换到30分钟或1小时级别,但假信号会多很多。

有个关键细节:股票做多只看BBI向上加股价在BOLL中轨上方,期货可以做空,所以BBI向下加股价在BOLL中轨下方就是空头信号。

仓位管理比信号本身更重要。单笔亏损控制在总资金1%到2%。期货杠杆下,如果每次止损2%,连续错五次也才亏10%,还能翻身。重仓一次错,直接出局。

用Python快速回测这个策略

下面代码用pandas和backtrader框架跑一个简化版。数据用股票或期货的日线OHLC。


import backtrader as bt

import pandas as pd

class BbiBollStrategy(bt.Strategy):

    params = (('bbi_periods', [3,6,12,24]), ('boll_period', 20), ('boll_dev', 2.0),)

    def __init__(self):

        self.bbis = []

        for p in self.params.bbi_periods:

            self.bbis.append(bt.indicators.SMA(self.data.close, period=p))

        self.bbi = (self.bbis[0] + self.bbis[1] + self.bbis[2] + self.bbis[3]) / 4

        self.boll = bt.indicators.BollingerBands(self.data.close, period=self.params.boll_period, devfactor=self.params.boll_dev)

        self.order = None

    def next(self):

        if self.order:

            return

        price = self.data.close[0]

        bbi_up = self.bbi[0] > self.bbi[-1]

        bbi_down = self.bbi[0] < self.bbi[-1]

        mid = self.boll.mid[0]

        if not self.position:

            if bbi_up and price > mid and self.data.close[-1] <= mid:

                self.order = self.buy()

            elif bbi_down and price < mid and self.data.close[-1] >= mid:

                self.order = self.sell()

        else:

            if self.position.size > 0 and price < self.bbi[0]:

                self.order = self.close()

            elif self.position.size < 0 and price > self.bbi[0]:

                self.order = self.close()

    def notify_order(self, order):

        if order.status in [order.Completed, order.Canceled, order.Margin]:

            self.order = None

跑回测时加个0.1%的手续费和滑点,结果会真实很多。

这套策略的致命弱点在哪里

震荡市是BBI加BOLL的坟墓。价格在BBI线附近来回穿,BOLL中轨也走平,反复触发买入卖出信号,手续费和滑点能把本金啃掉一大块。

解决办法:加一个波动率过滤器。BOLL通道宽度除以中轨小于某个阈值,比如2%,直接停止交易。或者用ADX指标,ADX低于20说明没趋势,空仓等待。

另一个弱点是跳空缺口。期货夜盘跳空,股票业绩公告跳空,止损单可能以极差价格成交。用限价止损或者期权对冲能缓解,但普通散户做不到。最土的办法是降低仓位,把单笔风险控制在0.5%。

实战中怎么调参数不翻车

BBI的四个周期不要随便改。3、6、12、24是经典组合,对应短期、中期、长期。改成5、10、20、60也能用,但信号频率会降一半。

BOLL的20日和2倍标准差是标准配置。调成26日和2倍也行,差别不大。调成1.5倍标准差,通道变窄,信号增多,假信号也增多。调成2.5倍,信号太少,错过行情。

参数优化的正确姿势是固定一个市场,比如沪深300股指期货,用2018到2023年的数据做样本内优化,用2024年数据做样本外验证。样本外亏钱,说明参数过拟合,直接扔掉。

普通人能不能靠这个策略赚钱

能,但前提是接受它是个趋势跟踪系统。趋势跟踪的胜率通常只有35%到45%,靠的是盈亏比。十次交易错六次,对的那四次每次赚20%,错的那六次每次亏5%,最终还能盈利。

心理上最难的是连续止损。BBI加BOLL在震荡市可能连续错七八次,很多人这时候就放弃信号开始手动干预。一干预,趋势来了也吃不到。

资金曲线不是直线上升。它会回撤,回撤幅度可能达到20%。期货杠杆下回撤40%也正常。接受不了这个波动,就把杠杆降到1倍以下,或者只做股票不做期货。

这套策略不神秘,也不保证暴富。它是一套有逻辑、可执行、可回测的规则。规则之外的东西,比如心态、仓位、执行力,才是决定长期能不能活下来的关键。

转载请注明出处:https://www.lianghuajiaoyi.top/wenzhang/BBI-zhibiao-BOLL-bu-lindai-969.html