专栏名称: Python中文社区
致力于成为国内最好的Python开发者学习交流平台,这里有关于Python的国内外最新消息,每日推送有趣有料的技术干货和社区动态。 官方网站:www.python-cn.com
目录
相关文章推荐
Python爱好者社区  ·  自动驾驶,yyds ·  3 天前  
Python爱好者社区  ·  机器学习全书.PDF下载 ·  3 天前  
Python中文社区  ·  出海赚美元!程序员摆脱35岁危机的出路? ·  5 天前  
Python爱好者社区  ·  两天私活,4w到手 ·  6 天前  
狐狸说安全  ·  4W,建议师傅们冲一冲这个方向!! ·  5 天前  
51好读  ›  专栏  ›  Python中文社区

完全解读!高性能多指标加密货币量化策略

Python中文社区  · 公众号  · Python  · 2024-09-22 08:33

正文

大家好,我是橙哥!今天我想和大家分享一个基于高性能多指标的加密货币量化交易策略。这个策略结合了多种技术指标,如相对强弱指数(RSI)、资金流量指数(MFI)、布林带(Bollinger Bands)和指数移动平均线(EMA)。通过灵活的参数设置和精细的条件定义,这个策略能够精准捕捉市场趋势,生成有效的买入和卖出信号,从而帮助我们实现交易盈利的最大化。
如果你想学习加密货币、美股、国内股市和期货相关的量化交易策略,并且获取本文完整源码和技术文档,可以加入宽客邦量化俱乐部,每周内部视频直播讲解:

策略概述


高性能多指标策略的核心思想是利用多种技术指标的综合信号来判断市场走势。不同的指标可以从不同的角度反映市场的状态,例如价格动能、交易量变化和价格波动范围等。通过将这些指标融合在一起,我们可以更全面地了解市场,从而做出更明智的交易决策。策略的回测和运行基于Freqtrade加密货币量化交易平台,相关教程可以在文末获取。


在这个策略中,我们选用了 RSI 和 MFI 作为动量指标,布林带作为价格波动范围的衡量工具,EMA 则用于识别价格趋势。此外,我们还设置了灵活的参数,使得策略能够适应不同的市场环境。例如,策略允许我们选择是否启用某些指标,以及设定指标的阈值和周期。


策略性能


在历史数据的回测中,这个策略表现出色,共执行了 30,918 笔交易。其中,盈利交易有 18,982 笔,持平交易 3,408 笔,亏损交易 8,528 笔。平均利润为 0.39%,中位数利润为 0.65%,总利润达到了 119,934.26 USDT,约等于 119.93% 的收益率。平均持仓时间为 8 小时 12 分钟。这些数据说明了策略的有效性和稳定性。


策略原理详解


时间框架的选择


策略运行在 15 分钟的时间框架上。这意味着每根 K 线代表 15 分钟的市场数据。选择这样的时间框架有助于捕捉市场的短期波动,为我们提供更多的交易机会。同时,这个时间框架也兼顾了交易成本和市场噪声,避免了过多的频繁交易。


收益率(ROI)策略


为了更好地控制交易的退出时机,策略定义了一个分段的 最小收益率(ROI) 策略。具体而言,持仓时间为 0 分钟时,最小 ROI 为 16.2%;持仓 69 分钟后,最小 ROI 降为 9.7%;持仓 229 分钟后,最小 ROI 进一步降为 6.1%;持仓超过 566 分钟后,不再要求最小 ROI,可在任何利润下卖出。这种分段的策略有助于在市场快速波动时锁定利润,同时在行情不明朗时减少持仓时间,降低风险。


止损策略


策略设置了一个固定的止损点,即当持仓的损失达到 34.5% 时,策略将自动止损,防止更大的亏损。这一设置是为了在极端市场条件下保护我们的资金安全。


追踪止损(Trailing Stop)


为了在市场有利的情况下保护利润,策略启用了 追踪止损 功能。当利润达到 1% 时,开始启用追踪止损,并设置了一个 5.8% 的偏移。这意味着当价格继续朝有利方向移动时,止损价会跟随价格上涨,从而锁定更多的利润。如果价格反转并触及新的止损价,策略将退出交易。


技术指标的应用


相对强弱指数(RSI)


RSI 是一种动量指标,衡量价格的涨跌速度和变化,用于识别超买或超卖的市场条件。当 RSI 值低于某个阈值时,市场可能处于超卖状态,可能是买入的机会;反之亦然。


资金流量指数(MFI)


MFI 结合了价格和成交量,评估资金的流入和流出,用于确定市场是否处于超买或超卖状态。与 RSI 类似,但 MFI 考虑了成交量的信息,使其在某些情况下更加可靠。


布林带(Bollinger Bands)


布林带通过计算价格的标准差,提供了价格波动的范围。策略使用了四组不同标准差的布林带(1 到 4),以捕捉不同程度的价格波动。当价格突破布林带的上下轨时,可能预示着趋势的反转或加速。


指数移动平均线(EMA)


EMA 是一种加权的移动平均线,给近期的数据赋予更大的权重,用于识别价格趋势。策略使用了快速和慢速的 EMA,当两者发生交叉时,可能意味着趋势的变化。


指标的计算


在策略中,我们首先需要计算上述的技术指标。以下是核心的计算部分:



在这段代码中,我们使用 TA-Lib 库计算了 RSI 和 MFI 指标。接下来,我们通过循环计算标准差为 1 到 4 的布林带,获取不同波动范围的价格通道。最后,我们根据买入和卖出参数中的 EMA 周期,计算了对应的 EMA。这样,我们就为后续的信号生成打下了基础。


买入信号的生成


买入信号的生成是策略的关键部分,它基于多种条件的组合。以下是核心逻辑:



在这段代码中,我们首先初始化了一个条件列表。守护条件用于过滤不利的市场环境,包括 RSI、MFI 和 EMA 的条件,具体是否启用由参数决定。触发条件是当收盘价低于选定的布林带下轨时,认为是买入的好时机。我们还添加了成交量条件,确保市场有足够的流动性。最后,我们使用逻辑与操作将所有条件组合在一起,只有全部满足时,才会生成买入信号。


卖出信号的生成


卖出信号的生成与买入信号类似,也是基于多种条件的组合:



在这里,我们同样先初始化条件列表,添加守护条件和触发条件。守护条件确保市场处于适合卖出的状态,例如 RSI 和 MFI 指标高于某个阈值。触发条件是当收盘价高于选定的布林带上轨时,认为是卖出的好时机。成交量条件也被包含在内,以确保市场的流动性。最终,我们将所有条件组合,生成卖出信号。


条件组合逻辑


在买入和卖出信号的生成中,我们都使用了条件组合的逻辑:

这行代码的作用是将多个布尔条件使用逻辑与(AND)操作合并成一个整体条件。只有当所有条件都为真时,最终的组合条件才为真,从而生成交易信号。这种方式确保了交易信号的可靠性,避免了因单一条件触发而导致的错误交易。

策略的优化和执行


策略中有许多参数,如 EMA 的周期、RSI 和 MFI 的阈值,以及是否启用某些条件等。这些参数对策略的性能有着重要影响。通过超参数优化,我们可以找到最适合当前市场环境的参数组合,提升策略的盈利能力。


Freqtrade 提供了 Hyperopt 功能,可以帮助我们自动地调整这些参数,以达到最优的绩效指标。优化的目标可以是最大化总收益率、夏普比率等。


首先需要确保安装了 Freqtrade 及其相关依赖库,如 pandas、numpy 和 TA-Lib 等。然后,将策略代码保存为一个 Python 文件,并将其放置在 Freqtrade 的策略目录中。接着,在 Freqtrade 的配置文件中指定使用该策略。为了提升策略的表现,用户可以选择使用 Hyperopt 功能对策略参数进行优化,从而找到最适合当前市场环境的参数组合。最后,运行 Freqtrade,即可开始进行实时交易或回测,以验证策略的有效性。


总结


高性能多指标策略通过融合多种技术指标,提供了一个灵活而高效的自动交易解决方案。它的多条件组合使得交易信号更加可靠,参数的可调节性也使得策略能够适应不同的市场环境。希望这篇文章能帮助大家更好地理解和应用这个策略,实现盈利的目标。如果你对这个策略有任何疑问或建议,欢迎在评论区与交流。本文完整源码、技术文档、Freqtrade文档、视频教程请在下方获取



点击阅读原文,加入「宽客邦量化俱乐部