더블 이동 평균 교차 모멘텀 추적 정량적 전략

MA SMA EMA SMMA RMA WMA VWMA
생성 날짜: 2024-11-27 15:06:57 마지막으로 수정됨: 2024-11-27 15:06:57
복사: 1 클릭수: 478
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 이동 평균 교차 모멘텀 추적 정량적 전략

개요

이것은 쌍평선 교차 신호에 기반한 양적 거래 전략이다. 전략은 두 개의 이동 평균을 사용한다. 하나는 주 신호 라인이고, 다른 하나는 평평한 신호 라인이다. 가격과 평평한 신호 라인의 교차 상황을 모니터링하여 거래 신호를 생성하여 시장 추세를 파악하고 동력을 추적한다. 전략의 핵심 장점은 간단하고 효과적인 신호 생성 메커니즘과 유연한 파라미터 구성 옵션에 있다.

전략 원칙

전략은 두 단계의 이동 평균 계산을 사용한다. 먼저 기본 이동 평균을 계산한다 (기본 주기는 9), 그 다음 이 평균에 대한 두 번째 평면 처리를 한다 (기본 주기는 5). 전략은 간단한 이동 평균 (SMA), 지수 이동 평균 (EMA), 평면 이동 평균 (SMMA), 가중된 이동 평균 (WMA) 및 성량 가중된 이동 평균 (VWMA) 을 포함하여 여러 가지 평균 계산 방법을 제공합니다. 상반된 가격대가 평면 이동 신호선을 상향으로 넘으면 다중 신호를 생성하고, 가격대가 평면 신호선을 상향으로 넘으면 하위 신호를 생성합니다.

전략적 이점

  1. 신호 생성 메커니즘은 명확하고 간단하며, 이해하기 쉽고 실행이 가능합니다.
  2. 2차 평준화 처리로 가짜 신호 발생을 효과적으로 감소시킵니다.
  3. 다양한 평균선 계산 방법을 제공하여 시장 특성에 따라 유연하게 선택할 수 있습니다.
  4. 매개 변수 구성이 유연하여 시장의 다른 주기에 따라 최적화 할 수 있습니다.
  5. 코드 구조가 명확하고, 유지보수 및 확장하기 쉽습니다.
  6. 좋은 트렌드 추적 능력

전략적 위험

  1. 변동성이 큰 시장에서는 빈번한 거래 신호가 생성되어 거래 비용이 증가할 수 있습니다.
  2. “이런 일이 일어나기 전에, 우리는 이 모든 것을 잊고 있습니다.
  3. 급격한 역전 시에는 더 큰 회전이 발생할 수 있습니다.
  4. 단일 기술 지표 전략, 시장 환경에 대한 판단의 부족
  5. 매개 변수를 지나치게 최적화하면 과다 적합성의 위험이 발생할 수 있습니다.

전략 최적화 방향

  1. 시장 상황 판단 메커니즘을 도입하여 다른 시장 상태에서 다른 파라미터 구성을 사용합니다.
  2. 손해 방지 장치가 추가되어 위험을 통제합니다.
  3. 거래량 필터를 추가하여 유동성이 낮은 환경에서 거래하는 것을 피하십시오.
  4. 보조 확인 신호로 다른 기술 지표를 도입하십시오.
  5. 시장 변화에 따라 동적으로 변수를 조정하는 적응 변수 메커니즘을 개발하십시오.
  6. 위치 관리 모듈을 추가하여 더 유연한 포지션 제어

요약하다

이것은 고전적인 트렌드 추적 전략의 개선된 버전이며, 두 층의 이동 평균의 설계로 전략의 단순성을 유지하면서 안정성을 향상시킵니다. 전략은 좋은 확장성과 유연성을 가지고 있으며, 매개 변수 최적화 및 기능 확장으로 다양한 시장 환경에 적응할 수 있습니다. 그러나 사용자는 거래 비용을 제어하고 위험을 관리하는 데 주의를 기울여야하며, 실제 거래 전에 충분한 재검토가 권장됩니다.

전략 소스 코드
/*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)