이 전략은 이중 이동 평균 크로스오버 신호를 기반으로 하는 양적 거래 전략이다. 이 전략은 두 개의 이동 평균을 사용하며, 하나는 주요 신호 라인이고 다른 하나는 평형 신호 라인이다. 이 전략은 평형 신호 라인과 가격 크로스오버를 모니터링하여 거래 신호를 생성하여 시장 트렌드 캡처 및 추진력 추적을 가능하게 한다. 이 전략의 핵심 강점은 간단하면서도 효과적인 신호 생성 메커니즘과 유연한 매개 변수 구성 옵션에 있다.
이 전략은 두 가지 수준의 이동 평균 계산을 이용한다. 먼저 기본 이동 평균 (9의 기본 기간) 을 계산하고, 그 다음으로 2차 평형화 과정 (지름값 5의 기본 기간) 을 수행한다. 이 전략은 간단한 이동 평균 (SMA), 기하급수적인 이동 평균 (EMA), 평형 이동 평균 (SMMA), 가중된 이동 평균 (WMA), 부피 가중된 이동 평균 (VWMA) 을 포함한 다양한 이동 평균 계산 방법을 제공합니다. 닫기 가격이 평형 신호 라인 위에 넘어가면 긴 신호가 생성되며, 닫기 가격이 그 아래에 넘어가면 짧은 신호가 생성된다.
이 전략은 두층 이동 평균 디자인을 통해 단순성을 유지하면서 안정성을 향상시키는 고전 트렌드 추적 전략의 개선된 버전입니다. 이 전략은 매개 변수 최적화 및 기능 확장을 통해 다른 시장 환경에 적응 할 수있는 좋은 확장성과 유연성을 제공합니다. 그러나 사용자는 거래 비용 통제 및 리스크 관리에주의를 기울여야하며 라이브 거래 전에 철저한 백테스팅을 수행하는 것이 좋습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average 1.0 Strategy", overlay=true) // Input for Moving Average Length len = input.int(9, minval=1, title="Length") src = input(close, title="Source") offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) // Calculate the Moving Average out = ta.sma(src, len) // Plot the Moving Average plot(out, color=color.blue, title="MA", offset=offset) // Function to choose the type of moving average ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Input for Smoothing Method and Length typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing") // Calculate the Smoothing Line smoothingLine = ma(out, smoothingLength, typeMA) // Plot the Smoothing Line plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset) // Strategy Logic if (ta.crossover(close, smoothingLine)) strategy.entry("Buy", strategy.long) if (ta.crossunder(close, smoothingLine)) strategy.entry("Sell", strategy.short)