동적 위험 관리 ATR 다중 교차 전략

ATR SMA JSON TP/SL TSL
생성 날짜: 2025-07-17 15:45:10 마지막으로 수정됨: 2025-07-17 15:45:10
복사: 0 클릭수: 189
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

동적 위험 관리 ATR 다중 교차 전략 동적 위험 관리 ATR 다중 교차 전략

개요

동적 위험 관리 ATR 곱하기 교차 전략은 이동 평균 교차와 평균 실제 파도 (ATR) 을 기반으로 한 정량 거래 시스템이다. 이 전략은 단기 및 장기 간 간단한 이동 평균 (SMA) 의 교차로 입문 신호를 결정하며, ATR을 동적으로 사용하여 중지 손실, 중지 및 중지 손실 수준을 계산하여 위험 관리의 자동화 및 정밀화를 구현한다. 이 전략은 \(25,000의 초기 자금을 가진 계좌를 대상으로 설계되어 있으며, 매일 \)4,167의 수익률을 목표로 하고 있으며, 동적 포지션 컨트롤을 통해 이익과 위험을 균형을 맞추고 있다.

전략 원칙

이 전략의 핵심 원칙은 기술 지표의 교차 신호와 동적 위험 관리 시스템을 결합하는 것입니다:

  1. 입력 신호 생성:

    • 14주기 SMA 위에 28주기 SMA를 뚫을 때, 복수 신호가 생성된다.
    • 14주기 SMA 아래 28주기 SMA를 뚫을 때, 하위 신호가 생성된다
  2. 동적 위험 매개 변수 계산:

    • 14주기 ATR을 사용하여 시장 변동성을 계산한다.
    • 정지수준 = 현재 가격 ± (ATR × 1.5배)
    • 정지수준 = 현재 가격 ± (ATR × 3.0배)
    • 추적 중지 거리 = ATR × 1.0배
  3. 탈퇴 장치:

    • 주로 정지, 정지 또는 추적 정지를 통해 자동으로 실행됩니다.
    • 보조 퇴출 신호: 가격이 10주기 SMA와 교차할 때 선택적 평점
  4. 거래 실행 및 통지:

    • JSON 형식의 경보 메시지를 통해 거래 신호 및 매개 변수를 전달합니다.
    • 운영 유형, 거래 유형, 수량, 주문 유형 및 위험 관리 매개 변수를 포함합니다.

이 전략은 특히 위험과 이익의 비율에 초점을 맞추고, 3: 1의 이익과 위험 비율을 채택하고, 좋은 위험 관리 원칙을 따른다.

전략적 이점

  1. 동적 위험 적응성:

    • ATR을 통해 역동적으로 중지 및 중지 수준을 조정하여 시장의 변동성에 대한 변화에 대응할 수 있도록합니다.
    • 높은 파동 환경에서 자동으로 스톱 거리를 확장하고 낮은 파동 환경에서 스톱 범위를 좁히기
  2. 명확한 출전규칙:

    • 이동 평균의 크로스 기반의 명확한 진입 신호, 주관적인 판단을 줄여줍니다.
    • 다수의 탈퇴 메커니즘은 수익 보호와 위험 통제를 보장합니다.
  3. 전체적인 위험 관리 프레임워크:

    • 상쇄, 정지 및 추적 상쇄의 조합 적용, 거래 자금을 포괄적으로 보호
    • 리스크 매개 변수는 입력 변수를 통해 개인화되어 다양한 리스크 선호도를 충족시킬 수 있습니다.
  4. 고도로 자동화:

    • JSON 형식의 알림 시스템, 다른 거래 플랫폼 및 도구와 원활한 통합
    • 정책 매개 변수는 자동 실행 또는 API 연결을 위해 알림에 포괄됩니다.
  5. 시각적 도움말:

    • 이동 평균을 그래프에 그리며 직관적인 거래 신호 참조를 제공합니다.
    • 거래자의 전략 논리와 시장 상황을 이해하는 데 도움이 됩니다.

전략적 위험

  1. 시장의 위조 신호:

    • 수평선 또는 변동 시장에서 이동 평균의 교차는 종종 잘못된 신호를 일으킬 수 있습니다.
    • 완화 방법: 트렌드 확인 지표 또는 변동율 필터와 같은 필터 조건을 추가하는 것을 고려하십시오.
  2. ATR 변수 민감성:

    • ATR 계산주기 ((14)) 와 곱하기 ((1.53.0/1.0) 의 선택이 전략 성능에 중요한 영향을 미칩니다.
    • 완화 방법: 다양한 변수 조합을 재검토하여 최적의 구성을 찾거나 특정 시장 특성에 따라 조정
  3. 추세 반전 위험:

    • 강력한 트렌드가 급격히 역전될 때, 간단한 이동 평균 시스템은 지연되어 반응할 수 있습니다.
    • 완화 방법: 보조 신호로 진동 지표 또는 운동 지표를 통합하는 것을 고려하십시오.
  4. 재정 관리의 도전:

    • 고정 계좌 자금 비율 (~10%) 은 시장 조건에 따라 지나치게 급진적이거나 보수적일 수 있습니다.
    • 완화 방법: 변동성 및 승률에 따라 포지션 크기를 동적으로 조정하는 비율
  5. 지점 리스크 실행:

    • 시장 주문 실행은 실제 중지 및 정지 수준에 영향을 미치는 슬라이드 포인트에 직면 할 수 있습니다.
    • 완화 방법: 유동성이 높은 시기에 거래하고, 계산에 슬라이드 포인트 보퍼를 예약하는 것을 고려하십시오.

전략 최적화 방향

  1. 진입 신호 최적화:

    • 추가적인 확증 지표들을 통합하는 것, 예를 들어 상대적으로 강한 지표 ((RSI) 또는 이동 평균의 수렴 산란도 지표 ((MACD)
    • 구현: 조건 필터를 추가하여 주요 트렌드 방향이 확인된 후에 거래가 수행되도록 요구합니다.
  2. 적응 변수 조정:

    • ATR을 역사적인 변동성이나 시장 상태의 동적인 변화에 따라 곱하는 방법
    • 구현: 변동률 비율을 계산하여 동적으로 배수를 조정할 수 있습니다.
  3. 포지션 관리를 최적화:

    • 승률과 리스크에 따른 역동적으로 조정된 포지션 크기와 리스크에 따른 역동적으로 조정된 포지션 크기
    • 구현: 최적의 켈리 비율을 계산하는 함수를 작성하거나 최근 거래 성과를 고려한다
  4. 시간 분기 정책 조정:

    • 다른 거래 시기의 변동성에 따라 전략 파라미터를 조정합니다.
    • 구현: 시간 필터를 추가하여 다른 시간대에 다른 ATR 배수 또는 신호 필터링 규칙을 적용합니다.
  5. 통합 시장 구조 분석:

    • 지원 및 저항, 시장 구조의 높고 낮은 점 분석
    • 실현: 핵심 가격 수준을 식별하고, 가격이 지지 또는 저항에 가까워질 때만 해당 방향의 거래를 수행합니다.

요약하다

동적 위험 관리 ATR 곱하기 교차 전략은 고전적인 기술 분석과 현대적 위험 관리를 결합한 정량 거래 시스템이다. 그것의 핵심 장점은 ATR을 통해 위험 매개 변수를 동적으로 조정하여 전략이 다른 시장 환경에 적응할 수 있도록 하는 것이다. 이 전략은 특히 변동성이 비교적 안정적이고 트렌드가 뚜렷한 시장에 적합하며, 간단한 이동 평균을 교차하여 거래 신호를 생성하면서 각 거래에 미리 정의된 위험 제어 매개 변수가 있는지 확인한다.

흔들림 시장의 잘못된 신호와 파라미터 민감성 등의 위험이 존재하지만, 추가 확인 지표, 적응 파라미터 조정 및 포지션 관리를 최적화하는 등의 조치를 통합하는 등 앞서 제시된 최적화 방향은 전략의 안정성과 적응력을 크게 향상시킬 수 있습니다. 궁극적으로, 이 전략은 간결성과 효과의 균형을 이루는 거래 프레임워크를 제공하며, 체계화된 거래의 기본 모델로 적합하며, 개인의 요구와 시장 특성에 따라 추가 조정 및 최적화를 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-07-17 00:00:00
end: 2025-07-15 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/

//@version=5
strategy("MYM Strategy for TradersPost", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
atrLength      = input.int(14, "ATR Length")
slMultiplier   = input.float(1.5, "Stop Loss Multiplier")
tpMultiplier   = input.float(3.0, "Take Profit Multiplier")
tsMultiplier   = input.float(1.0, "Trailing Stop Multiplier")

// === ATR Calculation ===
atr = ta.atr(atrLength)
stopPts = atr * slMultiplier
takePts = atr * tpMultiplier
trailPts = atr * tsMultiplier

// === Example Entry Logic (crossover example) ===
shortSMA = ta.sma(close, 14)
longSMA = ta.sma(close, 28)

longCondition  = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

// === Example Exit Condition (optional close signal) ===
exitCondition  = ta.cross(close, ta.sma(close, 10))

// === Entry & Alerts ===
if (longCondition)
    // Build JSON message
    stopVal = str.tostring(close - stopPts)
    tpVal   = str.tostring(close + takePts)
    trailVal = str.tostring(trailPts)
    longMessage = '{"action":"buy","symbol":"MYM","quantity":1,"order_type":"market","stop_loss":' + stopVal + ',"take_profit":' + tpVal + ',"trailing_stop":' + trailVal + ',"comment":"MYM Long Entry"}'
    alert(longMessage, alert.freq_once_per_bar_close)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    stopVal = str.tostring(close + stopPts)
    tpVal   = str.tostring(close - takePts)
    trailVal = str.tostring(trailPts)
    shortMessage = '{"action":"sell","symbol":"MYM","quantity":1,"order_type":"market","stop_loss":' + stopVal + ',"take_profit":' + tpVal + ',"trailing_stop":' + trailVal + ',"comment":"MYM Short Entry"}'
    alert(shortMessage, alert.freq_once_per_bar_close)
    strategy.entry("Short", strategy.short)

// === Optional Close Alert ===
if (exitCondition)
    closeMessage = '{"action":"close_position","ticker":"MYM","comment":"MYM Close Position"}'
    alert(closeMessage, alert.freq_once_per_bar_close)
    strategy.close_all(comment="Exit Signal")

// === Visual aids ===
plot(shortSMA, color=color.orange)
plot(longSMA, color=color.blue)