추세 추종 EMA 전략


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

추세 추종 EMA 전략

개요

트렌드 추적 EMA 전략은 EMA 지표를 기반으로 한 트렌드 추적 전략이다. 이 전략은 지정된 주기의 EMA 라인을 계산하여 가격 트렌드 방향을 판단하여 트렌드 추적을 구현한다. 가격이 EMA 라인을 넘어서면 공백을 만들고, 가격이 EMA 라인을 넘어서면 더 많이 하는 것이 전형적인 트렌드 추적 전략이다.

전략 원칙

이 전략은 주로 EMA 지표를 기반으로 가격 동향을 판단한다. EMA 지표는 가격에 대한 지수 평면 이동 평균이며, 최근 가격에 더 높은 무게를 부여하여 가격 변화에 더 빨리 반응한다. 전략은 EMA 주기 내의 평균 가격을 계산하여 평평한 곡선을 생산한다. 가격이 아래에서 EMA 선을 통과하면 가격이 상승하기 시작하면 호불호 신호로 간주되며, 가격이 위에서 EMA 선을 통과하면 가격이 하락하기 시작하면 하락 신호로 간주됩니다.

이 원칙에 따라, 이 전략은 EMA를 넘어서면 공백을 하고, EMA를 넘어서면 더 많이 하고, EMA 선을 추적하여 가격 트렌드의 변화를 추적한다. 구체적으로, 코드에서 8 회의 EMA 선을 계산하여, EMA 선을 넘어서면 공백을 하고, EMA 선을 넘어서면 더 많이 하고, 위험을 제어하기 위해 스톱포드를 설정한다.

전략적 이점

  • 트렌드 추적성이 강하다. EMA 라인은 가격 변동을 평형시키고, 시장 소음을 필터링하여, 중장선 트렌드를 추적한다.
  • 운영 주파수는 적당하다. 단기 지표에 비해 EMA 라인은 조정 주파수가 적당하다. 너무 자주 거래되는 것을 피한다.
  • 이 전략은 하나의 EMA 지표만 기반으로 트렌드 추적을 할 수 있으며 매우 간단하고 직접적입니다.
  • 확장성이 강하다. EMA 매개 변수를 최적화하거나 다른 지표를 추가하여 전략을 풍부하게 할 수 있다.

위험과 해결책

  • 튜닝 포인트를 놓칠 위험이 있을 수 있다. 가격이 급격하게 반전할 때, EMA 라인은 조정하기 위해 일정 시간이 필요하며, 최적의 입시 시점을 놓칠 수 있다. 해결 방법은 다른 지표와 함께 튜닝 포인트를 판단하는 것이다.

  • 손실이 커질 위험이 있다. EMA 라인은 트렌드 추적 역할을 하며, 튜닝 포인트를 정확하게 판단할 수 없다. 가격이 반전되면 큰 손실이 발생할 수 있다. 해결책은 합리적인 스톱 손실을 설정하는 것이다.

  • 거래 빈도가 너무 높거나 너무 낮을 수 있습니다. EMA 주기가 다르기 때문에, 생산 전략의 거래 빈도도 다릅니다. 너무 짧은 주기는 과도한 거래로 이어질 수 있으며, 너무 긴 주기는 기회를 놓칠 수 있습니다.

최적화 제안

  • 최적화된 EMA 매개 변수를 사용하여 최적의 균형을 찾을 수 있습니다. 단계적 최적화를 통해 최적의 EMA 주기 수치를 결정할 수 있습니다.

  • 다른 지표와 함께 튜닝 포인트를 판단한다. 예를 들어 RSI와 같은 과매매 지표와 결합하면 가격 튜닝 포인트를 더 잘 판단할 수 있다.

  • 최적의 스톱포드 전략, 최적의 스톱포드를 찾는 것. 재검토를 통해 다양한 스톱포드를 테스트하여 최대 수익을 고정하는 스톱포드를 찾는 것.

  • 최적화된 품종 선택. 다양한 품종의 특성에 따라 EMA 주기 파라미터를 조정하여 최적의 효과를 얻는다.

요약하다

트렌드 추적 EMA 전략은 매우 전형적인 지표 기반의 트렌드 추적 전략이다. 그것은 간단하고 직접적이며, 구현하기 쉽고, 초보자 학습에 적합하다. 또한 확장성이 있으며, 다른 지표 또는 최적화 매개 변수를 추가하여 전략의 효과를 더욱 향상시킬 수 있다. 지속적인 최적화 및 개선으로, 이 전략은 매우 실용적인 트렌드 추적 도구가 될 수 있다.

전략 소스 코드
/*backtest
start: 2022-10-09 00:00:00
end: 2023-10-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "EMA Close Strategy", shorttitle = "EMA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

EmaSource   = input(defval = close, title = "EMA Source")
EmaLength   = input(defval = 8, title = "EMA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
stopLoss = input(30, title = "Stop loss percentage(0.1%)") 
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false



EMA = ema(EmaSource,EmaLength)

plot(EMA, title = "EMA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(EMA, close)
short= crossover(EMA, close)

if (long)
    strategy.entry("LongId", strategy.long, when=window())
    
if (short)
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)