지지-저항 강화 모멘텀 반전 전략

RSI SMA ATR S/R 烛台形态 交易量 均线 动量指标
생성 날짜: 2025-03-25 17:03:13 마지막으로 수정됨: 2025-03-25 17:03:13
복사: 3 클릭수: 339
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

지지-저항 강화 모멘텀 반전 전략 지지-저항 강화 모멘텀 반전 전략

개요

지원 저항 강화 동력 역전 전략은 기술 분석을 기반으로 한 거래 시스템으로, 핵심 지원 저항 지점 근처의 가격 역전 신호를 식별하여 잠재적인 거래 기회를 포착합니다. 이 전략은 지원 저항 수준, 폭락 양식 식별, 상대적으로 약한 지수 (RSI) 역전, 거래량 확인 및 이동 평균 트렌드 필터를 포함한 여러 가지 기술 지표를 결합하여 포괄적인 거래 의사 결정 프레임 워크를 형성합니다.

전략 원칙

이 전략의 핵심 원칙은 다중 조건 필터링을 통해 높은 확률의 역점을 식별하는 것입니다:

  1. 지원 저항 식별전략: 지난 N주기 (기본 20) 의 최고 가격과 최저 가격을 사용하여 중요한 저항점과 지지점을 결정한다.

  2. 가격 근접성 판단이 전략은 잠재적인 반전 신호를 찾기 위해 시작됩니다.

  3. 역전 신호 인식

    • 붕괴 형태: 고전적인 반전 형태를 식별하는 전략, 예를 들어, 선, 유성선, 상위 삼락, 하위 삼락
    • RSI 이탈: 가격 혁신이 낮고 RSI 혁신이 낮지 않을 때 (상승의 이탈), 또는 가격 혁신이 높고 RSI 혁신이 높지 않을 때 (상승의 이탈)
  4. 트렌드 확인: 간단한 이동 평균 ((SMA) 을 사용하여 전체 트렌드 방향을 결정하고, 하향 트렌드에서 시선 신호를 찾고, 상승 트렌드에서 시선 신호를 찾습니다.

  5. 거래량 확인현재 거래량이 지난 14주기의 평균 거래량보다 1.5배나 높게 요구하고 신호 신뢰도를 높인다.

  6. 위험 관리

    • 역동적인 포지션 조정: ATR ((평균 실제 변동 범위) 를 기반으로 위험 인자를 계산하여 거래 수를 조정합니다.
    • 스톱: 사용자 설정에 따라 비율 (예작 0.5%)
    • 정지: 사용자 설정에 따른 비율 (예작 0.5%)
    • 최대 지분 기간: 18주기 이후의 강제 평지

모든 조건이 충족되면, 전략은 다중 헤드 또는 공중 헤드 신호를 생성하고, 미리 설정된 위험 관리 규칙에 따라 거래를 실행한다.

전략적 이점

  1. 다중 인증 메커니즘이 전략은 가격행동, 기술 지표, 거래량 확인을 결합하여 가짜 신호의 위험을 크게 줄이고 거래의 정확도를 높였습니다.

  2. 시장의 변동에 적응하는 것: ATR을 통해 포지션 크기를 동적으로 조정하여, 전략은 다양한 시장 조건의 변동성에 적응할 수 있으며, 높은 변동성이있을 때 포지션을 줄이고 낮은 변동성이있을 때 포지션을 적절하게 증가시킵니다.

  3. 완벽한 위험 관리이 전략에는 고정된 스톱, 스톱스, 추적 스톱, 최대 보유 시간 제한 등 여러 가지 위험 제어 장치가 내장되어 있으며, 거래 당 잠재적인 손실을 효과적으로 제어할 수 있습니다.

  4. 정확한 입구이 전략은 저항 지점 근처의 역전 신호를 인식함으로써 잠재적으로 유리한 가격 지점에서 거래할 수 있게 해 주며, 위험/수익률을 높여준다.

  5. 유연한 변수 설정: 사용자는 개인 위험 선호와 거래 품종 특성에 따라 여러 가지 핵심 매개 변수를 조정할 수 있습니다.

전략적 위험

  1. 가짜 침입 위험지원 저항 수준 근처에서, 시장은 종종 가짜 돌파 현상이 발생한다. 즉, 가격이 잠시 돌파한 후 급격히 다시 떨어지는 현상이 발생하며, 이는 잘못된 신호를 유발할 수 있다. 해결책은 확인 주기를 늘리거나 근접도 파라미터를 조정하는 것이다.

  2. 극단적인 시장 위험: 시장의 급격한 변동이나 중요한 뉴스 사건이 발생하면 정상적인 기술 모드가 작동하지 않을 수 있으며, 전략은 큰 손실을 입을 수 있습니다. 이러한 기간 동안 전략을 일시 중지하거나 위치를 줄이는 것이 좋습니다.

  3. 매개변수 최적화 위험: 과잉 최적화 파라미터는 전략이 역사 데이터에서 우수한 성능을 발휘하지만 실전에서는 효과가 좋지 않을 수 있습니다. 과잉 적합성을 피하고 파라미터의 합리성과 안정성을 유지해야합니다.

  4. 추세 변화 후기: 이동 평균을 사용하여 트렌드가 지연되어 있음을 판단하여 트렌드의 초기 단계에서 기회를 놓치거나 잘못된 신호를 유발할 수 있습니다. 더 민감한 트렌드 지표와 결합하여 고려할 수 있습니다.

  5. 거래량이 부족할 위험: 특정 시장 또는 시간 동안 거래량이 일반적으로 낮아 거래량 확인 조건을 충족시키는 것이 어려울 수 있습니다. 특정 시장 특성에 따라 거래량 확인 배수를 조정할 수 있습니다.

전략 최적화 방향

  1. 지원 저항 계산 최적화현재 전략은 간단한 최고/최저 가격을 사용하여 지지 저항 수준을 결정합니다. 더 정확한 지지 저항 수준을 얻기 위해 피보나치 회귀, 수량 가격 분석 또는 구조적 피크 밸리 식별과 같은 더 복잡한 방법을 사용할 수 있습니다.

  2. 다중 시간 프레임 분석다중 시간 프레임 분석을 도입하면 전략의 신뢰성을 높일 수 있습니다. 예를 들어, 더 큰 시간 프레임에서 전체적인 트렌드 방향을 확인한 다음, 더 작은 시간 프레임에서 정확한 진입 지점을 찾습니다.

  3. 기계 학습 최적화: 전략 변수를 동적으로 최적화하거나 역전 확률을 예측하기 위해 기계 학습 알고리즘을 도입하는 것을 고려하고, 시장 상태에 따라 자동으로 변수를 조정하여 전략 적응성을 향상시킬 수 있습니다.

  4. 시장 상태 분류: 시장 상태에 대한 분류를 추가하기 (예를 들어, 변동 시장과 추세 시장을 구분하기) 그리고 다른 시장 상태에 대해 다른 거래 논리와 파라미터 설정을 사용한다.

  5. 감정 지표 통합: 시장의 전환점을 더 잘 포착하고 불리한 조건에서 거래하는 것을 피하기 위해 VIX 또는 상대 거래량 변화율과 같은 시장 감정 지표를 통합하는 것을 고려하십시오.

  6. 손해 방지 전략의 최적화더 똑똑한 스톱 전략을 고려할 수 있습니다. 유동적인 스톱이나 유의미한 구조적 스톱은 고정된 퍼센티지 스톱보다 더 중요합니다.

요약하다

지지부진 강화형 역동 역전 전략은 위험 관리와 여러 가지 확인을 강조하는 완전한 거래 시스템이다. 지지부진 저항 수준, 폭락 형태, RSI 이탈, 거래량 확인 및 트렌드 필터링을 결합하여 이 전략은 잠재적으로 높은 확률의 역전점을 효과적으로 식별할 수 있다. 역동적인 포지션 조정, 여러 가지 스톱 손실 방식 및 최대 포지션 기간 제한을 포함하는 내장 된 위험 관리 메커니즘은 비교적 안정적인 거래 방법이다.

이 전략은 여러 장점이 있지만, 거래자는 가짜 돌파구, 극한 시장 및 변수 최적화와 같은 잠재적인 위험을 주의해야 한다. 지속적인 최적화 지원 저항 계산 방법, 다중 시간 프레임 분석의 도입, 기계 학습 기술의 적용, 시장 상태 분류 및 감정 지표 통합을 증가시키는 등의 방향으로 전략은 향상 할 수있는 큰 공간이있다.

전체적으로, 이것은 명확하고 구조화된 거래 전략이며, 적절한 위험 관리하에 적용되고 더 개선될 수 있도록, 경험이 풍부한 거래자에게 적합합니다.

전략 소스 코드
/*backtest
start: 2025-03-21 00:00:00
end: 2025-03-24 00:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
// TradingView Strategy: Gold Reversal with S/R (Enhanced)
// Targets reversals near support/resistance with additional filters

strategy("Gold Reversal with S/R Enhanced", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// --- Inputs ---
stop_loss_percent = input.float(0.5, "Stop Loss (%)", minval=0.1, maxval=5.0)
take_profit_percent = input.float(0.5, "Take Profit (%)", minval=0.1, maxval=10.0)
rsi_period = input.int(14, "RSI Period", minval=2, maxval=50)
rsi_min = input.float(30, "RSI Minimum Threshold", minval=0, maxval=50)
pivot_lookback = input.int(20, "Pivot Lookback", minval=1, maxval=20)
proximity_percent = input.float(0.5, "S/R Proximity (%)", minval=0.1, maxval=2.0, step=0.1)
ma_period = input.int(50, "Trend MA Period", minval=10, maxval=200)
max_hold_bars = input.int(18, "Max Hold Period (bars)", minval=5, maxval=100)  // Reduced from 20 to 18
volume_lookback = input.int(14, "Volume Lookback", minval=5, maxval=50)

// --- Trend Filter --- (unchanged)
ma = ta.sma(close, ma_period)
in_uptrend = close > ma
in_downtrend = close < ma

// --- Volatility Calculation --- (unchanged)
atr = ta.atr(14)
base_risk = atr / close * 100
risk_factor = stop_loss_percent / base_risk
adjusted_qty = math.min(25, math.max(2, 10 / risk_factor))

// --- Candlestick Patterns --- (unchanged)
hammer = (high - low) > 0 and (close - open) / (high - low) <= 0.3 and (open - low) >= 2 * (high - close) and close[1] < open[1]
shooting_star = (high - low) > 0 and (close - open) / (high - low) <= 0.3 and (high - open) >= 2 * (close - low) and close[1] > open[1]
bullish_engulfing = close[1] < open[1] and close > open and close > open[1] and open < close[1]
bearish_engulfing = close[1] > open[1] and close < open and close < open[1] and open > close[1]

// --- RSI Divergence --- (unchanged)
rsi = ta.rsi(close, rsi_period)
bullish_rsi_div = close < close[1] and rsi > rsi[1] and rsi > rsi_min
bearish_rsi_div = close > close[1] and rsi < rsi[1]

// --- Volume Confirmation --- (unchanged)
avg_volume = ta.sma(volume, volume_lookback)
volume_confirmed = volume > avg_volume * 1.5

// --- Support/Resistance --- (unchanged)
support = ta.lowest(low, pivot_lookback)
resistance = ta.highest(high, pivot_lookback)

// --- Proximity to S/R --- (unchanged)
proximity_factor = proximity_percent / 100
near_support = close >= support * (1 - proximity_factor) and close <= support * (1 + proximity_factor)
near_resistance = close >= resistance * (1 - proximity_factor) and close <= resistance * (1 + proximity_factor)

// --- Combined Conditions --- (unchanged)
long_condition = near_support and in_downtrend and volume_confirmed and (hammer or bullish_engulfing or bullish_rsi_div)
short_condition = near_resistance and in_uptrend and volume_confirmed and (shooting_star or bearish_engulfing or bearish_rsi_div)

// --- Execute Trades --- (unchanged)
if (long_condition)
    strategy.entry("Long", strategy.long, qty=adjusted_qty)
    strategy.exit("Long Exit", "Long", stop=strategy.position_avg_price * (1 - stop_loss_percent / 100), 
                 profit=strategy.position_avg_price * (1 + take_profit_percent / 100), 
                 trail_offset=atr*100)

if (short_condition)
    strategy.entry("Short", strategy.short, qty=adjusted_qty)
    strategy.exit("Short Exit", "Short", stop=strategy.position_avg_price * (1 + stop_loss_percent / 100), 
                 profit=strategy.position_avg_price * (1 - take_profit_percent / 100), 
                 trail_offset=atr*100)

// --- Time-based Exit ---
if (strategy.position_size != 0)
    bars_held = ta.barssince(strategy.position_size[1] == 0)
    if (bars_held >= max_hold_bars)
        strategy.close_all("Time Exit")

// --- Plot Signals --- (unchanged)
plotshape(long_condition, title="Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(short_condition, title="Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plot(ma, "Trend MA", color=color.blue)

// --- Debug Outputs --- (unchanged)
plotchar(rsi, "RSI", "", location.bottom)
plotchar(adjusted_qty, "Position Size", "", location.bottom)