
다중 시간 프레임 트렌드 필터 운동량 돌파 거래 전략은 다중 시간 프레임 분석과 운동량 돌파 원칙을 결합한 정량 거래 시스템이다. 이 전략은 3 분 차트에 돌파 기회를 찾고 1 시간 차트를 사용하여 트렌드 확인을 수행하여 거래 성공률을 높인다. 전략은 지능형 포지션 관리 방법을 채택하고, 초기 포지션 2 계약, ATR 기반의 수익 목표에 도달 한 후 포지션 1 계약을 줄이고, 남은 포지션은 손실 또는 오버타임 메커니즘을 추적하여 관리한다. 이 방법은 수익의 일부를 적시에 고정시킬 수 있지만, 시장의 변동성을 최대한 활용하여 수익이 달린다.
이 전략의 핵심 원칙은 “상승을 위해”와 “동력 돌파”의 두 가지 거래 아이디어에 기반하고 있다. 구체적으로 구현 논리는 다음과 같다:
다중 시간 프레임 트렌드 필터:
동력 뚫고 진출:
지능형 창고 관리:
다중 시간 프레임 협동이 전략은 1시간과 3분 차트의 신호를 결합하여 낮은 품질의 거래를 효과적으로 필터링하여 큰 트렌드 방향으로만 진입 기회를 찾으며 승률을 크게 높였습니다.
지능형 창고 관리: 분기 평정 포지션 전략은 초기 목표값에 도달했을 때 일부 수익을 잠금 할 수 있으며, 남은 포지션이 스톱 손실을 추적하여 추세를 충분히 잡을 수 있습니다. “이익이 달릴 수 있도록”의 거래 철학을 구현합니다.
자율적 목표 설정ATR 지표를 사용하여 수익 목표를 적응적으로 설정하여 전략이 시장의 변동성에 따라 자동으로 조정할 수 있도록 하며, 높은 변동성 환경과 낮은 변동성 환경 모두에서 효과적으로 작동 할 수 있습니다.
방어 준비: 단편 거래의 최대 위험을 효과적으로 통제하고, 장기적 손실의 가능성을 피하기 위해 스톱 손실과 오버타임 메커니즘의 이중 보장을 추적합니다.
높은 주파수 정확도3분 차트를 이용해서 거래하는 것은 단기 시장의 움직임을 포착하여 보다 정확한 입출력을 가능하게 하며, 거래 빈도가 적당하며, 과도한 거래를 방지한다.
가짜 침입 위험: 시장에 가짜 돌파구가 발생할 수 있으며, 입문 후 즉시 철수할 수 있다. 해결책은 거래량 확인이나 동력 분산 확인과 같은 확인 지표를 추가하는 것이다.
트렌드 전환점 위험: 주요 트렌드가 곧 변할 때, 역사적인 트렌드 지표를 사용하는 것은 역전 거래로 이어질 수 있다. 더 민감한 트렌드 전환 지표, 예를 들어 쌍 EMA 시스템 또는 가격 구조 분석을 추가하는 것이 좋습니다.
역사적인 추세에 지나치게 의존하는 것:EMA(200) 및 MACD 지표는 후진 지표이며, 빠르게 변화하는 시장에서 충분히 민감하지 않을 수 있습니다. 일부 선도 지표를 보조적으로 추가하는 것을 고려할 수 있습니다.
매개변수 민감도: 전략 성능은 변수 설정 (如突破回顧期, ATR 곱하기, 트래킹 스톱포인트) 에 매우 민감할 수 있다.
시장 특성의 위험: 이 전략은 트렌드가 뚜렷한 시장에서 가장 잘 작동하지만, 수평 변동 시장에서는 종종 가짜 신호를 유발할 수 있습니다. 시장 상태 필터를 추가하여 트렌드 시장에서만 전략을 활성화하는 것을 고려할 수 있습니다.
시장 상태 필터를 추가합니다.: 시장 상태 ((트렌드/스컬러) 를 자동으로 식별하고, 다른 시장 상태에 따라 전략 파라미터를 조정하거나 거래를 중지합니다. 이것은 ADX 지표 또는 변동률 분석을 통해 수행 할 수 있으며, 흔들리는 시장에서 잘못된 신호를 효과적으로 줄일 수 있습니다.
입학 시점을 최적화: 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다. 돌파가 확인된 후 다시 호출을 찾아서 진입점으로 이용하는 것을 고려한다.
동적 위치 관리: 시장의 변동성과 역사적인 승률 동력에 따라 포지션 크기를 조정하고, 높은 확신의 신호가 나타날 때 포지션을 증가시키고, 반대로 감소시킨다. 이것은 자금 활용 효율성과 위험 조정 후의 수익을 향상시킬 수 있다.
자기 적응 변수 시스템: 시장 조건에 따라 전략이 자동으로 브레이크 길이를 조정할 수 있도록 자율적 변수 조정 메커니즘을 개발하십시오. ATR 곱하기 및 추적 중지 거리는 지난 N 일 변동에 기반한 동적 변수 조정으로 수행 할 수 있습니다.
거래 시간 필터를 추가합니다.: 다양한 거래 시기의 전략 성과를 분석하고, 비효율적이거나 위험성이 높은 시기를 피합니다. 중요한 데이터 발표 시점이나 유동성이 부족한 시점입니다. 이것은 시간 필터를 통해 수행하여 전체 전략의 안정성을 높일 수 있습니다.
다중 시간 프레임 트렌드 필터 변동량 돌파 거래 전략은 다중 시간 프레임 분석을 통해 거래 신호 품질을 향상시키고, 지능형 포지션 관리를 통해 “이익을 확보”하는 거래 목표를 달성하는 구조화된 정량 거래 시스템입니다. 이 전략은 명백한 추세 특성을 가진 시장 환경에 특히 적합하며, 중·단기 가격 변동을 효과적으로 포착 할 수 있습니다.
이 전략은 추천의 최적화 방향, 특히 시장 상태 필터링 및 동적 파라미터 조정, 다양한 시장 환경에서 적응력과 안정성을 더욱 향상시킬 수 있습니다. 실판 적용 전에, 충분한 역사 회귀 및 시뮬레이션 거래가 권장되며 특정 거래 품종 특성에 따라 타겟 조정됩니다.
/*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)")