이중 EMA 금 교차 알고리즘 전략


창간 날짜: 2024-01-22 11:04:41 마지막 수정: 2024-01-22 11:04:41
복사: 0 클릭 수: 303
1
관심
1105
관심자

双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 설정으로 시장 전환점을 놓칠 수 있습니다.
  • 이 사건은 지난 3일까지 계속됐습니다.
  • 급격한 변동에 대처할 수 없는 상황

상기 위험에 대한 최적화는 추가 지표의 도입으로 이루어질 수 있다. 예를 들어 거래 필터링 조건을 증대시키는 것, 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)


                
            
더 많은 내용