더블 이동 평균 교차 전략-EMA9/20


생성 날짜: 2024-03-08 15:22:50 마지막으로 수정됨: 2024-03-08 15:22:50
복사: 0 클릭수: 793
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 이동 평균 교차 전략-EMA9/20

전략 개요

쌍평평선 교차 전략 - EMA9/20 은 두 지수 이동 평균 ((EMA) 의 교차를 기반으로 한 양적 거래 전략이다. 이 전략은 9일 EMA와 20일 EMA를 거래 신호로 사용하고 있으며, 두 평평선 교차 시 구매 또는 판매 신호를 발생시킨다. 이 전략은 또한 가격과 9일 EMA의 교차를 보조 신호로 사용하고 있으며, 거래 위험을 관리하기 위해 이동 스로퍼를 사용합니다.

전략 원칙

이 전략의 핵심 원칙은 두 개의 다른 주기에서 지수 이동 평균의 교차를 사용하여 시장 추세를 포착하는 것입니다. 단기 평균선 ((9일 EMA) 위에 장기 평균선 ((20일 EMA) 을 통과하면 시장이 상승 추세에 들어갈 수 있음을 나타내는 전략이 구매 신호를 생성합니다. 반대로, 단기 평균선 아래에 장기 평균선이 통과하면 시장이 하향 추세에 들어갈 수 있음을 나타내는 전략이 판매 신호를 생성합니다.

평행선 교차 신호 외에도, 이 전략은 가격과 단기평행선 ((9일 EMA) 의 교차를 보조 신호로 도입한다. 가격이 9일 EMA를 넘으면 구매 신호가 발생하며, 가격이 9일 EMA를 넘으면 판매 신호가 발생한다. 이것은 시장 추세 변화를 더 신속하게 포착 할 수 있다.

위험을 제어하기 위해 이 전략은 이동한 스톱 (Trailing Stop) 을 사용한다. 거래가 수익 상태로 들어가면 이동한 스톱은 가격의 변화에 따라 스톱 포지션을 계속 조정하여 가격이 역으로 스톱 포지션을 돌파할 때까지 수익을 잠금화하면서 잠재적인 손실을 제한한다.

전략적 이점

  1. 간단하고 이해하기 쉬운: 이 전략은 고전적인 평선 교차 원칙에 기초하고, 논리가 명확하고, 이해하기 쉽고 구현하기 쉽다.

  2. 트렌드 추적: 이 전략은 두 개의 다른 주기의 평행선을 교차하여 시장의 주요 트렌드를 효과적으로 포착할 수 있습니다.

  3. 적시 중지: 이동식 중지 메커니즘을 도입하여, 추세가 역전될 때 적시에 포지션을 청산하고, 하향 위험을 제어할 수 있다.

  4. 매개 변수 유연성: 이 전략의 매개 변수들 (예: 평균주기, 정지점수 등) 은 다른 시장과 품종에 따라 최적화되고 조정되어 다른 시장 환경에 적응할 수 있다.

전략적 위험

  1. 자주 거래: 이 전략은 평행선 교차와 가격 교차의 두 가지 신호를 동시에 사용하기 때문에 거래 빈도가 높아지고 거래 비용이 증가 할 수 있습니다.

  2. 흔들리는 시장: 시장이 흔들리거나 정리될 때, 이 전략은 더 많은 잘못된 신호를 생성할 수 있으며, 이로 인해 수익 수준이 낮아질 수 있다.

  3. 매개 변수 민감성: 이 전략의 성능은 매개 변수 선택에 민감할 수 있으며, 다른 매개 변수는 매우 다른 결과를 가져올 수 있다.

최적화 방향

  1. 신호 필터링: 평행선 교차와 가격 교차 신호를 기반으로, 다른 기술 지표 (RSI, MACD 등) 를 필터링 조건으로 도입하여 잘못된 신호를 줄일 수 있습니다.

  2. 동적 파라미터: 시장의 변동률, 트렌드 강도 등의 요인에 따라, 동적으로 조정 전략 파라미터 (예: 평균선 주기, 스톱포인트 수 등), 다른 시장 상태에 적응하기 위해.

  3. 포지션 관리: 시장 추세와 신호 강도에 따라 포지션 크기를 동적으로 조정합니다. 추세가 강할 때 포지션을 늘리고, 추세가 명확하지 않거나 신호가 약할 때 포지션을 줄입니다.

  4. 여러 품종 적응: 이 전략을 여러 품종과 시장으로 확장하여 투자 분산과 연관성 분석을 통해 전체 위험을 줄이고 수익 안정성을 향상시킵니다.

요약하다

쌍평선 교차 전략 - EMA9/20 은 두 개의 다른 주기평선 교차와 가격 교차를 통해 시장 추세를 포착하는 간단한 실용적인 양적 거래 전략이며, 이동한 손해를 사용하여 위험을 제어합니다. 이 전략의 논리는 명확하고 이해하기 쉽고 구현할 수 있으며, 초보자 학습 및 사용에 적합합니다. 그러나 이 전략에는 약간의 제한이 있습니다.

전략 소스 코드
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy(title = "EMAs 9 / 20",
		 shorttitle = '9/20 EMAs', 
		 initial_capital = 1000,
		 overlay = true, 
		 default_qty_type = strategy.fixed,
		 commission_type = strategy.commission.cash_per_contract,
		 commission_value = 0.35,
		 default_qty_value = 1)


int trailOffset = 10
int trailPoints = 15


series float oEma9 = ta.ema(ohlc4, 9)
series float oEma20 = ta.ema(ohlc4, 20)

series bool closeCrossoverEma9 = ta.crossover(close, oEma9)
series bool closeCrossunderEma9 = ta.crossover(close, oEma9)

series bool nineCrossover20 = ta.crossover(oEma9, oEma20)
series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20)

//Entry Exits

if nineCrossover20
    strategy.entry("Long 9Cross20", strategy.long, 2)
else if closeCrossoverEma9
    strategy.entry("Long 9CrossClose", strategy.long, 2)
    strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossunder20
    strategy.close("Long 9Cross20")
    
    

if nineCrossunder20
    strategy.entry("Short 9Cross20", strategy.short, 2)
else if closeCrossunderEma9
    strategy.entry("Short 9CrossClose", strategy.short, 2)
    strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossover20
    strategy.close("Short 9Cross20")