资源加载中... loading...

多周期RSI背离与支撑阻力组合量化策略

Author: ChaoZhang, Date: 2024-12-20 17:01:44
Tags: RSI

多周期RSI背离与支撑阻力组合量化策略

概述

该策略是一个结合了RSI技术指标、价格背离和支撑阻力位的量化交易系统。策略通过识别RSI与价格之间的背离关系,并结合支撑阻力位的突破来确定交易信号,同时集成了止损和止盈机制以控制风险。

策略原理

策略主要基于以下几个核心组件: 1. RSI指标计算:使用14周期的相对强弱指标(RSI)来衡量价格动能 2. 支撑阻力位识别:通过50个周期的最高价和最低价来确定关键价格水平 3. 背离判定: - 牛市背离:当价格创新低而RSI未创新低时,且价格在支撑位上方 - 熊市背离:当价格创新高而RSI未创新高时,且价格在阻力位下方 4. 风险管理: - 入场后设置1%的止损 - 设置2%的止盈目标

策略优势

  1. 多重确认机制:结合了动量指标(RSI)、价格形态(背离)和市场结构(支撑阻力),提供了更可靠的交易信号
  2. 风险控制完善:预设的止损止盈机制能有效控制每笔交易的风险
  3. 适应性强:策略参数可根据不同市场条件进行调整
  4. 信号明确:交易条件清晰,便于执行和回测

策略风险

  1. 假突破风险:在横盘市场可能出现频繁的假突破信号
  2. 参数敏感性:RSI周期、支撑阻力周期的选择对策略表现影响较大
  3. 滑点影响:在快速行情中,实际成交价可能与信号价格存在偏差
  4. 市场环境依赖:在趋势明显的市场中表现较好,而在震荡市场中可能产生假信号

策略优化方向

  1. 时间框架优化:可以添加多时间框架确认机制,提高信号可靠性
  2. 止损优化:可以引入动态止损机制,如跟踪止损
  3. 过滤器引入:添加成交量、波动率等过滤器,减少假信号
  4. 参数自适应:开发自适应参数机制,使策略能够根据市场条件自动调整参数

总结

该策略通过结合技术分析中的多个重要概念,构建了一个相对完整的交易系统。策略的优势在于多重确认机制和完善的风险控制,但同时也面临参数选择和市场环境依赖的挑战。通过建议的优化方向,策略的稳定性和适应性有望得到进一步提升。在实际应用中,建议通过充分的历史数据回测和参数优化来确定最适合的策略配置。


/*backtest
start: 2024-12-12 00:00:00
end: 2024-12-19 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Агрессивная стратегия с дивергенциями по RSI и уровнями поддержки/сопротивления", overlay=true)

// Параметры для RSI
rsiLength = input.int(14, title="Период для RSI", minval=1)   // Период для расчета RSI
rsiOverbought = input.int(70, title="Уровень перекупленности", minval=1, maxval=100)
rsiOversold = input.int(30, title="Уровень перепроданности", minval=1, maxval=100)

// Параметры для стоп-лосса и тейк-профита
stopLossPercent = input.float(1, title="Стоп-лосс (%)", minval=0.1) / 100
takeProfitPercent = input.float(2, title="Тейк-профит (%)", minval=0.1) / 100

// Период для уровней поддержки и сопротивления
supportResistanceLength = input.int(50, title="Период для уровней поддержки и сопротивления", minval=1)

// Рассчитываем RSI
rsi = ta.rsi(close, rsiLength)

// Рассчитываем уровни поддержки и сопротивления
support = ta.lowest(close, supportResistanceLength)  // Находим минимумы за период для поддержки
resistance = ta.highest(close, supportResistanceLength)  // Находим максимумы за период для сопротивления

// Определяем дивергенцию RSI с ценой
priceHigh = ta.highest(close, rsiLength)
priceLow = ta.lowest(close, rsiLength)
rsiHigh = ta.highest(rsi, rsiLength)
rsiLow = ta.lowest(rsi, rsiLength)

// Дивергенция на покупку (бычья): цена делает новый минимум, а RSI этого не делает
bullishDivergence = priceLow < priceLow[1] and rsiLow > rsiLow[1] and close > support

// Дивергенция на продажу (медвежья): цена делает новый максимум, а RSI этого не делает
bearishDivergence = priceHigh > priceHigh[1] and rsiHigh < rsiHigh[1] and close < resistance

// Отображаем уровни поддержки и сопротивления
plot(support, title="Поддержка", color=color.green, linewidth=2, style=plot.style_line)
plot(resistance, title="Сопротивление", color=color.red, linewidth=2, style=plot.style_line)

// Условия для покупки по бычьей дивергенции
if (bullishDivergence)
    strategy.entry("Long", strategy.long)
    stopLoss = close * (1 - stopLossPercent)   // Стоп-лосс
    takeProfit = close * (1 + takeProfitPercent) // Тейк-профит
    strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)

// Условия для продажи по медвежьей дивергенции
if (bearishDivergence)
    strategy.entry("Short", strategy.short)
    stopLoss = close * (1 + stopLossPercent)   // Стоп-лосс для шорта
    takeProfit = close * (1 - takeProfitPercent) // Тейк-профит для шорта
    strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)

// Отображаем RSI на отдельном графике
plot(rsi, title="RSI", color=color.blue, linewidth=2)
hline(rsiOverbought, "Перекупленность", color=color.red)
hline(rsiOversold, "Перепроданность", color=color.green)


相关内容

更多内容