더블 EMA 골든 크로스 알고리즘 전략


생성 날짜: 2024-01-22 11:04:41 마지막으로 수정됨: 2024-01-22 11:04:41
복사: 0 클릭수: 646
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 EMA 골든 크로스 알고리즘 전략

개요

이 전략은 빠른 라인 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 변수 설정으로 시장 전환점을 놓칠 수 있습니다.
  • 이 경우, 빗방침을 이용한 단선 운영 기회를 놓칠 수 있습니다.
  • 하지만, 이 사건은 그 당시의 정치적인 상황과 비교할 수 없습니다.

위와 같은 위험에 대해, 추가적인 지표를 도입하여 최적화 할 수 있습니다. 예를 들어, 거래 필터링 조건을 확대하고, MACD 지표와 결합하여 잘못된 신호를 피하고, 적응형 EMA를 사용하여 지표 응답 속도를 가속합니다. 또한, 합리적인 손실 및 적극적인 정지 또한 필요합니다.

최적화 방향

이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.

  • 포지션 개시 필터를 추가: 예를 들어 거래량 지표와 결합하여 낮은 양의 가짜 돌파구를 피하십시오.
  • MACD와 같은 보조 지표와 결합하여 잘못된 신호를 추가적으로 방지합니다.
  • 적응 EMA를 도입하여 시장 상황에 따라 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)