이동평균선 교차를 기반으로 한 추세 반전 전략


생성 날짜: 2023-09-20 16:54:46 마지막으로 수정됨: 2023-09-20 16:54:46
복사: 0 클릭수: 773
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 EMA와 MA 평균선의 교차를 사용하여 트렌드 반전을 판단하는 전형적인 트렌드 추적 전략에 속한다.

전략 원칙

  1. 각각 지정된 주기에서의 EMA 지수 평균선과 MA 간단한 이동 평균선을 계산한다.

  2. EMA가 아래에서 MA를 뚫을 때, 구매 신호를 생성한다.

  3. EMA가 MA를 위아래로 뚫을 때, 팔기 신호를 생성한다.

  4. 특정 달의 특정 날짜에만 거래할 수 있습니다.

  5. 매번 1방향 포지션만 보유하고, 역방향 포지션을 개설하지 않는다.

  6. 규칙은 간단하고 명확하며 실행하기 쉽습니다.

우위 분석

  1. EMA와 MA의 교차는 트렌드 반전 기회를 잡기 쉽습니다.

  2. 날짜 필터를 설정하여 중대한 사건으로 인한 잘못된 거래를 피할 수 있습니다.

  3. 단방향 포지션만 하면 불필요한 역평화 포지션을 줄일 수 있다.

  4. 자금 사용 효율성이 높습니다.

  5. 단선 트렌드 거래에 적합하다.

위험 분석

  1. 평행선 교차는 잘못된 신호가 발생할 수 있으며, 불필요한 손실을 초래할 수 있다.

  2. 단편적 손실의 크기를 효과적으로 통제할 수 없습니다.

  3. 손해없는 전략, 더 큰 자본 손실 위험이 있습니다.

  4. 날짜가 너무 고정되어 거래 기회를 놓칠 수 있습니다.

  5. 잘못된 변수 설정은 정책의 성능에도 영향을 미칩니다.

최적화 방향

  1. 다른 평균선 주기들을 테스트하여 최적의 변수를 찾는다.

  2. 다른 필터링 조건을 추가할 필요가 있습니다.

  3. 단독 손실을 통제하기 위한 손해 방지 장치를 구축하십시오.

  4. 날짜 필터링 규칙을 최적화하고 약간의 유연성을 유지하십시오.

  5. “정확한 정지 위치를 설정하는 방법을 연구하라”.

  6. 동적 포지션 관리 전략을 고려하십시오.

요약하다

이 전략은 EMA와 MA 평평선 교차를 기반으로 트렌드 반전 거래를 하는데 간단하고 효율적이지만 개선할 여지가 있다. 매개 변수 최적화, 위험 제어 등의 수단으로 더 개선하면 안정적인 단선 거래 시스템으로 만들 수 있다.

전략 소스 코드
//@version=2
strategy(title = "MA + EMA Crossover Strategy ",shorttitle="eMA", overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=100000)


emaLength =input(34)

maLength = input(89)

ema=ema(close,emaLength)
ma=sma(close,maLength)

plot(ema,linewidth=3,color=green)
plot(ma,linewidth=3,color=red)
longCond= crossover(ema,ma)
shortCond=crossover(ma,ema)





monthfrom =input(8)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond    and  month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND",  comment="LONG")
    
else
    strategy.cancel(id="LONG")
    



if ( shortCond   and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND",  comment="SHORT")
else
    strategy.cancel(id="SHORT")