이중 EMA 골든 크로스 전략

저자:차오장, 날짜: 2024-01-22 11:04:41
태그:

img

전반적인 설명

이 전략은 빠른 EMA 라인과 느린 EMA 라인의 교차를 기반으로 거래 신호를 생성합니다. 빠른 EMA 라인이 느린 EMA 라인의 위를 넘을 때 구매 신호가 생성됩니다. 빠른 EMA 라인이 느린 EMA 라인의 아래를 넘을 때 판매 신호가 생성됩니다. 이 전략은 이동 평균의 장점을 활용하여 시장 추세를 효과적으로 추적하고 트렌드 시작 중에 거래 신호를 생성합니다.

전략 논리

이 전략의 핵심 지표는 빠른 EMA 라인과 느린 EMA 라인이다. 전략은 다른 매개 변수와 함께 두 개의 EMA 라인을 설정, 빠른 EMA를 위해 10 및 느린 EMA를 위해 20. 10 일 EMA 라인은 가격 변화에 더 빨리 반응, 20 일 라인은 더 느리게 반응. 단기 EMA 라인이 장기 EMA 라인의 위로 넘을 때, 그것은 단기 평균 라인이 장기 EMA 라인을 위로 이끌기 시작한다는 것을 의미합니다. 이 시점에서 시장이 황소 상태에 전환 할 수 있음을 암시합니다. 반대로, 짧은 EMA가 긴 EMA 아래로 떨어지면, 그것은 짧은 EMA가 장기 EMA보다 앞선 주도력을 잃기 시작한다는 것을 의미하며, 시장이 하향 상태에 전환 할 수 있음을 암시합니다. 따라서 판매 신호가 생성됩니다.

빠른 EMA 라인과 느린 EMA 라인 사이의 크로스오버 논리를 활용함으로써 이 전략은 시장 트렌드의 전환점을 적시에 파악하고 그에 따라 거래 신호를 생성합니다. 한편, EMA 자체는 잘못된 신호를 필터링하여 시장 통합 중에 과도한 거래를 피할 수 있습니다. 이것은 전략이 잘못된 거래를 줄이는 동안 시장 전환점을 파악하여 우수한 수익성을 창출 할 수 있습니다.

이점 분석

  • 높은 수익성을 위해 EMA의 교차 규칙을 통해 시장 전환점을 포착합니다
  • 각각의 장점으로 빠른 EMA 라인과 느린 EMA 라인을 모두 사용합니다.
  • EMA의 고유 노이즈 필터링 능력은 잘못된 거래를 줄여줍니다.
  • 이해, 최적화 및 확장하기 쉬운
  • 다른 보조 지표를 포함 할 수있는 높은 확장성

위험 분석

  • 범위에 제한된 시장에서 빈번한 잘못된 신호가 발생할 수 있습니다.
  • 잘못된 EMA 매개 변수 설정으로 인해 주요 곡선이 빠질 수 있습니다.
  • 지연된 발행은 단기 거래 기회를 놓칠 수 있습니다.
  • 급격한 시장 격동에 적응할 수 없습니다.

이러한 위험을 해결하기 위해 필터링 규칙을 추가하고, 잘못된 신호를 피하기 위해 MACD를 결합하고, 대응을 가속화하기 위해 적응 EMA를 사용하는 것과 같은 최적화가 도입 될 수 있습니다. 또한 적절한 스톱 로스 및 수익 취득 메커니즘이 필요합니다.

최적화 방향

추가 최적화의 잠재적인 방향은 다음을 포함합니다.

  • 입시 신호에 대한 필터링 규칙을 추가합니다. 예를 들어 거래량을 결합합니다.
  • 추가 신호를 위해 MACD와 같은 보조 지표를 포함합니다.
  • 동적으로 매개 변수를 조정하는 적응 EMA를 도입
  • 여러 시간 프레임 분석을 적용하여 다른 EMA를 활용하는 방법
  • 트레일링 스톱, 퍼센트 스톱 등을 통해 스톱 손실 전략을 최적화합니다.
  • 자동 매개 변수 조정에 인공지능 기술을 활용

요약

이 전략은 이중 EMA 라인의 크로스오버 논리를 통해 중요한 시장 전환점을 포착하여 라이브 거래에 효과적입니다. 추가 필터, 보조 지표 및 스톱 로스 최적화로 전략의 안정성이 더욱 향상 될 수 있습니다. 전략 논리는 직선적이고 양 트레이더에 대한 학습 가치가 있으며 확장 및 개선에 대한 풍부한 잠재력을 가지고 있습니다.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Backtest single EMA cross", overlay=true)

qty = input(100000, "Buy quantity")

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
testPeriod() => true


ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")

expo = ema(close, ema1)
ma = ema(close, ema2)

avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)

p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)

longCondition = crossover(expo, ma)

shortCondition = crossunder(expo, ma)


if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)



더 많은