SMA 이동평균선 교차를 기반으로 한 양적 거래 전략


생성 날짜: 2024-01-12 10:51:33 마지막으로 수정됨: 2024-01-12 10:51:33
복사: 0 클릭수: 684
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

SMA 이동평균선 교차를 기반으로 한 양적 거래 전략

개요

이 전략은 다른 주기의 SMA 평균선을 계산하여 평균선의 골드 포크와 데드 포크 형태를 구현하고, 그 결과 구매 및 판매 신호를 생성하는 전형적인 트렌드 추적 전략에 속한다.

전략 원칙

  1. 5일선 (sma5), 20일선 (sma20), 200일선 (sma200) 의 세 개의 다른 기간의 SMA 평균을 계산
  2. 짧은 주기 평균선이 아래에서 긴 주기 평균선을 돌파할 때, 구매 신호가 생성됩니다.
  3. 짧은 주기가 상향에서 아래로 내려가 긴 주기의 평균선 아래로 떨어질 때, 판매 신호가 생성됩니다.
  4. 구매 및 판매 신호에 따라 거래

5일선과 200일선의 교차를 예로 들면, 5일선에서 200일선을 통과할 때, 시장이 단선 상향으로 들어간다는 것을 나타내며, 구매 신호를 생성한다. 5일선 아래로 200일선을 통과할 때, 시장이 단선 상향으로 들어간다는 것을 나타내며, 판매 신호를 생성한다. 다양한 주기평균선의 교차 형태를 포착함으로써, 시장의 흐름을 순차적으로 포착할 수 있다.

전략적 이점

  1. 동작이 간단하고 쉽게 구현할 수 있다. 단지 몇 개의 서로 다른 주기들의 SMA 평균선을 계산할 필요가 있으며, 간단한 평균선 교차 형태를 통해 시장에 진입과 출소를 판단할 수 있다.
  2. 시장의 큰 추세에 대해 상대적으로 민감하고, 추세 효과를 활용할 수 있다. 예를 들어 5일선에서 200일선을 통과할 때, 시장은 중장선 낙관 상태에 있으며, 이 때 주식을 구입하여 상승할 수 있다.
  3. 회수 및 손실 위험이 적다. 시장이 큰 조정이 발생했을 때, 평행선 교차 전략은 판매 신호를 발송하여 회수를 효과적으로 제어 할 수 있다.

위험과 대책

  1. 실수 신호가 발생하기 쉽다. 시장의 흔들림이 있을 때, 평행선이 여러 번 실수로 교차하여 불필요한 거래 주파수와 비용을 초래할 수 있다. 포지션 주기를 적절히 조정하여 일부 단선 소음을 필터링 할 수 있다.
  2. 조정 주기 선택은 매우 중요합니다. 만약 평균선 파라미터가 잘못 선택되면, 신호를 생성하는 효과는 바람직하지 않을 수 있다. 다른 품종에 따라 적절한 평균선 주기 조합을 결정해야 한다.
  3. 대폭동에 대처할 수 없다. 중대한 검은 천둥 사건에 직면하면, 평행선 교차 전략이 큰 손실을 입을 수 있다. 이 때 전략을 일시 중단하고, 수동으로 전환해야 한다.

전략 최적화 방향

  1. 다른 지표 필터를 추가한다. 평선 교차 신호가 발생하면 MACD, KDJ와 같은 다른 기술 지표를 참조하여 진동 상황에서 잘못된 신호를 발생하지 않도록 한다.

  2. 트렌드를 판단하는 지표와 결합한다. 예를 들어, 5 일선과 200 일선으로 구매 판매 지점을 구축한다. 예를 들어, ADX 지표와 결합하면 트렌드가 강하고, 트렌드가 충분할 때만 신호를 실행한다.

  3. 자기 적응 평균선을 사용한다. 시장 상황과 변동률에 따라 실시간으로 평균선 변수를 조정하여 거래 신호를 더 실용적으로 만든다.

  4. 다중 품종 포트폴리. 다양한 종류의 주식과 외환 품종에 전략을 적용하여 전략 포트폴리을 수행하면 전략 효과를 높일 수 있다.

요약하다

이 전략은 간단한 SMA 평행선 교차 형태를 통해 시장 움직임을 판단하여 전형적인 트렌드 추적 전략을 구현한다. 장점은 간단하고 쉽게 작동하여 큰 트렌드를 효과적으로 포착할 수 있다는 것이다. 단점은 잘못된 신호를 쉽게 생성하고 시장의 큰 흔들림에 대처할 수 없다는 것이다.

전략 소스 코드
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA Crossover Strategy", overlay=true)

// Define SMAs
sma5 = sma(close, 5)
sma10 = sma(close, 10)
sma20 = sma(close, 20)
sma50 = sma(close, 50)
sma130 = sma(close, 130)
sma200 = sma(close, 200)

// Plot SMAs on the chart
plot(sma5, color=color.blue, title="5 SMA")
plot(sma10, color=color.orange, title="10 SMA")
plot(sma20, color=color.red, title="20 SMA")
plot(sma50, color=color.green, title="50 SMA")
plot(sma130, color=color.purple, title="130 SMA")
plot(sma200, color=color.black, title="200 SMA")

// Generating the buy and sell signals
buySignal = crossover(sma5, sma200)
sellSignal = crossunder(sma5, sma200)

// Execute trades based on signals
if (buySignal)
    strategy.entry("Buy", strategy.long)

if (sellSignal)
    strategy.close("Sell")