다중 지표 추세 추적과 충격 경고 전략 결합

SMA RSI ADX ATR STOCH
생성 날짜: 2025-02-18 14:54:47 마지막으로 수정됨: 2025-02-18 14:54:47
복사: 0 클릭수: 343
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 지표 추세 추적과 충격 경고 전략 결합

개요

이 전략은 트렌드 추적과 진동 지표의 장점을 결합 한 다중 기술 지표에 기반 한 거래 시스템입니다. 핵심 논리는 SMA 평균의 교차로 트렌드 방향을 판단하고, ADX를 사용하여 트렌드 강도를 확인하고, 추후 무작위 RSI를 사용하여 트렌드 방향에서 최적의 입구를 찾고, 추적 스톱 로드를 사용하여 이익을 보호합니다. 이 전략은 5 분 시간 주기 거래에 적합하며, 시장의 주요 트렌디 성 기회를 효과적으로 포착 할 수 있습니다.

전략 원칙

전략의 구체적인 작동 원리는 다음과 같습니다.

  1. 트렌드 판단: SMA20과 SMA200의 교차를 사용하여 트렌드 방향을 결정합니다. 빠른 라인에서 느린 라인을 통과하는 것은 다중 트렌드이며, 공중 트렌드입니다.
  2. 트렌드 강도 확인: ADX가 20보다 크면 트렌드가 충분히 발달한 것을 나타내고, 평형 시장에서 거래하는 것을 피한다.
  3. 진입 시점: 트렌드를 확인한 후 무작위 RSI를 사용하여 오버 바이 오버 세일 기회를 찾습니다. RSI가 30 미만일 때 더 많은 기회를 찾고 70 미만일 때 더 적은 기회를 찾습니다.
  4. 포지션 관리: 역전 거래 메커니즘을 사용하여 트렌드 변화 시 자동으로 포지션을 청산하고 포지션을 역으로 개시합니다.
  5. 리스크 제어: 추적 스톱로스를 사용하여 ((40 포인트, 걸음 길이는 5 포인트) 수익을 잠금하고, 거짓 신호를 피하기 위해 1 K 라인의 재입장 지연을 설정합니다.

전략적 이점

  1. 다차원 분석: 평균선, ADX 및 무작위 RSI를 결합하여 거래 신호를 다양한 각도에서 확인하여 거래의 신뢰성을 향상시킵니다.
  2. 적응력: 전략은 시장 상황에 따라 자동으로 조정되며, 추세와 변동 시장에서 거래 기회를 찾을 수 있습니다.
  3. 리스크 관리가 잘 되어있으며, 수익을 보호하면서도 수익을 유지할 수 있는 추적 스톱 로즈 메커니즘을 적용하고 있습니다.
  4. 지속적인 시장 참여: 반전 거래 메커니즘을 통해 주요 시장 추세에 항상 따라가는 것을 보장합니다.
  5. 매개 변수 조정성: 전략은 다양한 시장 조건에 맞게 최적화하기 위해 여러 가지 조정 가능한 매개 변수를 제공합니다

전략적 위험

  1. 과도한 거래 위험: 빈번한 반전 거래로 인해 과도한 수수료 비용이 발생할 수 있습니다.
  2. 가짜 브레이크 위험: 시장의 변동이 있을 때 빈번한 가짜 브레이크 신호가 발생할 수 있습니다.
  3. 슬라이드 위험: 5분 주기로 더 큰 슬라이드 비용이 발생할 수 있습니다.
  4. 트렌드 지연 위험: 일직선 시스템은 그 자체로 지연성이 있으며 중요한 전환점을 놓칠 수 있습니다.
  5. 매개 변수 민감성: 정책 효과는 매개 변수 설정에 민감하며 지속적인 최적화가 필요합니다.

전략 최적화 방향

  1. 트래픽 지표 도입: 트래픽 분석을 추가하여 트렌드 판단의 정확도를 높일 수 있습니다.
  2. 진입 시점을 최적화: 진입의 정확성을 높이기 위해 그래프 형태와 같은 가격 형태 분석을 추가하는 것을 고려하십시오.
  3. 손해 차단 메커니즘: ATR의 동적 조정 추적 손해 차단 거리를 더 잘 조정할 수 있습니다.
  4. 시간 필터를 추가: 거래 시간 필터를 추가하여 낮은 유동성 기간을 피합니다.
  5. 적응 파라미터를 개발: 시장의 변동에 따라 자동으로 조정할 수 있는 파라미터 시스템을 연구 개발

요약하다

이 전략은 여러 클래식 기술 지표를 조합하여 포괄적인 거래 시스템을 구축한다. 주요 트렌드를 포착할 수 있고, 트렌드에서 최적의 진입점을 찾을 수 있으며, 완벽한 위험 관리 메커니즘을 갖추고 있다. 일부 고유한 위험이 존재하지만, 지속적인 최적화와 세밀한 파라미터 조정으로 이 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 것으로 예상된다. 전략의 모듈화 설계는 후속 최적화에 좋은 토대를 제공하며, 실제 거래 효과에 따라 지속적으로 개선 및 개선 할 수 있다.

전략 소스 코드
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("XAU/USD 5M SMA + Stochastic RSI + ADX Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// === Входные параметры ===
sma_fast_length = input(20, title="SMA Fast Period")  
sma_slow_length = input(200, title="SMA Slow Period")  
stoch_k_length = input(14, title="Stochastic RSI K Length")
stoch_d_length = input(3, title="Stochastic RSI D Length")
adx_length = input(10, title="ADX Period")  
adx_smoothing = input(10, title="ADX Smoothing Period")
atr_length = input(14, title="ATR Period")

// === Уровни фильтрации ===
adx_min_trend = input(20, title="ADX Minimum Trend Strength")  // Было 25 → уменьшено до 20
stoch_buy_level = input(30, title="Stoch RSI Buy Level")  // Было 20 → увеличено для входов
stoch_sell_level = input(70, title="Stoch RSI Sell Level")  // Было 80 → снижено для входов

// === Трейлинг-стоп ===
use_trailing_stop = input(true, title="Enable Trailing Stop")
trailing_stop_pips = input(40, title="Trailing Stop (Pips)")  // Было 50 → уменьшено для активной торговли
trailing_step_pips = input(5, title="Trailing Step (Pips)")

// === Управление позициями ===
entry_delay = input(1, title="Bars Delay Before Re-Entry")  // Было 2 → уменьшено до 1

// === Расчёт индикаторов ===
sma_fast = ta.sma(close, sma_fast_length)
sma_slow = ta.sma(close, sma_slow_length)
[diPlus, diMinus, adx_value] = ta.dmi(adx_length, adx_smoothing)
atr_value = ta.atr(atr_length)

// === Stochastic RSI ===
stoch_rsi_k = ta.stoch(close, stoch_k_length, stoch_d_length, stoch_d_length)
stoch_rsi_d = ta.sma(stoch_rsi_k, stoch_d_length)

// === Фильтр волатильности (Убран, если мешает входам) ===
// atr_threshold = ta.sma(atr_value, 20)
// volatility_ok = atr_value > atr_threshold  // Комментируем, если ATR слишком строгий

// === Пересечения ===
sma_crossover = ta.crossover(sma_fast, sma_slow)
sma_crossunder = ta.crossunder(sma_fast, sma_slow)
stoch_rsi_crossover = ta.crossover(stoch_rsi_k, stoch_rsi_d)
stoch_rsi_crossunder = ta.crossunder(stoch_rsi_k, stoch_rsi_d)

// === Условия входа ===
longCondition = sma_crossover and adx_value > adx_min_trend and stoch_rsi_crossover and stoch_rsi_k < stoch_buy_level
shortCondition = sma_crossunder and adx_value > adx_min_trend and stoch_rsi_crossunder and stoch_rsi_k > stoch_sell_level

// === Исправленный таймер на повторные входы ===
barsSinceExit = ta.barssince(strategy.position_size == 0)
canReenter = not na(barsSinceExit) and barsSinceExit > entry_delay

// === Переворот позиции (исправлен) ===
if strategy.position_size > 0 and shortCondition and canReenter
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short)

if strategy.position_size < 0 and longCondition and canReenter
    strategy.close("SELL")
    strategy.entry("BUY", strategy.long)

// === Открытие позиций ===
if strategy.position_size == 0 and longCondition
    strategy.entry("BUY", strategy.long)

if strategy.position_size == 0 and shortCondition
    strategy.entry("SELL", strategy.short)

// === Трейлинг-стоп (работает корректно) ===
if use_trailing_stop
    strategy.exit("Exit Long", from_entry="BUY", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)
    strategy.exit("Exit Short", from_entry="SELL", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)

// === Визуализация ===
plot(sma_fast, color=color.blue, title="SMA 20")
plot(sma_slow, color=color.red, title="SMA 200")
hline(stoch_buy_level, title="Stoch RSI Buy Level", color=color.blue)
hline(stoch_sell_level, title="Stoch RSI Sell Level", color=color.purple)
hline(adx_min_trend, title="ADX Min Trend Level", color=color.orange)