Dynamic ATR 최적화된 일중 최고 및 최저 지점 돌파 거래 전략

ATR BUFFER
생성 날짜: 2025-02-21 14:42:58 마지막으로 수정됨: 2025-02-27 16:53:19
복사: 1 클릭수: 447
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

Dynamic ATR 최적화된 일중 최고 및 최저 지점 돌파 거래 전략 Dynamic ATR 최적화된 일중 최고 및 최저 지점 돌파 거래 전략

개요

이것은 하루 동안의 가격의 높고 낮은 지점을 돌파하는 것을 기반으로 한 거래 전략이며, ATR 지표와 결합하여 중지 및 수익 목표를 동적으로 조정합니다. 이 전략은 이전 거래 날과 현재 거래 날의 최고 가격과 최저 가격을 모니터링하여 가격이 이러한 중요한 수준을 돌파 할 때 거래합니다. 이 전략은 또한 가짜 신호를 줄이기 위해 버퍼 영역 개념을 도입하고 ATR 배수를 사용하여 동적인 위험 관리 매개 변수를 설정합니다.

전략 원칙

이 전략의 핵심 논리는 가격 돌파 전의 고저를 기반으로 거래하는 것이다. 구체적으로:

  1. 매일 거래가 시작될 때, 전날의 최고 가격과 최저 가격을 기록합니다.
  2. 실시간으로 당일 최고 가격과 최저 가격을 추적합니다.
  3. 전날과 당일 극한값을 비교하고, 최고값과 최저값을 브레이크 기준점으로 선택합니다.
  4. 가격이 이러한 기준점을 돌파했을 때 거래 신호를 유발합니다.
  5. ATR의 1.5배를 스톱 라인즈로, 2배를 수익 목표로 사용한다.
  6. 시스템은 자동으로 차트에 브레이크 위치를 매핑하고 거래 상기 기능을 제공합니다.

전략적 이점

  1. 역동적 적응성 - ATR을 통해 역동적으로 중지 및 수익 목표를 조정하여 전략이 다양한 시장 변동 환경에 적응할 수 있도록합니다.
  2. 리스크 관리가 완벽합니다 - ATR 기반의 중지 및 수익 목표를 설정하여 각 거래의 위험을 제어할 수 있습니다.
  3. 신호 필터링 메커니즘 - 허위 침입 신호를 줄이기 위해 버퍼 영역을 사용합니다.
  4. 시각화 지원 - 트레이더가 실시간으로 모니터링 할 수 있도록 도표에 브레이크 위치를 명확하게 표시합니다
  5. 높은 수준의 자동화 - 완전한 입출장 논리를 포함하고, 완전히 자동화된 거래가 가능합니다.

전략적 위험

  1. 수평 시장 위험 - 시장의 변동이 적을 때 빈번하게 잘못된 신호가 발생할 수 있습니다.
  2. 비행 위험 - 야간 비행은 무효성을 초래할 수 있다
  3. 추세 연장 위험 - 고정된 ATR 배수는 강한 추세 시장에서 조기 청산 될 수 있습니다.
  4. 매개 변수 민감성 - 방호 구역 및 ATR 배수의 설정이 전략 성능에 큰 영향을 미칩니다.
  5. 시장 환경 의존성 - 전략은 높은 변동성 시장에서 잘 작동하지만 낮은 변동성 시에는 좋지 않을 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터 도입 - 이동 평균과 같은 트렌드 지표를 추가하여 트렌드 방향으로만 거래할 수 있습니다.
  2. 동적 완충구 - 시장의 변동에 따라 자동으로 조정되는 완충구 크기
  3. 개선된 스톱 메커니즘 - 추적 스톱을 사용하여 강력한 추세에서 조기 퇴출을 피하는 것을 고려하십시오.
  4. 시간 필터링 - 거래 시간 필터를 추가하여 변동성이 적은 시간을 피하십시오.
  5. 거래량 확인 - 거래량 확인 메커니즘을 추가하여 돌파구 신뢰도를 높입니다.

요약하다

이것은 합리적이고 논리적으로 명확하게 설계된 돌파구 거래 전략이다. ATR 지표와 버퍼 구역 개념을 결합하여 거래 기회와 위험 통제를 효과적으로 균형을 맞추고 있다. 전략의 시각화와 자동화 수준이 높으며, 일일 거래자의 사용에 적합하다. 그러나 사용자는 시장 환경에 대한 적응성에 주의를 기울이고 실제 거래 효과에 따라 매개 변수 설정을 조정해야 한다. 제안된 최적화 방향에 따라 전략에 추가적인 개선이 가능하다.

전략 소스 코드
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-14 01:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Previous/Current Day High-Low Breakout Strategy", overlay=true)

// === INPUTS ===
buffer = input(10, title="Buffer Points Above/Below Day High/Low")  // 0-10 point buffer
atrMultiplier = input.float(1.5, title="ATR Multiplier for SL/TP")  // ATR-based SL & TP

// === DETECT A NEW DAY CORRECTLY ===
dayChange = ta.change(time("D")) != 0  // Returns true when a new day starts

// === FETCH PREVIOUS DAY HIGH & LOW CORRECTLY ===
var float prevDayHigh = na
var float prevDayLow = na

if dayChange
    prevDayHigh := high[1]  // Store previous day's high
    prevDayLow := low[1]  // Store previous day's low

// === TRACK CURRENT DAY HIGH & LOW ===
todayHigh = ta.highest(high, ta.barssince(dayChange))  // Highest price so far today
todayLow = ta.lowest(low, ta.barssince(dayChange))  // Lowest price so far today

// === FINAL HIGH/LOW SELECTION (Whichever Happens First) ===
finalHigh = math.max(prevDayHigh, todayHigh)  // Use the highest value
finalLow = math.min(prevDayLow, todayLow)  // Use the lowest value

// === ENTRY CONDITIONS ===
// 🔹 BUY (LONG) Condition: Closes below final low - buffer
longCondition = close <= (finalLow - buffer)

// 🔻 SELL (SHORT) Condition: Closes above final high + buffer
shortCondition = close >= (finalHigh + buffer)

// === ATR STOP-LOSS & TAKE-PROFIT ===
atr = ta.atr(14)
longSL = close - (atr * atrMultiplier)  // Stop-Loss for Long
longTP = close + (atr * atrMultiplier * 2)  // Take-Profit for Long
shortSL = close + (atr * atrMultiplier)  // Stop-Loss for Short
shortTP = close - (atr * atrMultiplier * 2)  // Take-Profit for Short

// === EXECUTE LONG (BUY) TRADE ===
if longCondition
    strategy.entry("BUY", strategy.long, comment="🔹 BUY Signal")
    strategy.exit("SELL TP", from_entry="BUY", stop=longSL, limit=longTP)

// === EXECUTE SHORT (SELL) TRADE ===
if shortCondition
    strategy.entry("SELL", strategy.short, comment="🔻 SELL Signal")
    strategy.exit("BUY TP", from_entry="SELL", stop=shortSL, limit=shortTP)

// === PLOT LINES FOR VISUALIZATION ===
plot(finalHigh, title="Breakout High (Prev/Today)", color=color.new(color.blue, 60), linewidth=2, style=plot.style_stepline)
plot(finalLow, title="Breakout Low (Prev/Today)", color=color.new(color.red, 60), linewidth=2, style=plot.style_stepline)

// === ALERT CONDITIONS ===
alertcondition(longCondition, title="🔔 Buy Signal", message="BUY triggered 🚀")
alertcondition(shortCondition, title="🔔 Sell Signal", message="SELL triggered 📉")