이중 SMA 동력 전략

저자:차오장, 날짜: 2024-01-17 15:05:08
태그:

img

전반적인 설명

듀얼 SMA 모멘텀 전략 (Dual SMA Momentum strategy) 은 두 가지 간단한 이동 평균 (SMA) 지표에 기초하여 구매 및 판매 신호를 생성하는 기술적 분석 기반의 거래 전략이다. 주식에서 단기에서 중기 가격 모멘텀을 파악하는 것을 목표로합니다.

전략 논리

이 전략은 짧은 시간 창과 긴 시간 창을 가진 두 개의 SMA 지표를 사용합니다. 빠른 SMA (9 기간) 및 느린 SMA (45 기간) 입니다.

이 전략은 주식 종료 가격이 빠른 및 느린 SMA 라인 둘 다 이상으로 넘어가면 상승 추세의 시작을 나타내는 긴/구매 신호를 생성합니다. 이 전략은 여기서 긴 포지션을 입력합니다.

이 전략은 가격이 두 SMA 라인 아래를 넘어가면 하락 추세의 시작을 나타내는 짧은 / 판매 신호를 생성합니다. 여기서 전략은 짧은 지위에 진입합니다.

스톱 로즈 레벨은 역동적으로 전날의 최고 (단기 거래) 와 전날의 낮은 (장기 거래) 수준으로 설정됩니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 중장기 동향을 파악하기 위해 단기 및 장기 SMA를 조합합니다.
  2. 적응적인 스톱 로스 투입은 위험을 줄이고 수익을 올릴 수 있습니다.
  3. 이해하기 쉽고 실행하기 쉽다
  4. 트렌드 조건에서 주식과 시장에서 좋은 성과

그러나 모든 기술 분석 전략과 마찬가지로, 빈번한 잘못된 신호로 범위 및 윙사 시장에서 저성능 할 수 있습니다. 추가 확인을 위해 RSI와 같은 다른 지표를 추가하는 것이 향상 될 수 있습니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 위프사 및 잘못된 신호에 취약: SMA 크로스오버에만 의존하기 때문에 전략은 측면 또는 흔들리는 시장에서 위프사 및 잘못된 신호에 직면하여 불필요한 거래 비용을 창출 할 수 있습니다. 이것은 RSI와 같은 다른 지표와 결합하여 완화 될 수 있습니다.

  2. 급격한 트렌드 반전에 취약: SMA 크로스오버 엔트리 이후 급격한 반전은 트렌드가 형성되기 전에 빠르게 스톱 로스 레벨을 달성 할 수 있습니다. 이 위험은 SMA 길이를 최적화하거나 다른 필터를 추가함으로써 감소 할 수 있습니다.

  3. 매개 변수 조정으로 인한 과잉 최적화 위험: 곡선이 역사적 데이터에 맞도록 SMA 길이 및 기타 매개 변수의 광범위한 최적화는 라이브 거래에서 낮은 성능을 초래할 수 있습니다. 긴 시간 프레임에서 강력한 백테스팅이 필수적입니다.

더 나은 기회

이 전략이 향상될 수 있는 몇 가지 방법은 다음과 같습니다.

  1. 신호의 타이밍과 정확성을 향상시키기 위해 추가 거래 확인을 위해 RSI와 같은 다른 지표를 추가합니다.

  2. 시장 변동에 더 잘 적응하기 위해 ATR 또는 사다리 출구와 같은 동적 스톱 로스 배치 방법을 통합합니다.

  3. 다른 주식들에 대한 역사적 변동성과 거래 시간 프레임에 기초한 SMA 길이를 최적화

  4. 수익을 극대화하고 마이너드 인출을 제한하기 위해 건전한 자금 관리 및 포지션 크기의 규칙을 추가합니다

결론

요약하자면, 이중 SMA 모멘텀 전략은 단기 및 중기 트렌드를 거래하는 데 간단한 접근 방식을 제공합니다. 접근 방식의 기본이지만 추가 필터, 동적 중지 및 신중한 최적화와 같은 정제 사항은 위험 조정 수익률을 향상시키는 데 도움이 될 수 있습니다. 주식 상승 추세 및 하락 추세에 선택적으로 사용되면 수익성있는 움직임을 포착 할 수 있습니다.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// Input parameters
fast_length = input(9, title="Fast SMA Length")
slow_length = input(45, title="Slow SMA Length")

// Calculate moving averages
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Buy condition
buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma)

// Sell condition
sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma)

// Calculate stop loss levels
prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on)
prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on)

// Plot signals on the chart
plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy exit conditions
long_stop_loss = sell_condition ? prev_low : na
short_stop_loss = buy_condition ? prev_high : na

strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss)
strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss)

strategy.entry("Long", strategy.long, when=buy_condition)
strategy.entry("Short", strategy.short, when=sell_condition)


더 많은