일내 이동 평균 크로스오버 거래 전략

저자:차오장날짜: 2024-01-19 15:32:58
태그:

img

전반적인 설명

전략 논리

이 전략의 핵심 논리는 짧은 기간 MA와 긴 기간 MA 사이의 교차 관계에 있다. 짧은 기간 MA는 최근 가격 변화를 더 빠르게 반영하고, 더 긴 기간 MA는 장기 가격 추세를 묘사하기 위해 더 나은 소음 감축 기능을 가지고 있다. 짧은 기간 MA가 긴 기간 MA를 넘을 때, 그것은 가격이 최근에 상승 추세를 시작했으며 단기적 반전을 신호할 수 있음을 나타냅니다. 따라서 후속 상승을 포착하기 위해 구매 신호를 유발할 수 있습니다. 반대로, 짧은 기간 MA가 더 긴 기간 MA를 넘을 때, 그것은 최근 하향 가격 동력과 단기적 반전을 위한 잠재력을 신호하며, 따라서 판매 신호를 생성합니다.

구체적으로, 이 전략은 두 개의 MA 라인을 계산하기 위해 폐쇄 가격에 ta.sma 함수를 적용합니다: maShort (9 기간) 및 maLong (21 기간). 그 다음 짧은 MA가 더 긴 MA보다 높거나 낮을 지를 결정하기 위해 ta.crossover 및 ta.crossunder 함수를 사용하여 구매 및 판매 신호를 생산합니다. 수익을 잠금하고 위험을 관리하기 위해 끝에서 손해를 멈추고 수익을 얻는 논리가 구현됩니다.

장점

  • 신호 품질을 향상시키기 위해 최근 및 장기 가격 변화를 고려합니다.
  • 직관적으로 가격 방향과 동력을 나타냅니다.
  • 이해하기 쉽고 실행하기 쉬우며, 고주파 단기 거래에 적합합니다.
  • 각종 거래기준에 맞는 유연한 MA 매개 변수

단일 MA 시스템과 비교하면 이 전략은 단기 및 장기 MAs의 가치를 합성하여 잘못된 신호가 적고 수익성이 높습니다. 한편, MA 크로스오버 신호는 운영자가 명확하고 간단하게 해석하고 효율적으로 행동 할 수 있습니다.

위험성

  • 마이너스 마이너스 크로스 (MA) 를 엄격히 따르는 것은 과도한 거래 빈도를 초래할 수 있습니다.

시장 조건 및 주식 특성을 판단하지 않고 기계적으로 MA 크로스오버 신호를 추격하면 과잉 거래로 인해 수익성이 낮거나 거래 비용이 높을 수 있습니다. 또한 MA 신호 자체는 실제 트렌드 전환점에 뒤쳐질 수 있습니다.

더 나은 기회

  • 짧은 기간과 긴 MA 기간의 조합을 최적화합니다.
  • 개별 주식 특성을 고려하고 그에 따라 전략 매개 변수를 조정
  • 실제 반전 신호를 감지하기 위해 가격 부피 지표를 통합합니다.
  • 손실을 합리적으로 제한하기 위해 스톱 로스 방법을 사용

예를 들어, MACD, KDJ와 같은 다른 기술적 지표는 MA 크로스오버 신호를 검증하고 실패를 방지하는 데 사용될 수 있습니다. 안정성을 높이기 위해 다른 거래 도구에 기반하여 MA 매개 변수도 조정할 수 있습니다. 한편, 개별 거래에서 과대 손실을 피하기 위해 스톱 로스 레벨은 적절히 설정해야합니다. 이러한 모든 최적화 기술을 종합적으로 적용하면 간단한 MA 크로스오버 개념을 기반으로 실제 전략 성능을 크게 향상시킬 수 있습니다.

결론


/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Intraday MA Crossover Strategy", overlay=true)

// Define MA lengths
maLengthShort = input.int(9, title="Short MA Length", minval=1)
maLengthLong = input.int(21, title="Long MA Length", minval=1)

// Calculate MAs
maShort = ta.sma(close, maLengthShort)
maLong = ta.sma(close, maLengthLong)

// Plot MAs on the chart
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Generate Buy Signal (Golden Cross: Short MA crosses above Long MA)
buySignal = ta.crossover(maShort, maLong)
strategy.entry("Buy", strategy.long, when=buySignal)

// Generate Sell Signal (Death Cross: Short MA crosses below Long MA)
sellSignal = ta.crossunder(maShort, maLong)
strategy.entry("Sell", strategy.short, when=sellSignal)

// Set stop loss and take profit levels
stopLossPercent = input.float(1, title="Stop Loss %", minval=0.1, maxval=5)
takeProfitPercent = input.float(1, title="Take Profit %", minval=0.1, maxval=5)

strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)


더 많은