다중SMA 이동평균 크로스오버 전략

저자:차오장, 날짜: 2023-11-28 15:08:37
태그:

img

전반적인 설명

이 전략은 여러 시간 프레임의 SMA 이동 평균을 계산하고 이동 평균 지표를 구성하기 위해 평균 값을 사용합니다. 가격이 이동 평균 이상으로 상승할 때 구매 신호를 생성하고 가격이 이동 평균 이하로 떨어지면 판매 신호를 생성합니다. 이것은 전형적인 이동 평균 크로스오버 전략입니다.

전략 원칙

  1. 각기 다른 기간의 5개의 SMA 이동 평균을 계산합니다 (8일, 21일, 50일, 100일, 200일)
  2. 최종 이동 평균 지표를 얻기 위해 5 이동 평균의 평균을 가져
  3. 종료 가격이 이동평균보다 높을 때 구매 신호를 생성합니다.
  4. 종료 가격이 이동 평균 이하로 떨어지면 판매 신호를 생성

여러 시간 프레임의 SMA를 평균화함으로써이 전략은 곡선을 효과적으로 부드럽게하고 잘못된 브레이크오웃을 필터링 할 수 있습니다. 단일 이동 평균에 비해 더 높은 안정성을 가지고 있습니다.

이점 분석

  1. 여러 시간 프레임 이동 평균을 사용하면 효과적으로 시장 소음을 필터하고 트렌드를 식별 할 수 있습니다.
  2. 매끄러운 곡선, 너무 많은 잘못된 신호를 생성 방지
  3. 전략 논리는 간단하고 명확하고, 이해하기 쉽고 실행하기 쉽고, 초보자 학습에 적합합니다
  4. 지표 효과를 최적화하기 위해 조정 가능한 이동 평균 기간 조합

위험 분석

  1. 이동평균 시스템은 전체적으로 뒤쳐져 있으며 시간에 따라 가격 변화에 따라가지 못합니다.
  2. 브레이크오웃 실패가 발생했을 때, 손실의 위험이 더 큰 손실의 중지 지점이 멀리 있습니다.
  3. 스톱 로스 라인은 오시일레이션 트렌드에서 자주 작동합니다.

이러한 위험은 이동 평균 기간을 적절히 단축하고 다른 확인 지표를 추가함으로써 감소할 수 있습니다.

최적화 방향

  1. 가장 좋은 매개 변수를 찾기 위해 이동 평균 기간의 조합을 최적화
  2. 브레이크아웃 신호를 확인하기 위해 거래량과 같은 지표를 추가합니다.
  3. 변동 시장에서 잘못된 신호를 피하기 위해 트렌드 지표를 포함
  4. 동적으로 최적의 매개 변수를 찾기 위해 자동 매개 변수 최적화 프로그램을 개발

요약

이 전략의 전반적인 아이디어는 분명하다. 여러 시간 프레임의 이동 평균을 통합함으로써, 트렌드를 효과적으로 식별할 수 있으며 안정적이고 실용적인 전략이다. 그러나, 우리는 또한 지연 및 잘못된 신호 위험에주의를 기울여야 한다. 파라미터 설정을 더 이상 최적화, 확인 지표 등을 추가함으로써, 우리는 이 전략을 지속적으로 개선하여 강력한 양적 거래 도구로 만들 수 있다.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("STRATEGY AVERAGE MULTI_SMA", overlay=true)


sma1 = sma(close,input(title="SMA 1", defval=8))

sma2 = sma(close,input(title="SMA 2", defval=21))

sma3 = sma(close,input(title="SMA 3", defval=50))

sma4 = sma(close,input(title="SMA 4", defval=100))

sma5 = sma(close,input(title="SMA 5", defval=200))


mediaSMA= (sma1+sma2+sma3+sma4+sma5)/5

//color mediaSMA

MediaUP = mediaSMA>mediaSMA[1]
colorUP = (MediaUP ? #3CFF35 : na)

MediaDOWN = mediaSMA<mediaSMA[1]
colorDOWN =(MediaDOWN ? #FF0F03 : na)

colorN =(not MediaUP and not MediaDOWN and mediaSMA==mediaSMA[1] ? white : na )

plot(mediaSMA,title="Avarege MULTI_SMA UP", color=colorUP, style=circles, linewidth=2, transp=0)
plot(mediaSMA,title="Avarege MULTI_SMA DOWN", color=colorDOWN, style=circles, linewidth=2, transp=0)
plot(mediaSMA,title="Avarege MULTI_SMA UP NEUTRAL", color=colorN, style=circles, linewidth=2, transp=0)


//plot(sma1,color=blue,linewidth=1, style=line,transp=0,title="SMA 1")
//plot(sma2,color=yellow,linewidth=1, style=line,transp=0,title="SMA 2")
//plot(sma3,color=green,linewidth=1, style=line,transp=0,title="SMA 3")
//plot(sma4,color=purple,linewidth=1, style=line,transp=0,title="SMA 4")
//plot(sma5,color=red,linewidth=1, style=line,transp=0,title="SMA 5")


// Strategy

//BUY
comprar=close>mediaSMA and mediaSMA>mediaSMA[1] 
fechar=close<mediaSMA and mediaSMA<mediaSMA[1]
 
strategy.entry("BUY",strategy.long,when=comprar)
strategy.entry("SELL",strategy.short, when=fechar)

//SELL
vender=close<mediaSMA and mediaSMA<mediaSMA[1] 
fechar2=close>mediaSMA and mediaSMA>mediaSMA[1]

strategy.entry("SELL",strategy.short, when=vender)
strategy.entry("BUY", strategy.long,when=fechar2)



더 많은