다중 EMA 및 RSI 트렌드 다음 전략

저자:차오장, 날짜: 2024-03-01 13:26:24
태그:

img

전반적인 설명

이 문서에서는 주로 다중 기하급수적 이동 평균 (EMA) 및 상대 강도 지수 (RSI) 를 기반으로 Ravikant_sharma가 개발한 양적 거래 전략을 분석합니다. 이 전략은 가격 추세를 식별하고 다른 주기와 RSI의 값을 가진 EMA를 넘어서 입구 및 출구 지점을 결정합니다.

전략 원칙

지표 계산

이 전략은 9일, 21일, 51일, 100일 및 200일 라인을 포함한 다양한 기간을 가진 5개의 EMA를 사용합니다. 코드에 첫 번째 4개의 EMA만이 그려져 있습니다. RSI 매개 변수는 14로 설정되어 있습니다.

입국 조건

구매하기 전에 다음 조건 중 하나가 충족되어야 합니다.

  1. 9일 EMA는 21일 EMA를 넘습니다.
  2. 9일 EMA는 51일 EMA를 넘습니다.
  3. 51일 EMA가 100일 EMA 아래로 넘어갑니다.

동시에, RSI는 65보다 높아야 강세를 나타냅니다.

출입 조건

포지션을 닫기 전에 다음 조건 중 하나가 충족되어야 합니다.

  1. 9일 EMA가 51일 EMA를 넘어서고, 트렌드 전환을 나타냅니다.
  2. 종료 가격은 입시 가격의 125%를 초과하고 수익 목표에 도달합니다.
  3. RSI는 40 아래로 떨어지고 반전 신호를 냅니다.
  4. 닫기 가격은 엔트리 가격의 98% 이하로 떨어지고, 스톱 손실이 발생합니다.

이점 분석

이것은 다음과 같은 강점을 가진 전략을 따르는 전형적인 경향입니다.

  1. 효율적인 트렌드 추적을 위해 트렌드 방향을 결정하기 위해 EMA 크로스오버를 사용하는 것
  2. 다른 기간의 EMA를 결합하면 더 신뢰할 수 있는 트렌드 신호를 식별합니다.
  3. RSI 필터는 범주 시장에서 잘못된 신호를 피합니다.
  4. 수익을 취하고 손실을 멈추는 설정은 수익을 차단하고 위험을 제어합니다.

위험 과 해결책

여전히 몇 가지 위험이 있습니다.

  1. 범위에 묶인 시장에서 불확실한 신호가 자주 발생할 수 있으며, 과도한 거래가 발생할 수 있습니다. EMA 기간과 RSI 필터 조건이 조정 될 수 있습니다.
  2. EMA 크로스오버 신호는 급격한 반전 중에 지연을 겪을 수 있으며, 시간 내에 종료 할 수 없습니다. 다른 지표는 긴 / 짧은 신호 강도를 결정하기 위해 추가 될 수 있습니다.
  3. 부적절한 수익 목표 및 스톱 손실 설정은 조기 스톱 손실 또는 적시에 수익을 잠금하지 못하는 결과를 초래합니다. 매개 변수는 다른 제품과 시장 환경에 따라 최적화되어야합니다.

최적화 방향

이 전략은 다음과 같은 방법으로 더 이상 최적화 될 수 있습니다.

  1. 다른 제품에 대한 매개 변수 최적화
  2. 다인자 모델 구축을 위해 다른 기술적 지표를 추가
  3. 신호 품질을 판단하는 기계 학습 알고리즘을 통합
  4. 감정적 함정 을 피하기 위해 감정 분석 을 결합 하는 것
  5. 최적의 수익을 찾기 위해 다른 수익/손실 중지 전략을 테스트

결론

결론적으로, 이것은 전반적으로 신뢰할 수 있고 구현하기 쉬운 트렌드 다음 전략입니다. 트렌드 방향에 대한 EMA 크로스오버와 잘못된 신호에 대한 RSI 필터와 함께, 좋은 백테스트 결과는 지속적인 이익을 얻기 위해 추가 매개 변수 및 모델 최적화를위한 견고한 토대를 제공합니다. 그러나 거래자는 여전히 급격한 반전과 위험을 초래하는 부적절한 매개 변수에 신중해야합니다.


/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Ravikant_sharma

//@version=5

strategy('new', overlay=true)

start = timestamp(1990, 1, 1, 0, 0)
end = timestamp(2043, 12, 12, 23, 59)
ema0 = ta.ema(close, 9)
ema1 = ta.ema(close, 21)
ema2 = ta.ema(close, 51)
ema3 = ta.ema(close, 100)
ema4 = ta.ema(close, 200)

rsi2=ta.rsi(ta.sma(close,14),14)
plot(ema0, '9', color.new(color.green, 0))
plot(ema1, '21', color.new(color.black, 0))
plot(ema2, '51', color.new(color.red, 0))
plot(ema3, '200', color.new(color.blue, 0))   

//plot(ema4, '100', color.new(color.gray, 0)) 


//LongEntry = (  ta.crossover(ema0,ema3)  or  ta.crossover(ema0,ema2) or  ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) //
LongEntry=false
if ta.crossover(ema0,ema1) 
    if rsi2>65
        LongEntry:=true
if ta.crossover(ema1,ema2)
    if rsi2>65
        LongEntry:=true
        
LongExit =  ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98)



if time >= start and time <= end 
    if(LongEntry and rsi2>60)
        strategy.entry('Long', strategy.long, 1)
    if(LongExit)
        strategy.close('Long') 



더 많은