专栏名称: Python中文社区
致力于成为国内最好的Python开发者学习交流平台,这里有关于Python的国内外最新消息,每日推送有趣有料的技术干货和社区动态。 官方网站:www.python-cn.com
目录
相关文章推荐
Python爱好者社区  ·  爬虫行情变了,差别真的挺大。。。 ·  5 小时前  
Python爱好者社区  ·  《Machine Learning ... ·  昨天  
Python爱好者社区  ·  DeepSeek 被放弃了,阿里牛逼! ·  2 天前  
Python爱好者社区  ·  刚刚,DeepSeek放出重磅论文!梁文锋亲 ... ·  4 天前  
Python爱好者社区  ·  吴恩达,yyds ·  4 天前  
51好读  ›  专栏  ›  Python中文社区

三年稳赚40倍!用布林带挤压策略跑赢特斯拉

Python中文社区  · 公众号  · Python  · 2025-02-22 08:08

正文

图片

大家好,我是橙哥!股市如战场,想要稳中求胜?量化交易作为一项结合技术分析、算法和数据的强大工具,是股市交易中的利器。而布林带策略作为一种经典的技术分析工具,在众多交易者中获得了广泛应用。今天我将分享一个基于 布林带挤压(Bollinger Bands Squeeze) 的量化策略,用代码带你“躺赚”! 特斯拉(TSLA)3年回测收益超40%,跑赢基准收益近40倍! 我们将通过一份详细的代码,深入探讨 布林带挤压策略在量化交易中的实现,结合数据获取、策略回测、结果分析等多个方面 ,帮助大家更好地理解这一策略的应用。 请在文末获取本文完整代码。

布林带挤压策略的核心概念

布林带是一种基于股价波动性和统计学原理的技术指标,由三条线组成:
1. 上轨线 :是中期移动平均(SMA)加上标准差的倍数。
2. 下轨线 :是中期移动平均减去标准差的倍数。
3. 中轨线 :是简单移动平均线(SMA)。
布林带的核心优势在于它能够反映市场的波动性。 通过上轨和下轨的设置,布林带能帮助交易者 识别市场的超买或超卖区域 ,而中轨则提供了一个平衡点。布林带的宽度会随着市场波动性的变化而变化, 宽度越大,市场波动性越强;宽度越小,市场波动性越弱。

其中, 布林带挤压(Bollinger Band Squeeze)是布林带策略中的一个重要信号,它代表着市场的波动性减少,通常预示着市场即将出现剧烈波动。 这种现象通常会出现在价格横盘整理的时期,当布林带宽度变小,意味着市场上的价格波动范围被压缩,随后可能会出现价格的剧烈突破。因此, 布林带挤压策略就是在布林带挤压发生时提前布局,等待价格突破的时机。

布林带挤压策略的核心思想是 利用布林带宽度挤压的现象来捕捉市场即将出现的波动 ,通常在这种时期,价格会在布林带的上下轨之间震荡,直到某一方的突破。 布林带挤压常常是潜在的“爆发点” ,价格往往会突破某一方向并快速运动。

第一部分:数据获取、布林带计算与图形展示

1. 数据获取与处理

在任何量化交易策略中,数据获取是最基础的一步。 我们通过 Twelve Data API来获取特斯拉(TSLA)股票的历史日线数据。 以下代码通过发送API请求,获取指定时间段内的股票数据,并将其转化为Pandas DataFrame格式,以便后续处理:

通过这段代码,我们成功地获取了特斯拉的历史数据,并整理成适合分析的格式。特别要注意,API返回的数据包括股票的多个属性,如开盘价、收盘价、最高价、最低价等,我们只保留了收盘价,以便进行后续的布林带计算。特斯拉的股价走势图如下所示:

2. 布林带计算

布林带的计算基于简单移动平均(SMA)和标准差(STD)。通过以下代码,我们计算了布林带的上轨、下轨和带宽:

在这里,我们设置了20天的移动平均周期,标准差倍数为2,计算了布林带的上下轨线。布林带宽度( BB_Width )则是上轨与下轨的差,反映了市场的波动性。

3. 识别布林带挤压(Squeeze)

布林带挤压(Squeeze)是交易者常用的技术信号,它表明市场波动性处于低点,预示着未来可能出现剧烈的价格波动。通过以下代码, 我们计算布林带宽度在过去50天内的最小值来识别Squeeze信号

当布林带的宽度达到过去50天的最小值时,我们将其标记为Squeeze点,预示着市场可能会发生大的价格波动。

4. 绘制布林带图形

为了便于理解,我们通过Matplotlib将布林带和收盘价绘制成图,并突出显示Squeeze点:

通过这段代码,我们能够直观地看到布林带的上下轨和收盘价,以及那些可能预示着市场即将发生波动的Squeeze点。 图中的紫色点即为Squeeze信号,它们通常代表市场即将出现突破。

第二部分:策略回测与资金管理

1. 数据获取

我们首先定义了必要的参数,如股票代码、时间间隔、开始与结束日期,然后通过API获取数据。以下是获取数据的完整代码:

2. 计算布林带

使用与第一部分相同的 calculate_bollinger_bands 函数,我们计算了布林带,并为后续策略提供了基础:

3. 交易策略

我们根据布林带挤压和价格突破的条件定义了交易信号:
进入信号 :当股价突破上轨或出现Squeeze。
退出信号 :当股价跌破下轨。

4. 回测与资金管理

通过 vectorbt






请到「今天看啥」查看全文


推荐文章
Python爱好者社区  ·  爬虫行情变了,差别真的挺大。。。
5 小时前
Python爱好者社区  ·  《Machine Learning Yearning》中文.pdf
昨天
Python爱好者社区  ·  DeepSeek 被放弃了,阿里牛逼!
2 天前
Python爱好者社区  ·  吴恩达,yyds
4 天前
魔鬼心理学  ·  注意!你的手机,出卖了你的...
7 年前
CP头像集  ·  请找一个你爱的,也爱你的人结婚
7 年前