该策略是一个结合了RSI技术指标、价格背离和支撑阻力位的量化交易系统。策略通过识别RSI与价格之间的背离关系,并结合支撑阻力位的突破来确定交易信号,同时集成了止损和止盈机制以控制风险。
策略主要基于以下几个核心组件: 1. RSI指标计算:使用14周期的相对强弱指标(RSI)来衡量价格动能 2. 支撑阻力位识别:通过50个周期的最高价和最低价来确定关键价格水平 3. 背离判定: - 牛市背离:当价格创新低而RSI未创新低时,且价格在支撑位上方 - 熊市背离:当价格创新高而RSI未创新高时,且价格在阻力位下方 4. 风险管理: - 入场后设置1%的止损 - 设置2%的止盈目标
该策略通过结合技术分析中的多个重要概念,构建了一个相对完整的交易系统。策略的优势在于多重确认机制和完善的风险控制,但同时也面临参数选择和市场环境依赖的挑战。通过建议的优化方向,策略的稳定性和适应性有望得到进一步提升。在实际应用中,建议通过充分的历史数据回测和参数优化来确定最适合的策略配置。
/*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)