策略概述
高性能多指标策略的核心思想是利用多种技术指标的综合信号来判断市场走势。不同的指标可以从不同的角度反映市场的状态,例如价格动能、交易量变化和价格波动范围等。通过将这些指标融合在一起,我们可以更全面地了解市场,从而做出更明智的交易决策。策略的回测和运行基于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)操作合并成一个整体条件。只有当所有条件都为真时,最终的组合条件才为真,从而生成交易信号。这种方式确保了交易信号的可靠性,避免了因单一条件触发而导致的错误交易。