
이 전략은 RSI 기술 지표, 가격 이탈과 지지부진을 결합한 정량 거래 시스템이다. 이 전략은 RSI와 가격 사이의 이탈 관계를 식별하고 지지부진의 돌파구를 결합하여 거래 신호를 결정하며, 위험을 제어하기 위해 스톱 및 스톱 메커니즘을 통합한다.
이 전략은 다음과 같은 핵심 구성 요소를 기반으로 합니다.
이 전략은 기술적 분석의 여러 중요한 개념을 결합하여 비교적 완전한 거래 시스템을 구축한다. 전략의 장점은 여러 확인 메커니즘과 완벽한 위험 제어이지만, 동시에 파라미터 선택과 시장 환경 의존성의 도전에 직면한다. 제안된 최적화 방향을 통해 전략의 안정성과 적응성이 더욱 향상될 전망이다. 실제 응용에서는 충분한 역사적 데이터 회귀와 파라미터 최적화를 통해 가장 적합한 전략 구성을 결정하는 것이 좋습니다.
/*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)