동적 포지션 이중 이동 평균 크로스오버 전략 (Dynamic Position Dual Moving Average Crossover Strategy) 은 거래를 실행하기 위해 서로 다른 기간을 가진 두 개의 단순 이동 평균 (SMA) 의 크로스오버 신호를 활용하는 양적 거래 접근법이다. 이 전략은 시장 트렌드를 결정하기 위해 단기 및 장기 이동 평균의 크로스오버를 활용하고 크로스오버 신호 및 가격과 장기 평균 사이의 관계에 따라 위치 방향을 동적으로 조정합니다. 이 전략은 일일 시간 프레임에서 작동하며 조정 가능한 이동 평균 매개 변수를 통해 민감성과 반응 속도에 유연성을 제공합니다.
동적 위치 이중 이동 평균 크로스오버 전략 (Dynamic Position Dual Moving Average Crossover Strategy) 은 MA 크로스오버 신호를 활용하고 동적으로 위치를 조정함으로써 시장 트렌드를 포착하는 고전적이고 실용적인 양적 거래 방법이다. 이 전략은 이해하기 쉽고 완전 자동화 가능하며 유연성을 갖춘 좋은 트렌드 추적 능력을 보여준다. 그러나, 불안한 시장과 뒤떨어진 신호에서 낮은 성능과 같은 잠재적 위험도 직면한다. 추가적인 기술 지표를 통합하고 매개 변수 선택을 최적화하고 스톱-로스 메커니즘을 구현함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있다. 이 전략을 사용하는 거래자는 장기적인 위험, 안정적인 거래 결과를 달성하기 위해 특정 거래 도구와 시장 환경에 따라 매개 변수를 조정하고 관리해야 한다.
/*backtest start: 2024-06-29 00:00:00 end: 2024-07-29 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10) // Parâmetros das Médias Móveis shortlen = input.int(9, "Short MA Length", minval=1) longlen = input.int(21, "Long MA Length", minval=1) // Cálculo das Médias Móveis short = ta.sma(close, shortlen) long = ta.sma(close, longlen) // Plotagem das Médias Móveis plot(short, color=color.orange, title="Short MA") plot(long, color=color.green, title="Long MA") // Sinal de Compra baseado no cruzamento das médias móveis buySignal = ta.crossover(short, long) // Sinal de Venda (Short) baseado no cruzamento das médias móveis sellSignal = ta.crossunder(short, long) // Plotagem dos Sinais de Compra e Venda plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal") // Condições para alertas alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal") alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal") // Lógica da Estratégia de Backtest if (buySignal) // Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa if (strategy.position_size < 0) strategy.close("Short", comment="Closing Short Position before Long Entry") strategy.entry("Long", strategy.long) // Alerta de compra alert("MA Cross Buy Signal", alert.freq_once_per_bar_close) if (strategy.position_size > 0) // Se o preço abrir abaixo da média longa if (open < long) strategy.close("Long", comment="Price Opened Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close) // Se a média móvel curta cruzar abaixo da média móvel longa else if (sellSignal) strategy.close("Long", comment="Short MA Crossed Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close) if (strategy.position_size < 0) // Se o preço abrir acima da média longa if (open > long) strategy.close("Short", comment="Price Opened Above Long MA") strategy.entry("Long", strategy.long, comment="Switched to Long") // Alerta de compra alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)