다중 시간 프레임 추세 추종 및 슈퍼 트렌드 모멘텀 최적화 전략

EMA ATR SL TP MT ST
생성 날짜: 2025-03-14 09:17:57 마지막으로 수정됨: 2025-03-14 09:17:57
복사: 4 클릭수: 462
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 시간 프레임 추세 추종 및 슈퍼 트렌드 모멘텀 최적화 전략 다중 시간 프레임 추세 추종 및 슈퍼 트렌드 모멘텀 최적화 전략

개요

이 전략은 1시간 차트의 200 EMA를 트렌드 확정 지표로, 15분 차트의 슈퍼 트렌드 지표를 입시 신호로 결합한 다중 시간 프레임의 트렌드 추적 거래 시스템이다. 이 조합은 높은 시간 프레임의 트렌드 방향 지침과 낮은 시간 프레임의 정확한 입시 지점을 활용하여 큰 트렌드를 파악하고 입시 시기를 최적화 할 수있는 완전한 거래 시스템을 형성한다. 전략에는 슈퍼 트렌드 지표의 값에 기반한 중지 손실 설정과 위험 비율에 기반한 수익 목표가 포함되어 있으며, 각 거래에 대한 명확한 위험 관리 프레임워크를 제공합니다.

전략 원칙

이 전략의 핵심 원칙은 다중 시간 프레임 분석을 통해 거래 신호를 필터링하여 거래 방향이 주요 추세와 일치하는지 확인하는 것입니다. 구체적인 구현 방법은 다음과 같습니다:

  1. 트렌드 확인 메커니즘 ((1시간 차트)

    • 200주기 지수 이동 평균 ((EMA 200) 을 사용하여 전체 시장 추세를 판단
    • 가격의 EMA 200 위를 보면, 상승 추세로 간주됩니다.
    • 가격이 EMA 200 이하일 때, 하향 경향을 확정합니다.
  2. 입구 신호 ((15분 차트)

    • 슈퍼 트렌드 지표 (Supertrend) 를 사용하여 정확한 입문 신호를 생성합니다.
    • 슈퍼 트렌드가 초록색으로 표시되면 구매 신호가 생성됩니다.
    • 슈퍼 트렌드가 빨간색으로 나타나면 판매 신호가 생성됩니다.
  3. 위험 관리

    • 스톱로스 설정: 입구에 고정된 슈퍼 트렌드 지표 값 위치
    • 수익 목표: 입시 가격과 스톱 로즈 사이의 거리의 1.5배 (코드에서 실제 2배)
    • 거래 관리: 새로운 신호가 발생하면 이전 거래가 닫히고, 한 번에 하나의 거래만 활성화됩니다.

코드 분석을 통해, 전략은 request.security 함수를 사용하여 1시간 시간 프레임에서 EMA 200 데이터를 가져와 현재의 가격과 비교하여 트렌드 방향을 결정한다. 동시에, 현재 15분 차트에 슈퍼 트렌드 지표값과 그 방향을 계산한다. 두 시간 프레임의 신호가 일치하는 경우에만 (예를 들어, 1시간 상승 트렌드 + 15분 슈퍼 트렌드 상승) 거래 신호를 유발한다.

전략적 이점

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

  1. 트렌드 필터링의 신뢰성두 시간 프레임을 결합하여 트렌드 확인을 함으로써 가짜 브레이크와 역 거래의 가능성을 크게 줄입니다. 더 높은 시간 프레임 (~ 1 시간) 의 EMA 200은 더 안정적인 트렌드 판단을 제공하며, 단지 변동이 큰 짧은 시간 프레임에 의존하지 않습니다.

  2. 정확한 출입시간슈퍼 트렌드 지표는 짧은 시간 프레임 (<15분) 에 대한 정확한 진입 지점을 제공하여 트레이더가 트렌드를 확인하면서 진입 가격을 최적화하고 거래의 성과를 높일 수 있습니다.

  3. 위험 관리 자동화이 전략은 시장의 변동성에 기반한 동적 스톱 로드 메커니즘을 내장하고, 슈퍼 트렌드 지표는 시장의 변동성을 고려합니다 (ATR 계산을 통해), 따라서 스톱 로드 포지션은 시장 조건에 따라 자동으로 조정됩니다.

  4. 수익 목표 비율 설계: 고정된 리스크 수익률의 () 2: 1의 수익 목표를 설정함으로써, 전략은 장기적인 수익 가능성을 보장합니다. 승률이 특별히 높지 않더라도, 시스템은 긍정적 인 기대치를 달성 할 수 있습니다.

  5. 거래 중복을 피하십시오.전략: 새로운 신호를 생성할 때 기존 거래를 닫는 것을 보장하고, 포지션 중첩 위험을 피하고, 자금 관리 및 위험 통제를 단순화한다.

전략적 위험

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

  1. 트렌드 전환점 반응 지연: 더 긴 주기 ((200기) 의 이동 평균을 사용하기 때문에, 전략은 트렌드 전환점에서의 반응이 상대적으로 늦어지며, 시장 역전 초기에는 원래의 트렌드 방향에 따라 계속 거래되어 손실이 발생할 수 있습니다.

  2. 위기 시장의 가짜 신호가 증가수평조정 또는 변동 시장에서 가격은 EMA 200선을 자주 통과할 수 있으며, 슈퍼 트렌드 지표는 종종 변동하여 여러 개의 가짜 신호를 발생시켜 연속적인 손실을 초래합니다.

  3. 고정된 리스크/수익률의 한계이 전략은 2:1의 리스크/이익 비율을 정하고 있지만, 시장과 기간에 따라 최적의 리스크/이익 비율이 다를 수 있으며, 고정된 설정이 항상 최적의 선택이 아닐 수 있다.

  4. 매개변수 민감도슈퍼 트렌드 지표의 파라미터 (ATR 주기와 인자) 는 전략 성능에 중요한 영향을 미치며, 다른 시장에는 다른 파라미터 조합이 필요할 수 있으며, 이는 전략 최적화의 복잡성을 증가시킵니다.

  5. 유동성 위험: 유동성이 낮은 시장이나 극단적인 시장 조건에서 실제 손실이 발생할 수 있으며, 실제 손실이 예상보다 높을 수 있습니다.

해결 방법은 다음과 같습니다: 트렌드 필터 조건을 추가 (트렌드 강도 지표와 같은), 다양한 시장 조건에 맞게 슈퍼 트렌드 파라미터를 조정, 최대 연속 손실 횟수 제한을 설정하고, 시장의 변동적 동력에 따라 리스크 수익률을 조정한다.

전략 최적화 방향

코드 분석을 통해 다음과 같은 몇 가지 최적화 방향을 확인할 수 있습니다.

  1. 트렌드 강도 필터를 도입합니다.: 현재 전략은 EMA 200에 대한 가격의 위치만을 사용하여 추세를 판단하고, ADX 또는 MACD와 같은 추세 강도 지표를 추가하는 것을 고려할 수 있으며, 추세가 충분히 강할 때만 거래하여 흔들리는 시장의 잘못된 신호를 피합니다.

  2. 동적 리스크 수익률: 고정된 리스크 수익률을 시장의 변동성이나 지지 저항점에 기반한 역동적인 계산 방법으로 대체한다. 예를 들어, 변동성이 큰 경우 더 보수적인 리스크 수익률을 설정하고, 강한 추세에서는 더 적극적인 설정을 사용할 수 있다.

  3. 일부 수익 메커니즘을 추가: 현재 전략은 전체 포지션 입출입 방식을 채택하고, 분기 수익 메커니즘을 고려할 수 있습니다. 예를 들어, 1:1 리스크 수익률을 달성하면 수익의 일부를, 나머지 부분은 트렌드를 따라하기 위해 스톱로스를 설정합니다.

  4. 통합 거래량 확인: 거래량 지표를 입시 조건에 통합하여 신호가 나타나면 거래량이 눈에 띄게 증가하여 신호의 신뢰성을 높인다.

  5. 시간 필터: 시간 필터링 조건을 추가하여 알려진 낮은 유동성 시간이나 큰 변동성이있는 시장 발표 시간을 피하십시오.

  6. 변수 적응 메커니즘슈퍼 트렌드 파라미터의 적응 조정, 최근 시장 변동 상황에 따라 동적 최적화 파라미터를 구현하여 전략이 다른 시장 단계에 더 잘 적응 할 수 있도록합니다.

이러한 최적화 방향의 핵심은 전략의 안정성과 적응성을 강화하면서도 핵심적인 장점을 유지하는 것입니다.

요약하다

다중 시간 프레임 트렌드 추적과 슈퍼 트렌드 동력 최적화 전략은 기술적 분석의 기본 원칙과 실용적인 위험 관리를 결합한 완전한 거래 시스템입니다. 1시간 시간 프레임의 트렌드 확인과 15분 시간 프레임의 정확한 입문 신호를 통합함으로써이 전략은 거래자에게 큰 그림을 고려하면서도 세부 사항을 고려하는 방법론을 제공합니다.

이 방식은 매 거래마다 수익을 보장하지는 않지만, 주요 추세에 부응하는 디자인 개념, 입시점 최적화, 고정된 리스크 수익률 및 명확한 중지 손실 전략은 성숙한 거래 시스템이 가져야 할 핵심 요소를 반영합니다. 앞서 언급한 최적화 방향을 구현함으로써이 전략은 다양한 시장 환경에서 경쟁력을 유지할 수 있도록 안정성과 적응력을 더욱 향상시킬 잠재력을 가지고 있습니다.

가장 중요한 것은, 이 전략의 핵심 아이디어는 성공적인 거래의 기본 원칙을 반영합니다. 트렌드 확인, 정확한 입점, 위험 관리 및 징계적 실행. 이 원칙은 이 전략뿐만 아니라 거의 모든 성공적인 거래 방법에 적용됩니다.

전략 소스 코드
/*backtest
start: 2025-01-18 19:45:00
end: 2025-03-12 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"TRUMP_USDT"}]
*/

//@version=6
strategy("1H EMA 200 + 15M Supertrend Strategy ", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
atrPeriod = input.int(10, "ATR Length", minval=1)
factor = input.float(3.0, "Factor", minval=0.01, step=0.01)

// === 1-Hour EMA (Trend Confirmation) ===
ema200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
isAboveEMA200 = request.security(syminfo.tickerid, "60", close > ema200_1h, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)
isBelowEMA200 = request.security(syminfo.tickerid, "60", close < ema200_1h, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)

// === 15-Minute Supertrend (Entry Signal) ===
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
isUptrend = direction < 0
isDowntrend = direction > 0

// === Variables to Store SL and TP ===
var float stopLossPrice = na
var float takeProfitPrice = na

// === Buy Signal ===
buySignal = isAboveEMA200 and isUptrend
if (buySignal and not buySignal[1]) // Ensure signal is only shown once
    if (strategy.position_size != 0) // Close previous trade if any
        strategy.close_all()
    stopLossPrice := supertrend // Set SL to Supertrend value at entry
    takeProfitPrice := close + 2 * (close - stopLossPrice) // TP = 2x SL distance
    strategy.entry("Buy", strategy.long)

// === Sell Signal ===
sellSignal = isBelowEMA200 and isDowntrend
if (sellSignal and not sellSignal[1]) // Ensure signal is only shown once
    if (strategy.position_size != 0) // Close previous trade if any
        strategy.close_all()
    stopLossPrice := supertrend // Set SL to Supertrend value at entry
    takeProfitPrice := close - 2 * (stopLossPrice - close) // TP = 2x SL distance
    strategy.entry("Sell", strategy.short)

// === Exit Logic ===
if (strategy.position_size > 0) // For Buy Trades
    strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLossPrice, limit=takeProfitPrice)

if (strategy.position_size < 0) // For Sell Trades
    strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLossPrice, limit=takeProfitPrice)

// === Plotting ===
plot(ema200_1h, title="1H EMA 200", color=color.blue, linewidth=2)
plot(supertrend, title="Supertrend", color=color.red, linewidth=2)
plotshape(series=buySignal and not buySignal[1], title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal and not sellSignal[1], title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")