더블 슈퍼 트렌드 퓨전 ATR 적응형 동적 손절매 전략

ATR supertrend Pivot Points SCALPING Dual Confirmation
생성 날짜: 2025-06-04 13:13:08 마지막으로 수정됨: 2025-06-04 13:13:08
복사: 0 클릭수: 376
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

더블 슈퍼 트렌드 퓨전 ATR 적응형 동적 손절매 전략 더블 슈퍼 트렌드 퓨전 ATR 적응형 동적 손절매 전략

개요

이것은 두 개의 초 트렌드 시스템을 결합한 강력한 일일 단선 거래 전략이다. 이 전략은 동적 축 초 트렌드 (동적 하위 및 ATR 파동 대역에 기반한) 과 고전 초 트렌드 (전통 ATR 기반의 트렌드 추적 필터) 를 결합하여 거래하기 전에 강력한 트렌드 확인을 보장한다. 이 쌍 확인 메커니즘은 가짜 신호를 크게 줄여 거래의 정확성과 수익성을 향상시킵니다.

전략 원칙

이 전략의 핵심은 두 가지 다른 슈퍼 트렌드 시스템을 결합하여 더 신뢰할 수 있는 거래 신호를 얻는 것입니다.

  1. 축 초 트렌드 시스템:

    • 동적 축 고점과 낮은 점을 사용 하 여pivotPeriod변수)
    • 통과하다pivotCenter현재 축 중심 가격을 계산합니다.
    • ATR 곱셈을 적용하기pivotATRMult동적 지원 및 저항 대역을 생성합니다.
    • 트렌드 방향에 따라 스톱 라인을 생성하고pivotTrend)
  2. 클래식 초트렌드 시스템:

    • 전통적인 ATR 계산을 기반으로 (클래식 ATR 또는 간단한 이동 평균 계산을 사용할 수 있습니다)
    • 사용classicATRMult동적인 진동대를 생성하는 곱셈
    • 두 번째 세트의 트렌드 방향을 추적하는 스톱 라인을 생성합니다.stTrend)
  3. 입학 조건:

    • 구매 조건: 중심축 상향 추세는 시점으로 변한다 (상향=1), 클래식 상향 추세는 시점으로 변한다, 그리고 중심축 추세는 시점에서 시점으로 변해야 한다
    • 판매 조건: 중심축 초향이 하향으로 변함 (상향=-1), 클래식 초향이 하향으로 변함, 그리고 중심축 추세는 상향에서 하향으로 변해야 한다
  4. 손해 방지 및 수익 목표:

    • 14주기 ATR 동적 계산
    • 스톱로스는 입시 가격±1.5×ATR로 설정되어 있습니다.
    • 이윤 목표값은 입시 가격±3.0×ATR로 설정

코드는 이 전략의 전체 논리를 구현하고, 주문 관리와 시각 지표를 포함하고, 실제 거래에 적용하기 쉽다.

전략적 이점

코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 보여준다:

  1. 이중 트렌드 확인 메커니즘: 두 개의 초 트렌드 시스템을 동시에 확인하도록 함으로써 가짜 브레이크와 잘못된 신호를 크게 줄입니다. 이 이중 검증은 강력한 트렌드 변화만이 거래 신호를 유발할 수 있도록 보장합니다.

  2. 동적 적응 변수전략의 중지 및 수익 목표는 ATR 계산에 기반하여 시장의 실제 변동성에 따라 자동으로 조정할 수 있습니다. 이것은 변동성이 높은 시장에서 중지 지점은 그에 따라 확장되고, 변동성이 적은 시장에서는 강화되어 다른 시장 환경에 효과적으로 적응 할 수 있습니다.

  3. 중심점 트렌드 식별동적인 축점 (dynamic pivot point) 을 고정된 가격 수준보다 사용하여 트렌드를 파악하여 전략이 실제 시장 구조의 변화와 중요한 전환점을 더 잘 포착할 수 있도록 합니다.

  4. 고도 시각화이 전략은 색깔의 초 트렌드 라인 및 구매/판매 신호 표시와 같은 명확한 시각적 지표를 포함하고 있어 거래자가 거래 기회를 쉽게 식별할 수 있다.

  5. 전체적인 위험 관리: 자동으로 중지 및 수익 목표를 설정하여 수동 위험 관리의 필요성을 제거하고 거래 규율을 보장합니다.

  6. 단선 거래 최적화3~5분 차트 상의 짧은 라인 거래를 위해 설계되어 있으며, 높은 주파수 거래 환경과 일일 변동성을 포착하는 데 적합합니다.

  7. 예상된 재원 관리: 코드는 적절한 포지션 크기와 위험 통제를 유지하기 위해 계정 이득의 10%를 사용하여 거래하도록 설정되어 있습니다.

전략적 위험

이 전략은 합리적으로 설계되었지만 다음과 같은 잠재적인 위험과 한계가 있습니다.

  1. 급격한 반전 위험: 높은 변동성이 있는 시장에서, 가격이 신호를 발동한 후 빠르게 반전될 수 있으며, 이로 인해 정지 손실이 유발됩니다.

  2. 상자 시장의 부진: 이중 초 트렌드 시스템은 명확한 트렌드에서 가장 잘 작동하지만, 수평 정리 시장에서 빈번한 잘못된 신호가 발생할 수 있습니다. 해결 방법: 추가 수평 시장 필터를 추가하십시오.

  3. 매개변수 민감도전략 성능은 여러 파라미터 설정에 크게 의존합니다. (ATR 주기와 곱하기 등) 해결 방법: 광범위한 역사 회신을 수행하여 특정 시장과 시간 프레임에 대한 최적의 파라미터 조합을 찾습니다.

  4. 유동성 의존: 단선 전략으로, 유동성이 낮은 시장이나 시간대에 슬라이드 포인트와 실행 문제가 발생할 수 있다. 해결 방법: 유동성이 높은 시간대에 거래 시간을 제한하거나 유동성 필터를 증가시킨다.

  5. 연속적인 손실 위험어떤 전략도 100%의 성공률을 보장하지 않으며, 연속적인 손실 거래가 발생할 수 있습니다. 해결 방법: 하루 최대 거래 수와 최대 손실 제한을 적용하여 과도한 거래와 자금 손실을 방지하십시오.

  6. 과대 최적화 위험: 전략에는 여러 개의 조정 가능한 매개 변수가 있으며, 과도한 최적화와 곡선 적합으로 이어질 수 있다. 해결 방법: 샘플 외 테스트와 전향 테스트를 사용하여 매개 변수의 안정성을 검증한다.

전략 최적화 방향

코드 분석을 바탕으로, 이 전략의 최적화 방향은 다음과 같습니다.

  1. 시장 환경 필터 추가: 통합된 시장 유형 식별 메커니즘 (ADX 또는 변동률 분석과 같은), 트렌드 또는 가로 시장에 맞게 전략을 자동으로 조정한다. 이러한 최적화는 단선 거래에 적합하지 않은 시장 환경에서 손실 거래를 크게 줄일 수 있다.

  2. 최적화 매개 변수가 적응: 역동적인 매개 변수 조정 메커니즘을 구현하여 최근 시장 성과에 따라 ATR 곱셈과 주기를 자동으로 최적화합니다. 이것은 수동 개입이 필요없이 전략이 시장 조건의 변화에 더 잘 적응할 수있게합니다.

  3. 통합 트래픽 분석: 입시 조건에 거래량 확인 요구 사항을 추가하여 가격 움직임이 충분한 시장 참여를 지원하도록하십시오. 거래량은 가격 행동의 중요한 확인 지표이며 신호 품질을 크게 향상시킬 수 있습니다.

  4. 시간 필터: 거래 시간 기반의 필터링 메커니즘을 구현하고, 가장 활발하고 가장 수익성이 높은 시장 시간 내에만 거래한다. 코드 코멘트에서 높은 거래량 시간 (예: 9:15 AM ~ 2:30 PM) 에서 거래하는 것이 권장되며, 이는 직접 프로그래밍 할 수 있다.

  5. 손해 방지 전략 개선더 복잡한 스톱 전략을 탐구하는 것, 예를 들어 스톱을 추적하는 것 또는 지지/저항 수준을 기반으로 하는 스톱은 단순한 ATR 곱하기보다 더 나은 위험 관리를 제공할 수 있다.

  6. 기계 학습 최적화: 전략이 가장 잘 작동하는 시장 조건을 식별하기 위해 기계 학습 알고리즘을 사용하는 것을 고려하거나, 역사적 데이터에 따라 최적화 매개 변수를 선택하십시오.

  7. 다중 시간 프레임 확인: 더 높은 시간 프레임의 트렌드 필터를 추가하여 더 큰 트렌드 방향의 짧은 라인 거래를 보장하고, 승률과 리스크 수익률을 향상시킵니다.

이러한 최적화는 전략이 더 안정적이고 다양한 시장 환경에 더 잘 적응할 수 있도록 해 줄 것이며, 동시에 두 가지의 동향 확인과 동적 위험 관리에 대한 핵심 장점을 유지할 것입니다.

요약하다

이중 초상향 통합 ATR 자율적 동적 중지 전략은 두 개의 독립적인 초상향 지표를 결합하여 매우 신뢰할 수 있는 거래 신호를 제공하는 잘 설계된 단선 거래 시스템입니다. 이 전략의 주요 장점은 두 개의 확인 메커니즘으로 오류 신호를 크게 줄이고 ATR 기반의 동적 중지 및 수익 목표를 통해 효과적인 위험 관리를 제공합니다.

이 전략은 특히 일간 단선 거래자에게 적합하며 3-5 분 차트의 높은 유동성 거래 시간대에 가장 잘 작동합니다. 그러나 사용자는 가로판 시장에서 잠재적인 한계에 주의를 기울이고 전략의 성능을 더욱 향상시키기 위해 시장 환경 필터 및 거래량 확인과 같은 권장 사항을 최적화하여 실행하는 것을 고려해야합니다.

신중한 변수 조정과 적절한 위험 관리를 통해 이 전략은 거래자의 무기고에서 가치있는 도구가 될 수 있습니다. 특히 짧은 시간에 시장의 변동을 포착하려는 적극적인 거래자에게는 그렇습니다. 코드에 내장된 시각화 및 경고 기능은 실행 및 모니터링을 쉽게하고 전략의 모듈 디자인은 미래의 사용자 정의 및 개선을위한 좋은 토대를 제공합니다.

전략 소스 코드
/*backtest
start: 2024-06-04 00:00:00
end: 2025-06-03 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=6
strategy("🔥Scalping Fusion Strategy v6", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)

// === INPUTS ===
pivotPeriod       = input.int(2, "Pivot Point Period", minval=1)
pivotATRPeriod    = input.int(10, "Pivot ATR Period")
pivotATRMult      = input.float(3.0, "Pivot ATR Multiplier", step=0.1)

classicATRPeriod  = input.int(10, "Classic SuperTrend ATR Period")
classicATRMult    = input.float(3.0, "Classic SuperTrend ATR Multiplier", step=0.1)
useClassicATR     = input.bool(true, "Use Classic ATR Calculation")
stSource          = input.source(hl2, "Classic SuperTrend Source")

slATRMult         = input.float(1.5, "Stoploss ATR Multiplier")
tpATRMult         = input.float(3.0, "Target ATR Multiplier")

// === PIVOT SUPER TREND LOGIC ===
ph = ta.pivothigh(high, pivotPeriod, pivotPeriod)
pl = ta.pivotlow(low, pivotPeriod, pivotPeriod)

var float pivotCenter = na
pivotPoint = not na(ph) ? ph : not na(pl) ? pl : na

if not na(pivotPoint)
    pivotCenter := na(pivotCenter) ? pivotPoint : (pivotCenter * 2 + pivotPoint) / 3

pivotATR = ta.atr(pivotATRPeriod)
pivotUpper = pivotCenter - pivotATRMult * pivotATR
pivotLower = pivotCenter + pivotATRMult * pivotATR

var float trailPivotUp = na
var float trailPivotDown = na
var int pivotTrend = 0

trailPivotUp   := close[1] > nz(trailPivotUp[1], pivotUpper) ? math.max(pivotUpper, nz(trailPivotUp[1], pivotUpper)) : pivotUpper
trailPivotDown := close[1] < nz(trailPivotDown[1], pivotLower) ? math.min(pivotLower, nz(trailPivotDown[1], pivotLower)) : pivotLower

pivotTrend := close > nz(trailPivotDown[1]) ? 1 : close < nz(trailPivotUp[1]) ? -1 : nz(pivotTrend[1], 1)
pivotSuperTrend = pivotTrend == 1 ? trailPivotUp : trailPivotDown

// === CLASSIC SUPER TREND LOGIC ===
atrST = useClassicATR ? ta.atr(classicATRPeriod) : ta.sma(ta.tr(true), classicATRPeriod)
stUpper = stSource - classicATRMult * atrST
stLower = stSource + classicATRMult * atrST

stUpper1 = nz(stUpper[1], stUpper)
stLower1 = nz(stLower[1], stLower)

stUpper := close[1] > stUpper1 ? math.max(stUpper, stUpper1) : stUpper
stLower := close[1] < stLower1 ? math.min(stLower, stLower1) : stLower

var int stTrend = 1
stTrend := close > stLower1 ? 1 : close < stUpper1 ? -1 : stTrend
classicSuperTrend = stTrend == 1 ? stUpper : stLower

// === ENTRY CONDITIONS ===
buySignal  = pivotTrend == 1 and stTrend == 1 and pivotTrend[1] == -1
sellSignal = pivotTrend == -1 and stTrend == -1 and pivotTrend[1] == 1

// === ATR-BASED SL/TP ===
atrSLTP = ta.atr(14)
longSL  = close - slATRMult * atrSLTP
longTP  = close + tpATRMult * atrSLTP
shortSL = close + slATRMult * atrSLTP
shortTP = close - tpATRMult * atrSLTP

// === STRATEGY ORDERS ===
if (buySignal and strategy.position_size <= 0)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=longSL, limit=longTP)

if (sellSignal and strategy.position_size >= 0)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)

// === VISUALS ===
plot(pivotSuperTrend, title="Pivot SuperTrend", color=pivotTrend == 1 ? color.lime : color.red, linewidth=2)
plot(classicSuperTrend, title="Classic SuperTrend", color=stTrend == 1 ? color.green : color.maroon, linewidth=2, style=plot.style_linebr)

plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.small)

// === ALERTS ===
alertcondition(buySignal, title="Buy Alert", message="🔥 DILL Strategy Buy Signal")
alertcondition(sellSignal, title="Sell Alert", message="🔥 DILL Strategy Sell Signal")