이중 이동 평균 후퇴 브레이크아웃 전략 (Dual Moving Average Lagging Breakout Strategy) 은 일반적으로 사용되는 기술 분석 거래 전략이다. 이 전략은 시장 트렌드의 전환점을 파악하고 저위험, 고수익 거래를 달성하는 것을 목표로 다른 기간과 평균 진실 범위 (ATR) 인 두 가지 간단한 이동 평균 (SMA) 을 결합합니다. 이 전략의 핵심 아이디어는 이동 평균과 시장 변동성의 후퇴 성격을 활용하여 가격이 이동 평균을 통과하고 변동성이 제어 가능한 범위 내에서있을 때 거래 신호를 생성하는 것입니다.
이 전략의 주요 원칙은 다음과 같습니다.
위의 원칙에서 볼 수 있듯이 이 전략은 유동평균 시스템의 추세 판단과 ATR 지표의 변동성 측정을 결합하여 추세에 초점을 맞추면서 유출 위험을 제어하여 추세를 따르는 전략입니다.
이중 이동평균 후속 브레이크오웃 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략은 몇 가지 장점을 가지고 있지만, 여전히 다음과 같은 위험을 가지고 있습니다.
위 위험에 대응하기 위해 전략은 다음과 같은 측면에서 최적화되고 개선될 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
위의 최적화는 전략의 적응력, 견고성 및 수익성을 향상시킬 수 있지만 과도한 최적화는 곡선 적합으로 이어질 수 있으며, 결과적으로 샘플 외부의 성능이 떨어질 수 있습니다. 따라서 충분한 백테스팅과 검증은 샘플 내와 샘플 외부에서 수행되어야합니다.
이중 이동 평균 후퇴 브레이크아웃 전략 (Dual Moving Average Lagging Breakout Strategy) 은 이동 평균 시스템을 통해 트렌드 방향을 결정하고 ATR 지표를 사용하여 위험을 제어하는 고전적인 트렌드 추후 전략이다. 위험 관리를 하면서 트렌드 움직임을 포착한다. 특정 후퇴와 빈번한 거래 문제가 있음에도 불구하고, 전략의 성능은 스톱 로스 및 영업 수준을 최적화하는 방법, 신호 필터링, 적응적 매개 변수 최적화 및 포지션 관리 등의 방법을 통해 더욱 향상될 수 있어 실용적인 양적 거래 전략이다.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="2 Moving Averages", shorttitle="2MA", overlay=true) // Moving Averages len = input(14, minval=1, title="Length MA1") src = input(close, title="Source MA1") ma1 = sma(src, len) len2 = input(50, minval=1, title="Length MA2") src2 = input(close, title="Source MA2") ma2 = sma(src2, len2) // Plotting Moving Averages plot(ma1, color=#0b6ce5, title="MA1") plot(ma2, color=#00ff80, linewidth=2, title="MA2") // ATR Bands atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") upperBand = high + atr(atrLength) * atrMultiplier lowerBand = low - atr(atrLength) * atrMultiplier u =plot(upperBand, color=color.rgb(217, 220, 223, 84), title="ATR Upper Band") l = plot(lowerBand, color=color.rgb(217, 220, 223, 84), title="ATR Lower Band") fill(u, l, color=#471eb821, title="ATR Background") // Conditions for plotting arrows upArrowCondition = ma1 > ma2 and crossover(close, ma1) downArrowCondition = ma1 < ma2 and crossunder(close, ma1) // Plotting arrows plotshape(upArrowCondition, style=shape.arrowup, color=color.rgb(66, 45, 255), size=size.normal, location=location.belowbar, title="Up Arrow") plotshape(downArrowCondition, style=shape.arrowdown, color=color.red, size=size.normal, location=location.abovebar, title="Down Arrow") // Checkbox for trade execution showTrades = input(true, title="Hiển thị giao dịch") // Buy Condition if (upArrowCondition and showTrades) strategy.entry("Buy", strategy.long) // Sell Condition if (downArrowCondition and showTrades) strategy.entry("Sell", strategy.short) // Stop Loss and Take Profit stopLossBuy = low - atr(14) * atrMultiplier takeProfitBuy = close + (close - stopLossBuy) * 2 stopLossSell = high + atr(14) * atrMultiplier takeProfitSell = close - (stopLossSell - close) * 2 strategy.exit("Exit Buy", "Buy", stop=stopLossBuy, limit=takeProfitBuy) strategy.exit("Exit Sell", "Sell", stop=stopLossSell, limit=takeProfitSell)