EMA 전략의 추세

저자:차오장, 날짜: 2023-10-16 15:54:41
태그:

img

전반적인 설명

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 매개 변수를 최적화합니다. 단계적 최적화는 최적의 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)

더 많은