다중 시간대 추세 필터링 모멘텀 돌파 거래 전략

ATR EMA MACD HTF SCALE-OUT Trailing Stop BREAKOUT momentum
생성 날짜: 2025-07-21 13:19:05 마지막으로 수정됨: 2025-07-21 13:19:05
복사: 0 클릭수: 218
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 시간대 추세 필터링 모멘텀 돌파 거래 전략 다중 시간대 추세 필터링 모멘텀 돌파 거래 전략

개요

다중 시간 프레임 트렌드 필터 운동량 돌파 거래 전략은 다중 시간 프레임 분석과 운동량 돌파 원칙을 결합한 정량 거래 시스템이다. 이 전략은 3 분 차트에 돌파 기회를 찾고 1 시간 차트를 사용하여 트렌드 확인을 수행하여 거래 성공률을 높인다. 전략은 지능형 포지션 관리 방법을 채택하고, 초기 포지션 2 계약, ATR 기반의 수익 목표에 도달 한 후 포지션 1 계약을 줄이고, 남은 포지션은 손실 또는 오버타임 메커니즘을 추적하여 관리한다. 이 방법은 수익의 일부를 적시에 고정시킬 수 있지만, 시장의 변동성을 최대한 활용하여 수익이 달린다.

전략 원칙

이 전략의 핵심 원칙은 “상승을 위해”와 “동력 돌파”의 두 가지 거래 아이디어에 기반하고 있다. 구체적으로 구현 논리는 다음과 같다:

  1. 다중 시간 프레임 트렌드 필터

    • 1시간 차트의 EMA ((200) 와 MACD 지표를 사용하여 더 큰 시간 프레임의 트렌드 방향을 결정합니다.
    • 1시간의 상승 추세 (가격> EMA200 및 MACD 기둥 도표>0) 에서만 추가로 고려하십시오.
    • 1시간 트렌드가 하향을 향할 때만 공백을 고려하십시오 (가격이
  2. 동력 뚫고 진출

    • 3분 차트에서, 가격이 지난 20개 K 선의 최고값을 넘어서 1시간 동안 상승하면 더 많이 합니다.
    • 3분 차트에서, 가격이 지난 20개 K선 최저값을 넘어서 1시간 동안 하향을 향할 때 마이너스
    • 매 입구마다 2개의 계약이 생성되는 포지션
  3. 지능형 창고 관리

    • 분량 평준화 메커니즘: 가격 움직임이 ATR의 1.5배에 해당하는 목표에 도달했을 때 포지션의 절반을 평준화합니다.
    • 잔여 포지션 관리: 트래킹 스톱로스 (~40점) 를 사용하여 계속 보유하여 수익을 니다.
    • 오버타임 메커니즘: 30분 3분 K선 (~1.5시간) 이상의 포지션 보유 기간이 있는 경우, 장기간 포지션을 정리하는 것을 피하기 위해 자동으로 포지션을 청산한다

전략적 이점

  1. 다중 시간 프레임 협동이 전략은 1시간과 3분 차트의 신호를 결합하여 낮은 품질의 거래를 효과적으로 필터링하여 큰 트렌드 방향으로만 진입 기회를 찾으며 승률을 크게 높였습니다.

  2. 지능형 창고 관리: 분기 평정 포지션 전략은 초기 목표값에 도달했을 때 일부 수익을 잠금 할 수 있으며, 남은 포지션이 스톱 손실을 추적하여 추세를 충분히 잡을 수 있습니다. “이익이 달릴 수 있도록”의 거래 철학을 구현합니다.

  3. 자율적 목표 설정ATR 지표를 사용하여 수익 목표를 적응적으로 설정하여 전략이 시장의 변동성에 따라 자동으로 조정할 수 있도록 하며, 높은 변동성 환경과 낮은 변동성 환경 모두에서 효과적으로 작동 할 수 있습니다.

  4. 방어 준비: 단편 거래의 최대 위험을 효과적으로 통제하고, 장기적 손실의 가능성을 피하기 위해 스톱 손실과 오버타임 메커니즘의 이중 보장을 추적합니다.

  5. 높은 주파수 정확도3분 차트를 이용해서 거래하는 것은 단기 시장의 움직임을 포착하여 보다 정확한 입출력을 가능하게 하며, 거래 빈도가 적당하며, 과도한 거래를 방지한다.

전략적 위험

  1. 가짜 침입 위험: 시장에 가짜 돌파구가 발생할 수 있으며, 입문 후 즉시 철수할 수 있다. 해결책은 거래량 확인이나 동력 분산 확인과 같은 확인 지표를 추가하는 것이다.

  2. 트렌드 전환점 위험: 주요 트렌드가 곧 변할 때, 역사적인 트렌드 지표를 사용하는 것은 역전 거래로 이어질 수 있다. 더 민감한 트렌드 전환 지표, 예를 들어 쌍 EMA 시스템 또는 가격 구조 분석을 추가하는 것이 좋습니다.

  3. 역사적인 추세에 지나치게 의존하는 것:EMA(200) 및 MACD 지표는 후진 지표이며, 빠르게 변화하는 시장에서 충분히 민감하지 않을 수 있습니다. 일부 선도 지표를 보조적으로 추가하는 것을 고려할 수 있습니다.

  4. 매개변수 민감도: 전략 성능은 변수 설정 (如突破回顧期, ATR 곱하기, 트래킹 스톱포인트) 에 매우 민감할 수 있다.

  5. 시장 특성의 위험: 이 전략은 트렌드가 뚜렷한 시장에서 가장 잘 작동하지만, 수평 변동 시장에서는 종종 가짜 신호를 유발할 수 있습니다. 시장 상태 필터를 추가하여 트렌드 시장에서만 전략을 활성화하는 것을 고려할 수 있습니다.

전략 최적화 방향

  1. 시장 상태 필터를 추가합니다.: 시장 상태 ((트렌드/스컬러) 를 자동으로 식별하고, 다른 시장 상태에 따라 전략 파라미터를 조정하거나 거래를 중지합니다. 이것은 ADX 지표 또는 변동률 분석을 통해 수행 할 수 있으며, 흔들리는 시장에서 잘못된 신호를 효과적으로 줄일 수 있습니다.

  2. 입학 시점을 최적화: 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다.

  3. 동적 위치 관리: 시장의 변동성과 역사적인 승률 동력에 따라 포지션 크기를 조정하고, 높은 확신의 신호가 나타날 때 포지션을 증가시키고, 반대로 감소시킨다. 이것은 자금 활용 효율성과 위험 조정 후의 수익을 향상시킬 수 있다.

  4. 자기 적응 변수 시스템: 시장 조건에 따라 전략이 자동으로 브레이크 길이를 조정할 수 있도록 자율적 변수 조정 메커니즘을 개발하십시오. ATR 곱하기 및 추적 중지 거리는 지난 N 일 변동에 기반한 동적 변수 조정으로 수행 할 수 있습니다.

  5. 거래 시간 필터를 추가합니다.: 다양한 거래 시기의 전략 성과를 분석하고, 비효율적이거나 위험성이 높은 시기를 피합니다. 중요한 데이터 발표 시점이나 유동성이 부족한 시점입니다. 이것은 시간 필터를 통해 수행하여 전체 전략의 안정성을 높일 수 있습니다.

요약하다

다중 시간 프레임 트렌드 필터 변동량 돌파 거래 전략은 다중 시간 프레임 분석을 통해 거래 신호 품질을 향상시키고, 지능형 포지션 관리를 통해 “이익을 확보”하는 거래 목표를 달성하는 구조화된 정량 거래 시스템입니다. 이 전략은 명백한 추세 특성을 가진 시장 환경에 특히 적합하며, 중·단기 가격 변동을 효과적으로 포착 할 수 있습니다.

이 전략은 추천의 최적화 방향, 특히 시장 상태 필터링 및 동적 파라미터 조정, 다양한 시장 환경에서 적응력과 안정성을 더욱 향상시킬 수 있습니다. 실판 적용 전에, 충분한 역사 회귀 및 시뮬레이션 거래가 권장되며 특정 거래 품종 특성에 따라 타겟 조정됩니다.

전략 소스 코드
/*backtest
start: 2024-07-21 00:00:00
end: 2025-07-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/

// MNQ 3m Momentum Breakout Strategy with HTF Trend Filter
//@version=5
strategy("MNQ 3m Momentum Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
trailPoints = input.int(40, "Trailing Stop (Ticks)")
timeoutBars = input.int(30, "Timeout Bars (3m)")
breakoutLength = input.int(20, "Breakout Lookback")
atrLength = input.int(14, "ATR Period")
mult = input.float(1.5, "ATR Multiplier")

// === MULTI-TIMEFRAME TREND FILTER ===
ema200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))
[macdLine_1h, signalLine_1h, macdHist_1h] = request.security(syminfo.tickerid, "60", ta.macd(close, 12, 26, 9))

trendUp = close > ema200_1h and macdHist_1h > 0
trendDown = close < ema200_1h and macdHist_1h < 0

// === BREAKOUT CONDITIONS (3m) ===
highBreakout = close > ta.highest(close[1], breakoutLength)
lowBreakdown = close < ta.lowest(close[1], breakoutLength)
atr = ta.atr(atrLength)

longEntry = trendUp and highBreakout
shortEntry = trendDown and lowBreakdown

// === ENTRY ===
if (longEntry and strategy.position_size == 0)
    strategy.entry("Long1", strategy.long, qty=2)

if (shortEntry and strategy.position_size == 0)
    strategy.entry("Short1", strategy.short, qty=2)

// === SCALE OUT LOGIC ===
profitTrigger = mult * atr
longScaleOut = strategy.position_size == 2 and close > strategy.position_avg_price + profitTrigger
shortScaleOut = strategy.position_size == -2 and close < strategy.position_avg_price - profitTrigger

if longScaleOut
    strategy.close("Long1", qty=1, comment="Scale Out")
if shortScaleOut
    strategy.close("Short1", qty=1, comment="Scale Out")

// === EXIT STRATEGY ===
strategy.exit("Exit Long1", from_entry="Long1", trail_points=trailPoints, trail_offset=10)
strategy.exit("Exit Short1", from_entry="Short1", trail_points=trailPoints, trail_offset=10)

// === TIMEOUT EXIT ===
longOpen = strategy.opentrades > 0 and strategy.opentrades.entry_id(0) == "Long1" and bar_index - strategy.opentrades.entry_bar_index(0) >= timeoutBars
shortOpen = strategy.opentrades > 0 and strategy.opentrades.entry_id(0) == "Short1" and bar_index - strategy.opentrades.entry_bar_index(0) >= timeoutBars
if (longOpen)
    strategy.close("Long1", comment="Timeout")
if (shortOpen)
    strategy.close("Short1", comment="Timeout")

// === VISUALS ===
plot(ema200_1h, color=color.orange, title="EMA 200 (1H)")