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

저자:차오장, 날짜: 2023-09-21 16:40:01
태그:

전반적인 설명

이 전략은 이중 이동 평균의 황금 십자가와 죽음의 십자가를 기반으로 설계되었습니다. 짧은 기간 이동 평균이 긴 기간 이동 평균을 넘어서면 긴 기간 이동 평균을 넘어서고 짧은 기간 이동 평균이 긴 기간 이동 평균을 넘어서면 포지션을 닫습니다. 전략은 간단하고 이해하기 쉽고 초보자도 배울 수 있습니다.

전략 논리

이 전략은 주로 sma (close, 14) 및 sma (close, 28) 지표에 기반합니다.

먼저 짧은 평균과 긴 이동 평균을 정의합니다.

short_ma = sma(close, 14)  
long_ma = sma(close, 28)

그럼 금색 십자가와 죽음의 십자가를 기준으로 출입과 출입을 결정하세요.

longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma) 

짧은 MA가 긴 MA를 넘을 때 긴 MA로 이동합니다.

strategy.entry("Buy", strategy.long, when = longCondition)

짧은 MA가 긴 MA보다 낮을 때 포지션을 닫습니다.

strategy.close_all(when = shortCondition) 

논리는 간단하고 명확하며, 입구와 출구를 결정하기 위해 이중 MAs의 크로스오버를 활용합니다.

이점 분석

  • 간단한 논리, 초보자가 쉽게 사용할 수 있습니다
  • 트렌드를 결정하기 위해 MA 크로스오버를 사용합니다.
  • 매개 변수 최적화를 위한 사용자 정의 가능한 MA 기간
  • 단일 거래 손실을 제어 할 수있는 중지 손실을 허용합니다.

위험 분석

  • 시장 변동에 민감한, 손실 거래를 여러 번 생성 할 수 있습니다.
  • 마이너스 마이너스의 지연성, 가격 전환점을 놓칠 수 있습니다.
  • MA 교차점 근처에 갇히기 쉽다
  • MA 기간을 최적화해야 합니다. 다른 기간은 다른 결과를 가져올 수 있습니다.
  • 트렌드가 급격히 변할 때 손실을 빠르게 줄일 수 없습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 가장 좋은 조합을 찾기 위해 MA 기간을 최적화

최적의 조합을 찾기 위해 (5, 10), (10, 20), (20, 60) 등과 같은 다른 짧은 및 긴 MA 기간을 테스트합니다.

  1. 잘못된 신호를 피하기 위해 필터를 추가합니다.

거래량, 가격 격차 등과 같은 필터를 MA 크로스오버 근처에 추가하여 다양한 시장에서 과도한 거래를 피합니다.

  1. 스톱 로스를 포함합니다

스톱 로스 가격을 설정하거나 MA를 스톱 로스 라인으로 사용하여 단일 트레이드 손실을 제어합니다.

  1. 다른 지표와 결합

MACD, KDJ 등 보조 지표를 추가하여 전략 성과를 향상시킵니다.

  1. 입구점을 최적화

크로스오버에 바로 들어가기 보다는 MA 근처에 더 좋은 입구점을 찾아라. 예를 들어 MA 분리가 되는 지점에 들어가라.

요약

이중 MA 전략은 초보자가 사용하기 쉽지만 시장 변동에 민감하고 손실 위험이 있습니다. 매개 변수를 최적화하고 필터를 추가하고 스톱 로스를 통합하고 다른 지표를 결합하여 개선 할 수 있습니다. 강력한 트렌드에서 잘 수행 할 수 있지만 범위 시장에서 신중하거나 적절한 스톱 로스를 사용하여 사용해야합니다.
[/trans]


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)

minGainPercent = input(0.6)
gainMultiplier = minGainPercent * 0.01 + 1


longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))


avg_protection = input(1)
gain_protection = input(1)


strategy.entry("Buy", strategy.long, when = longCondition    and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition  and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

더 많은