다중 기간 RSI 발산 및 지지 및 저항 조합 정량적 전략

RSI
생성 날짜: 2024-12-20 17:01:44 마지막으로 수정됨: 2024-12-20 17:01:44
복사: 4 클릭수: 539
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 기간 RSI 발산 및 지지 및 저항 조합 정량적 전략

개요

이 전략은 RSI 기술 지표, 가격 이탈과 지지부진을 결합한 정량 거래 시스템이다. 이 전략은 RSI와 가격 사이의 이탈 관계를 식별하고 지지부진의 돌파구를 결합하여 거래 신호를 결정하며, 위험을 제어하기 위해 스톱 및 스톱 메커니즘을 통합한다.

전략 원칙

이 전략은 다음과 같은 핵심 구성 요소를 기반으로 합니다.

  1. RSI 지표 계산: 14주기의 상대적으로 강한 지표 ((RSI) 를 사용하여 가격 동력을 측정
  2. 지원 저항 지점 식별: 50 회의 최고 가격과 최저 가격으로 중요한 가격 수준을 결정합니다.
  3. 이 사건의 핵심은
    • 황소 시장 이탈: 가격 혁신이 낮고 RSI가 혁신이 낮지 않은 상태에서 가격이 지지율보다 높을 때
    • 부스 이탈: 가격 혁신이 높고 RSI 혁신이 높지 않은 상태에서 가격 저항 아래에서
  4. 위험 관리:
    • 입점 후 1%의 스톱로스를 설정합니다
    • 2퍼센트의 금지를 목표로 삼고 있습니다.

전략적 이점

  1. 다중 확인 메커니즘: 동력 지표 (RSI), 가격 형태 (RSI) 및 시장 구조 (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)