
该策略是一个结合了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)