다중 기간 스윙 브레이크아웃 ATR 추적 반전 양적 거래 전략

ATR SMA Swing High/Low BREAKOUT Trailing Stop VOLUME FILTER
생성 날짜: 2025-08-19 10:24:27 마지막으로 수정됨: 2025-08-19 10:24:27
복사: 0 클릭수: 182
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 기간 스윙 브레이크아웃 ATR 추적 반전 양적 거래 전략 다중 기간 스윙 브레이크아웃 ATR 추적 반전 양적 거래 전략

개요

다주기 스윙을 뚫고 ATR를 추적하는 반전 양화 거래 전략은 기술 분석에 기반한 거래 시스템으로, 가격의 역사적인 스윙의 최고점과 최저점을 돌파하는 중요한 순간을 식별하고, 자동 반전 메커니즘을 사용하여 시장의 반전 기회를 포착하는 데 초점을 맞추고 있다. 이 전략은 ATR 지표를 사용하여 동적으로 스톱로스를 설정하고 스톱 레벨을 추적하며, 선택적으로 거래량 필터와 결합하여 돌파의 유효성을 확인한다. 이 전략의 핵심적인 생각은 돌파를 확인한 후 빠른 진입이며, 기존의 거래가 손실을 막는 동안 자동으로 반전하여 포지션을 개설하여 잠재적인 트렌드 반전 기회를 포착한다.

전략 원칙

이 전략은 다음과 같은 몇 가지 핵심 구성 요소에 기반합니다.

  1. 위아래를 확인하는 것전략: 지정된 회귀 기간을 사용하여 가격의 변동 고점과 낮은 점을 식별합니다. 이 점들은 잠재적인 돌파구 수준으로 사용됩니다.

  2. 브레이크 확인 메커니즘: 종식 가격이 오동 고위점 아래에서 상향으로 돌파할 때 다중 신호를 트리거; 종식 가격이 오동 저위점 위에서 상향으로 돌파할 때 하위 신호를 트리거.

  3. 거래량 필터선택적으로 거래량 필터링 조건을 활성화하여, 브레이크 시 거래량이 평균 거래량의 특정 배수를 초과하는 것을 요구합니다. (설정적으로 1.5배) 이는 브레이크의 강도와 유효성을 보장합니다.

  4. ATR 기반의 위험 관리전략: 14주기 ATR을 사용하여 스톱 로드를 동적으로 설정하고 스톱 로드 수준을 추적하여 위험 관리를 시장의 변동성에 적응시킵니다. 다중 거래의 스톱 로드는 입수 가격에서 ATR을 빼고 사용자 정의의 곱으로 설정하고, 적폐 거래는 그 반대입니다.

  5. 자동 회전 메커니즘: 원래 거래가 상쇄될 때, 전략은 자동으로 역방향으로 새로운 포지션을 열게 됩니다. 이 기능은 시장의 역전점을 잡기 위한 것입니다.

  6. 트래킹 중지전략: ATR 기반의 트래킹 스톱 메커니즘을 구현하여 수익을 고정하고 트렌드를 지속할 수 있도록 한다. 트래킹 스톱 레벨은 ATR 및 사용자 정의에 따라 곱하기 동적으로 조정된다.

전략적 이점

  1. 매우 적응력이 좋다이 전략은 ATR 지표를 사용하여 다양한 시장의 변동성 특성에 자동으로 적응할 수 있으며, 높은 변동성 시장에서 더 느슨한 중단, 낮은 변동성 시장에서 더 긴밀한 중단을 제공합니다.

  2. 자동 회전 메커니즘: 시장이 한 방향에서 다른 방향으로 변할 때, 전략은 수동 개입 없이 자동으로 포지션을 반전할 수 있습니다. 이것은 반전 기회를 잡고 중요한 전환점을 놓치는 위험을 줄이는 데 도움이됩니다.

  3. 거래량 확인거래량 필터를 통합하여 전략은 가짜 브레이크 신호를 줄이고 거래 품질을 향상시킬 수 있습니다. 높은 거래량으로 이루어진 브레이크는 일반적으로 더 강한 시장 공감대와 브레이크의 지속성을 나타냅니다.

  4. 동적 위험 관리ATR 기반의 스톱 및 트래킹 스톱 메커니즘은 위험 관리를 역동적으로 만들고, 시장의 변화에 적응하며, 자본을 보호하면서도 수익을 증가시킬 수 있습니다.

  5. 명확한 출입 신호전략은 명확한 출입 및 출입 규칙을 제공하여 주관적 의사 결정과 감정적 영향을 줄이고 거래 규율을 유지하는 데 도움이됩니다.

  6. 시각화 그래프 표기전략: 전략은 초기 파격과 역전 신호를 포함한 다양한 신호를 차트에 표시하여 거래자가 시장 상황을 직관적으로 이해하고 전략적 결정을 내릴 수 있도록합니다.

전략적 위험

  1. 시장이 흔들리는 상황에서 거래가 빈번하다: 수평적으로 흔들리는 시장에서, 가격은 종종 상승과 하락의 변동을 돌파할 수 있으며, 이로 인해 연속적인 입출장 거래와 반전이 발생할 수 있으며, 이로 인해 거래 비용이 증가하고 연속적인 손실이 발생할 수 있습니다.

  2. 가짜 침입 위험거래량 필터가 있음에도 불구하고, 시장은 여전히 가짜 돌파구를 만들 수 있습니다. 특히 유동성이 낮은 시장 환경이나 조작성이 높은 시장 환경에서는 이러한 가짜 돌파구는 불필요한 거래와 손실을 초래할 수 있습니다.

  3. 고정 변수의 한계전략: 고정된 회귀 기간, ATR 곱하기 및 거래량 하락값을 사용한다. 이러한 매개 변수는 다른 시장 환경이나 시간 프레임에 따라 조정될 수 있으며, 고정된 매개 변수는 모든 시장 조건에 적용되지 않을 수 있다.

  4. 근본적인 요소를 고려하지 않고순수 기술 분석 전략으로서, 이 시스템은 근본적인 요소나 시장의 정서를 고려하지 않으며, 이는 중요한 뉴스 사건이나 경제 자료 발표 기간 동안 바람직하지 않은 거래 결정을 초래할 수 있다.

  5. 반전 메커니즘의 양날의 칼: 자동 반전 메커니즘은 반전을 잡는 데 도움이 되지만, 강한 추세 시장에서 조기 반전 거래로 이어질 수 있으며, 지배적 추세에 대항하는 것은 연속적인 손실을 초래할 수 있다.

이러한 위험을 줄이는 방법은 다음과 같습니다. 특정 시장 환경에 맞게 전략 매개 변수를 조정하고, 매일 또는 총 손실 제한을 설정하고, 주요 뉴스 사건 전에 거래를 중지하고, 다른 기술 지표 또는 시장 환경 필터와 결합하여 신호 품질을 향상시킵니다.

전략 최적화 방향

  1. 적응 변수고정된 변수 (예: 회귀 기간, ATR 곱하기 및 거래량 저하) 를 시장의 변동성, 거래량 특성 또는 트렌드 강도에 따라 동적으로 조정되는 적응 변수로 변환합니다. 이것은 다양한 시장 환경에서 전략의 적응성을 향상시킵니다.

  2. 시장 환경 필터: 시장 환경 식별 메커니즘을 추가하여, 예를 들어 ADX ((평균 방향 지수) 또는 변동률 지표에 기반한 필터를 사용하여 트렌드 시장과 흔들림 시장을 구분할 수 있다. 흔들림 시장에서 반전 메커니즘을 비활성화하거나 거래를 완전히 중단하여 잘못된 신호를 줄일 수 있다.

  3. 다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 확인을 통합하여, 예를 들어 더 높은 시간 프레임의 트렌드 방향이 일치하는 경우에만 거래하면 역전 거래를 줄이고 거래 성공률을 높일 수 있습니다.

  4. 성능에 따른 역추천: 매번 상쇄된 후에 자동으로 반전하는 것이 아니라, 시장의 성과 지표 (최근의 신호 성공률이나 트렌드 강도와 같은) 를 기반으로 반전 거래를 실행할지 여부를 결정한다.

  5. 일부 포지션 관리: 분기 입출장 전략을 실행하여 초기 돌파구에서 일부 자금을만 사용하며 가격이 유리하게 계속 움직일 때 입지를 늘립니다. 마찬가지로, 분기 차단을 사용하여 수익의 일부를 잠금 할 수 있습니다.

  6. 시간 필터트레이딩 시간 필터를 추가하여 알려진 낮은 변동성이나 높은 불확실성 기간을 피합니다.

  7. 기계 학습 최적화: 기계 학습 알고리즘을 사용하여 최적의 변수 조합을 자동으로 식별하고 어떤 전략이 시장 환경에서 더 잘 작동하는지 예측하여 거래 결정을 동적으로 조정할 수 있습니다.

이러한 최적화 방향의 핵심 목표는 전략의 적응성과 강도를 높이고, 가짜 신호를 줄이고, 다른 시장 환경에 따라 거래 행동을 조정하는 것입니다.

요약하다

다주기적인 스윙을 통해 ATR을 뚫고 반전량을 추적하는 트레이딩 전략은 브레이크 트레이딩, 다이내믹 리스크 관리 및 자동 반전 메커니즘의 장점을 결합한 포괄적인 거래 시스템입니다. 시장의 변동성에 자동으로 적응하고 명확한 거래 신호를 제공하며 반전 메커니즘을 통해 잠재적인 트렌드 변화 지점을 포착 할 수 있습니다.

이 전략은 설계에 있어서 여러 가지 요소를 고려했지만, 여전히 불안정한 시장에서 빈번한 거래, 가짜 돌파의 위험, 고정된 파라미터의 제한 등의 과제에 직면하고 있다. 적응 파라미터, 시장 환경 필터, 다중 시간 프레임 분석 및 더 복잡한 포지션 관리 기술을 도입함으로써 전략 성능은 더욱 향상될 수 있다.

이 전략을 실행하려는 거래자에게는 먼저 다른 시장 조건과 시간 프레임에 따라 테스트를 거쳐 특정 거래 품종에 가장 적합한 파라미터 조합을 찾아보고 다른 기술 분석 도구 또는 기본 요소와 결합하여 추가 확인이 될 수 있도록 고려하는 것이 좋습니다. 무엇보다도, 모든 전략은 장기적인 거래 성공을 보장하기 위해 엄격한 자금 관리와 위험 통제가 필요합니다.

전략 소스 코드
/*backtest
start: 2024-08-19 00:00:00
end: 2025-08-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"BTC_USDT","balance":5000}]
*/

//@version=5
strategy("Trend Breakout with Reverse Signals (Working)", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
length       = input.int(20, "Swing Lookback")
atrMult      = input.float(1.5, "Stop Loss ATR Multiplier")
trailMult    = input.float(2.0, "Trailing Stop ATR Multiplier")
volumeFilter = input.bool(true, "Use Volume Filter?")
volMult      = input.float(1.5, "Volume Threshold Multiplier")

// === ATR & Volume ===
atr = ta.atr(14)
avgVol = ta.sma(volume, length)

// === Swing High / Low Detection ===
swingHigh = ta.highest(high, length)
swingLow  = ta.lowest(low, length)

// Plot breakout levels
plot(swingHigh, color=color.red, title="Swing High", linewidth=2)
plot(swingLow, color=color.green, title="Swing Low", linewidth=2)

// === Volume Filter ===
volOK = volumeFilter ? volume > avgVol * volMult : true

// === Confirmed Breakouts ===
longBreak  = close[1] <= swingHigh[1] and close > swingHigh[1] and volOK
shortBreak = close[1] >= swingLow[1]  and close < swingLow[1]  and volOK

// === Trailing Stops ===
longTrail  = close - atr * trailMult
shortTrail = close + atr * trailMult

// === Track positions ===
var inLong  = false
var inShort = false

// === Breakout Entries ===
if longBreak and not inLong
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=close - atr*atrMult, trail_price=longTrail, trail_offset=atr*trailMult)
    inLong := true
    inShort := false

if shortBreak and not inShort
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=close + atr*atrMult, trail_price=shortTrail, trail_offset=atr*trailMult)
    inShort := true
    inLong := false

// === Reverse Signals on Exit ===
longExitSignal  = inLong  and strategy.position_size == 0
shortExitSignal = inShort and strategy.position_size == 0

if longExitSignal
    strategy.entry("Reverse Short", strategy.short)
    inLong := false
    inShort := true

if shortExitSignal
    strategy.entry("Reverse Long", strategy.long)
    inShort := false
    inLong := true

// === Plot Signals on Chart ===
plotshape(longBreak, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.large, text="BUY")
plotshape(shortBreak, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.large, text="SELL")
plotshape(longExitSignal, title="Reverse Short", location=location.abovebar, color=color.orange, style=shape.triangledown, size=size.large, text="REV SELL")
plotshape(shortExitSignal, title="Reverse Long", location=location.belowbar, color=color.blue, style=shape.triangleup, size=size.large, text="REV BUY")

// === Alerts ===
alertcondition(longBreak, title="Long Alert", message="Trend Breakout Long Signal")
alertcondition(shortBreak, title="Short Alert", message="Trend Breakout Short Signal")
alertcondition(longExitSignal, title="Reverse Short Alert", message="Exit Long → Reverse Short Signal")
alertcondition(shortExitSignal, title="Reverse Long Alert", message="Exit Short → Reverse Long Signal")