더블 SMA 모멘텀 전략


생성 날짜: 2024-01-17 15:05:08 마지막으로 수정됨: 2024-01-17 15:05:08
복사: 1 클릭수: 629
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 SMA 모멘텀 전략

개요

이중 SMA 운동 전략은 기술 분석에 기반한 거래 전략으로, 두 개의 간단한 이동 평균 (SMA) 지표에 따라 구매 및 판매 신호를 생성한다. 그것은 주식의 단기 및 중기 가격 움직임을 포착하기 위해 고안되었다.

전략 논리

이 전략은 두 개의 SMA 지표, 즉, 단기 및 장기 시간 창을 사용합니다 - 빠른 SMA (길이가 9주기) 및 느린 SMA (길이가 45주기).

주식의 종식 가격이 빠른 SMA와 느린 SMA의 평균선을 뚫을 때, 상승 추세가 시작되는 것을 나타냅니다. 이 전략은 이 때 다단/구매 신호를 생성하고 다단 포지션에 들어갑니다.

가격이 두 개의 SMA 평균선을 넘어갈 때, 하향 추세가 시작되는 것을 나타냅니다. 이 전략은 이 시점에서 공백/판매 신호를 생성하고 공백 위치에 들어갑니다.

스톱로스 레벨의 동적 설정은 전날의 최고점 ((공백 거래) 과 전날의 최저점 ((다중 거래) 이다.

우위 분석

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

  1. 단기 및 장기 SMA를 결합하여 중기 트렌드를 잡는 방법
  2. 적응형 스톱 로즈 설정은 위험을 줄이고 수익을 유지합니다.
  3. 이해하기 쉽고 실행하기 쉽습니다.
  4. 트렌드 상황에서 우수한 성적을 거둔

그러나, 모든 기술적 분석 전략과 마찬가지로, 흔들리는 상황에서 신호는 종종 오류가 있습니다. RSI와 같은 다른 지표를 추가하여 개선 할 수 있습니다.

위험 분석

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

  1. 흔들림과 잘못된 신호의 영향을 받을 수 있다. SMA 교차에만 의존하는 경우, 평형 또는 흔들림 상황에서 선택적 신호가 발생할 수 있으며, 불필요한 거래 비용을 초래한다. 이것은 RSI와 같은 다른 지표와 조합하여 완화 될 수 있다.

  2. vulnerable to sudden trend reversals: 시장에 진입한 후 급격한 반전이 스톱로드를 빠르게 돌파할 수 있다. 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)