다중 지표 추세 돌파 동적 손절매 거래 시스템

EMA supertrend 趋势突破 摇摆点 动态止损 ATR
생성 날짜: 2025-07-08 14:24:30 마지막으로 수정됨: 2025-07-08 14:24:30
복사: 1 클릭수: 270
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 지표 추세 돌파 동적 손절매 거래 시스템 다중 지표 추세 돌파 동적 손절매 거래 시스템

개요

다중 지표 트렌드 돌파 동적 스톱 트레이딩 시스템은 지수 이동 평균 (EMA), 슈퍼 트렌드 지표 및 흔들림 높은 낮은 점들을 결합한 양적 트레이딩 전략이다. 이 전략은 주로 가격의 중요한 평준에 대한 돌파구를 식별하여, 슈퍼 트렌드 지표와 결합하여 트렌드 방향을 확인하고, 흔들림 점들을 동적 스톱 레벨로 사용하여, 전체적인 트렌드 추적 트레이딩 시스템을 형성한다. 이 전략은 명확한 입출입 규칙을 설계하여 중·장기 트렌드 상황을 포착하고, 다중 지표의 조화 작용을 통해 신호 품질과 거래 성공률을 높인다.

전략 원칙

이 전략의 핵심 원칙은 다중 지표의 공조인증에 기반을 두고 있으며 다음과 같은 몇 가지 핵심 구성 요소로 구성됩니다.

  1. EMA 상승/하락 궤도이 전략은 두 개의 EMA 평균선을 사용하여 가격의 높은 점 (EMA High) 과 낮은 점 (EMA Low) 을 각각 추적하여 동적 궤도를 형성합니다. 이 궤도는 가격에 중요한 참조 범위를 제공하며, 가격의 이 평균선을 돌파하는 것은 잠재적인 트렌드 시작 신호로 간주됩니다.

  2. 트렌드 브레이크 확인 메커니즘전략: 2단계 확인법으로 입장을 한다. 종결 가격이 EMA High를 돌파할 때, 현재 고점을 신호 고점으로 기록하고, 다음 K선이 그 고점을 돌파할 때까지 기다린다.

  3. 슈퍼 트렌드 확정전략은 SuperTrend 지표를 통합합니다. 이 지표는 ATR의 변동률 조정 통로를 기반으로 명확한 트렌드 방향 지시를 제공합니다.

  4. 진동이 멈추는 진동점전략: 전망백주기의 최고점과 최저점을 핵심지원 저항점으로 사용한다. 다단계 포지션에서는 가격이 최근의 흔들림 하위점 또는 EMA Low을 넘어간다면, 스톱로스를 트리거한다.

  5. 선택 가능한 일방적 거래 모드전략: 전략은 “단순히 더 많이 해”라는 옵션을 제공하며, 이는 단지 상승세를 잡거나 황소 시장 환경에서 사용하는 거래자에게 적합합니다.

전체 전략의 실행 과정은 다음과 같습니다: 먼저 EMA와 종전 가격의 관계를 통해 잠재적인 신호를 식별하고, 다음 K선 확인의 파격 후 입문, 그 동안 SuperTrend은 트렌드 방향 참조를 제공하며, 마지막으로 흔들림 포인트와 EMA 교차 관리 중지. 이러한 다층적인 신호 확인 메커니즘은 가짜 파격으로 인한 손실을 줄이는 데 도움이됩니다.

전략적 이점

이 전략의 코드 구현을 깊이 살펴보면 다음과 같은 몇 가지 중요한 장점을 볼 수 있습니다.

  1. 다중 인증 메커니즘이 전략은 평행선 돌파, 가격 돌파 및 슈퍼 트렌드 지표의 3번 확인을 결합하여 가짜 신호의 확률을 크게 감소시킵니다. 여러 가지 기술적 조건이 동시에 충족되면 거래 신호가 발생하여 신호 품질이 향상됩니다.

  2. 동적 손해 방지 시스템동적 스톱포드 (Dynamic Stop Loss) 를 설정하여 시장의 변동에 따라 스톱포드 (Stop Loss) 를 자동으로 조정하여 수익을 보호하고 가격에 충분한 호흡 공간을 제공하여 고정 스톱포드 (Fixed Stop Loss) 가 너무 일찍 유발 될 수있는 문제를 방지합니다.

  3. 트렌드 적응성전략은 EMA와 SuperTrend의 결합을 통해 다양한 시장 환경의 트렌드 변화를 효과적으로 포착할 수 있습니다. 슈퍼 트렌드 지표의 ATR 구성 요소는 전략이 시장의 변동성에 따라 자동으로 매개 변수 감수성을 조정할 수 있도록합니다.

  4. 지연 확인 메커니즘전략: 신호가 나타나자마자 K선에 즉시 입문하는 것이 아니라, 다음 K선에서 돌파구를 확인하는 것을 기다립니다. 이 디자인은 시장 소음으로 인한 잘못된 거래를 효과적으로 줄입니다.

  5. 고도의 사용자 정의전략: 전략은 EMA 길이, 슈퍼 트렌드 파라미터 및 스윙 포인트 회귀 주기를 포함한 여러 조정 가능한 파라미터를 제공하여 거래자가 다른 시장 환경 및 개인 위험 선호도에 따라 최적화된 조정을 할 수 있습니다.

  6. 한방향 거래 옵션“단순히 더 많이 한다” 모드는 전략이 다른 시장 선호에 적응하도록 해줍니다. 특히 전통적인 주식 시장과 같은 편향적인 시장 환경에 적합합니다.

  7. 명확한 재무 관리전략: 고정된 수보다 계정 지분의 비율을 기본으로 사용하여 포지션 관리를 수행합니다. 이는 리스크 틈새의 일관성을 유지하고 거래 당 위험을 더 잘 제어하는 데 도움이됩니다.

전략적 위험

이 전략은 여러 장점이 있지만 실제 적용에서는 다음과 같은 잠재적인 위험이 있습니다.

  1. 수평선 뒤떨어진 위험: EMA는 지연된 지표로서, 급격한 역전 시장에서 반응하지 않을 수 있으며, 입수 신호가 지연되거나 트렌드가 종료될 때 나타납니다. 해결책은 EMA 주기를 조정하거나 다른 선도적 지표와 함께 필터링하는 것을 고려할 수 있습니다.

  2. 가짜 침입 위험이 전략은 2단계 확인 메커니즘을 설계했음에도 불구하고, 격렬한 시장에서 가짜 파열이 발생할 수 있으며, 불필요한 거래 손실을 초래할 수 있습니다. 거래량 확인을 늘리거나 더 높은 파열 임계점을 설정하여 이러한 위험을 줄일 수 있습니다.

  3. 변수 최적화 함수: 과잉 최적화 파라미터는 전략이 역사적인 데이터에서 잘 작동하지만 실전에서는 효과가 좋지 않습니다. 여러 시간 주기 및 시장 환경에서 파라미터의 안정성을 테스트하는 것이 좋습니다. 과잉 적합성을 피하십시오.

  4. 트렌드 인식 지연: 슈퍼 트렌드 및 EMA 조합은 트렌드 전환점에 느리게 반응하여 입구점이 바람직하지 않거나 중요한 전환점을 놓치게 될 수 있습니다. 동력 지표가 추가되어 트렌드 변화의 징후를 더 빨리 잡을 수 있습니다.

  5. 시장의 부진: 트렌드 추적 전략으로, 수평 변동 시장에서 종종 잘못된 신호가 발생하여 연속 손실이 발생할 수 있습니다. 해결책은 시장 환경 필터를 추가하여 변동 시장으로 인식되면 거래를 중지하거나 매개 변수를 조정하는 것입니다.

  6. 스톱 로드 설정 위험: 동적 상쇄 시스템은 장점이 있지만, 극단적인 상황에서는 흔들림점이 너무 멀리 설정되어 단일 손실이 너무 커질 수 있습니다. 고정 금액 상쇄와 결합된 최대 손실 보장은 고려할 수 있습니다.

  7. 체계적인 위험 노출: 시장의 급격한 변동이나 유동성이 고갈될 때, 가격이 급등할 수 있으며, 이로 인해 정지 손실이 예상된 가격에서 실행되지 않습니다. 이러한 위험을 제어하기 위해 최대 손실 제한과 합리적인 위치 크기를 설정하는 것이 좋습니다.

전략 최적화 방향

코드의 심층적인 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 거래량 필터링을 늘립니다.현재 전략은 가격 데이터에만 의존하고 있으며, 거래량 확인 메커니즘을 추가하는 것을 고려할 수 있습니다. 거래량이 커질 때만 브레이크 신호가 유효하다고 확인하는 것이 가짜 브레이크를 줄이는 데 도움이됩니다. 최적화 이유: 거래량은 가격 변화의 동력이며, 큰 거래량과 함께의 브레이크는 더 신뢰할 수있는 트렌드 시작을 의미합니다.

  2. 시장 환경 필터를 추가합니다.: ADX 또는 변동률 지표를 도입하여 시장이 추세 상태인지 아니면 흔들림 상태인지 판단하고, 다른 시장 상태에 따라 전략 매개 변수를 조정하거나 거래를 중단할 수 있습니다. 최적화 이유: 추세 전략은 흔들림 시장에서 잘 작동하지 않으며, 시장 환경을 인식하여 불리한 조건의 거래를 피할 수 있습니다.

  3. 이윤보호제도 도입: 거래 수익이 어느 정도에 도달하면, 이동 중지 또는 부분 청산 메커니즘을 활성화하여 수익의 일부를 잠금 할 수 있습니다. 최적화 이유: 이 전략의 현재 중지 메커니즘은 위험 제어에 중점을 두고 있으며, 이미 얻은 수익에 대한 보호 장치가 없습니다.

  4. 다중 시간 프레임 확인: 더 높은 시간 프레임의 트렌드 방향과 결합된 필터 조건으로, 더 높은 시간 프레임의 트렌드 방향이 일치하는 경우에만 거래를 실행한다. 최적화 이유: 여러 시간 프레임의 일관성은 일반적으로 더 강력하고 지속적인 트렌드를 의미한다.

  5. 최적화 매개 변수가 적응: 시장의 변동률이나 근래의 트렌드 강도에 따라 EMA 길이와 SuperTrend 파라미터를 동적으로 조정할 수 있으므로 전략이 다른 시장 환경에 더 잘 적응할 수 있습니다. 최적화 이유: 고정 파라미터는 다른 시장 환경에서 큰 차이를 나타냅니다. 적응 파라미터는 전략의 안정성을 향상시킬 수 있습니다.

  6. 계절적 또는 시간적 필터를 추가합니다.일부 시장에는 명백한 계절적 특성이 있거나 일간 효과가 있습니다. 시간 필터를 추가하여 역사적으로 좋지 않은 거래 시간을 피할 수 있습니다. 최적화 이유: 부실한 시간을 피하면 전반적인 승률과 자금 효율성을 향상시킬 수 있습니다.

  7. 기계학습 모델을 통합합니다.: 기계 학습 알고리즘을 사용하여 신호 품질을 동적으로 평가하거나 최적화 매개 변수 선택을 고려하여 전략 적응성을 향상시킬 수 있습니다. 최적화 이유: 기계 학습은 역사 데이터에서 인위적으로 식별하기 어려운 패턴을 발견하고, 신호 필터링 및 매개 변수 최적화를 보조합니다.

요약하다

다중 지표 트렌드 돌파 동적 중지 거래 시스템은 합리적이고 논리적으로 명확한 양적 거래 전략으로, EMA, 슈퍼 트렌드 및 흔들림 점의 연동 작용을 통해 전체적인 트렌드 추적 거래 시스템을 구축합니다. 이 전략의 주요 장점은 여러 확인 장치와 동적 중지 시스템으로 트렌드 상황을 효과적으로 포착하고 위험을 제어 할 수 있습니다.

동시에, 전략에는 평평선 뒤떨어짐과 변동 시장의 부실성 같은 잠재적인 위험도 존재하지만, 거래량 필터, 시장 환경 식별 및 다중 시간 프레임 확인 등의 방법으로 최적화 할 수 있다. 또한, 이익 보호 장치 및 변수 자조 시스템을 도입하는 것도 전략 안정성을 향상시키는 중요한 방향이다.

전반적으로, 이 전략은 트렌드 추적 방식의 거래에 대한 구조화된 프레임워크를 제공하며, 합리적으로 설정된 매개 변수와 필요한 최적화 조정을 통해 다양한 종류의 시장 환경에서 잠재적인 거래 기회를 찾을 수 있다. 전략의 모듈화된 설계는 또한 확장하기 쉽고 개인화 할 수 있도록 사용자 정의되어 중·장기 트렌드 트레이더가 사용할 수 있도록 한다.

전략 소스 코드
/*backtest
start: 2024-07-07 00:00:00
end: 2024-11-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/


// © prisminvest48

//@version=6
strategy("MULTI INDICATOR BY DEEPANINDIA", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
emaHighLen    = input.int(26, title="EMA High Length")
emaHighSrc    = input.source(high, title="EMA High Source")
emaLowLen     = input.int(26, title="EMA Low Length")
emaLowSrc     = input.source(low, title="EMA Low Source")
swingLookback = input.int(5, title="Swing High/Low Lookback", minval=1)
longOnly      = input.bool(false, title="Long Only Mode")

// SuperTrend inputs
showSuperTrend = input.bool(true, title="Show SuperTrend")
atrLen         = input.int(10, title="SuperTrend ATR Length")
atrMultiplier  = input.float(3.0, title="SuperTrend ATR Multiplier")

// === EMA Calculations ===
emaHigh = ta.ema(emaHighSrc, emaHighLen)
emaLow  = ta.ema(emaLowSrc, emaLowLen)
plot(emaHigh, title="EMA High", color=color.orange)
plot(emaLow, title="EMA Low", color=color.teal)

// === SuperTrend Calculation ===
atr = ta.atr(atrLen)
hl2 = (high + low) / 2
var float superTrend = na
var int direction = 1  // 1 = uptrend, -1 = downtrend

upperBand = hl2 + atrMultiplier * atr
lowerBand = hl2 - atrMultiplier * atr

if na(superTrend)
    superTrend := lowerBand

if direction == 1
    if close > superTrend
        superTrend := math.max(superTrend, lowerBand)
    else
        direction := -1
        superTrend := upperBand
else
    if close < superTrend
        superTrend := math.min(superTrend, upperBand)
    else
        direction := 1
        superTrend := lowerBand

// Plot SuperTrend if enabled
plot(showSuperTrend ? superTrend : na, title="SuperTrend", color=direction == 1 ? color.green : color.red, linewidth=2)

// === Signal Tracking ===
var float signalHigh = na
var float signalLow = na
var bool waitLongConfirm = false
var bool waitShortConfirm = false

// === Detect Long Signal ===
if close[1] > emaHigh[1]
    signalHigh := high[1]
    waitLongConfirm := true
    waitShortConfirm := false

// === Detect Short Signal ===
if not longOnly and close[1] < emaLow[1]
    signalLow := low[1]
    waitShortConfirm := true
    waitLongConfirm := false

// === Confirm Long Entry on Next Candle ===
longBreakout = waitLongConfirm and high > signalHigh
if longBreakout
    strategy.entry("Long", strategy.long)
    waitLongConfirm := false

// === Confirm Short Entry on Next Candle ===
shortBreakout = not longOnly and waitShortConfirm and low < signalLow
if shortBreakout
    strategy.entry("Short", strategy.short)
    waitShortConfirm := false

// === Exit Logic for Long ===
swingLow = ta.lowest(low, swingLookback)
longExit = close < emaLow or low < swingLow
if strategy.position_size > 0 and longExit
    strategy.close("Long")

// === Exit Logic for Short ===
swingHigh = ta.highest(high, swingLookback)
shortExit = close > emaHigh or high > swingHigh
if not longOnly and strategy.position_size < 0 and shortExit
    strategy.close("Short")