다중 EMA 상승 트렌드 전략

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

img

전반적인 설명

멀티 EMA 올림 트렌드 전략은 트렌드 결정을 위해 다양한 기간의 다중 기하급수적인 이동 평균 (EMA) 을 기반으로 한 트렌드 다음 전략입니다. 10 일간의 EMA와 다른 긴 기간 EMA 이상의 가격 파업이 올림 라인업에있을 때 길게 이동하며 8%의 트레일링 스톱 로스를 사용하여 이익을 잠금합니다.

전략 논리

이 전략은 10일, 20일, 50일, 100일, 150일, 200일 6개의 EMA를 사용한다. 이 EMA는 시장의 현재 순환적 단계를 결정하는 데 사용됩니다. 짧은 기간 EMA (예: 10일) 가 더 긴 기간 EMA (예: 20일, 50일) 를 넘을 때 시장이 상승 추세의 마킹 단계에 들어갔음을 신호한다.

구체적으로, 전략은 다음 조건이 충족될 때 지속될 것입니다.

  1. 10일 EMA는 20일 EMA보다 높습니다.
  2. 20일 EMA는 50일 EMA보다 높습니다.
  3. 100일 EMA는 150일 EMA보다 높습니다.
  4. 150일 EMA는 200일 EMA보다 높습니다.
  5. 닫기 가격 10일 EMA를 넘는다

긴 포지션을 열면 8%의 트레일링 스톱 로스를 사용하여 이익을 잠금합니다. 즉, 가격이 엔트리 가격에서 8% 이상 떨어지지 않는 한 포지션은 열려있을 것입니다. 드라우다운이 8%를 넘으면 포지션은 스톱 로스로 닫을 것입니다.

요약하자면 이 전략의 핵심 아이디어는 여러 EMA 정렬에 의해 확인되면 상승 추세로 진입하고 수익을 확보하기 위해 후속 스톱 손실을 사용하는 것입니다.

이점 분석

멀티 EMA 황소 트렌드 전략은 다음과 같은 주요 강점을 가지고 있습니다.

  1. 이는 가짜 브레이크를 효과적으로 필터링하고, 불필요한 트레이드를 줄이면서 마커프 사이클을 잡는 것을 보장할 수 있습니다.
  2. 여러 개의 EMA 필터는 스톱 로스가 발생할 확률을 낮춰 더 안전한 포지션을 유지할 수 있습니다.
  3. 8%의 후속 스톱 손실은 너무 단단하지도 않고 너무 느슨하지도 않습니다. 이윤 취득과 손실 중지 균형을 맞추고 있습니다.
  4. 이 전략은 다양한 제품에서 최적화를 위해 유연한 매개 변수를 조정할 수 있습니다.

위험 분석

이 전략에는 몇 가지 위험 요소가 있습니다.

  1. EMA 순서는 100%의 경우 트렌드 방향을 보장 할 수 없습니다. 일부 윙사우는 여전히 발생할 수 있습니다.
  2. 8%의 트레일링 스톱은 큰 트렌드 중에 약간의 수익을 포기할 수 있습니다.
  3. EMA 시스템은 내재된 지연을 가지고 있으며, 전환점 확인은 약간 지연될 수 있습니다.

이러한 위험을 해결하기 위해 EMA 기간을 조정하거나 판단을 개선하기 위해 보조 지표를 통합하여 최적화 할 수 있습니다.

최적화 방향

이 전략의 특성을 고려할 때, 미래의 최적화는 다음 측면에 초점을 맞출 수 있습니다.

  1. 다양한 EMA 조합과 기간 집합을 테스트하여 최적의 매개 변수를 찾습니다.
  2. 불필요한 입력을 피하기 위해 트렌드 강도를 측정하기 위해 변동성 지수 지표를 추가합니다.
  3. MACD, KDJ 같은 더 많은 필터링 지표를 포함 하 고 상승 정렬 확인.
  4. 동적 스톱 로스 구현을 위해 기계 학습 알고리즘을 사용하십시오.

결론

전반적으로, 멀티-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=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01

longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0

//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))

//OPEN
longCondition =  ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
    strategy.entry("BUY1", strategy.long)
    
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
    strategy.entry("BUY2'", strategy.long)

//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
    strategy.exit(id='TSP', stop=longStopPrice)
    


더 많은