리소스 로딩... 로딩...

이동 평균 및 RSI 종합 거래 전략

저자:차오장, 날짜: 2024-04-30 16:31:24
태그:MADEMARSI

img

전반적인 설명

이 전략은 여러 이동 평균과 상대적 강도 지표 (RSI) 를 결합하여 거래 신호를 생성합니다. 9 일, 21 일, 25 일 및 99 일이라는 다른 기간을 가진 네 개의 이동 평균을 사용하여 그 사이의 교차점을 기반으로 트렌드 방향을 결정합니다. 또한 전략에는 RSI 지표가 보충 판단으로 통합되어 시장이 과소매되거나 과소매되었을 때 추가 거래 신호를 제공합니다.

이 전략의 주요 아이디어는 서로 다른 기간의 이동 평균의 트렌드 특성을 활용하고 상승 또는 하락 정렬에 따라 주요 시장 트렌드를 결정하는 것입니다. 장기 이동 평균 이상의 단기 이동 평균의 교차는 상승 신호로 간주되며 그 반대는 하락 신호로 간주됩니다. RSI 지표는 시장 정서를 측정하는 데 사용됩니다. 시장이 과소매되거나 과소매되었을 때 반전 신호를 제공합니다.

전략 원칙

  1. 9일, 21일, 25일, 99일 4개의 다른 기간을 위한 간단한 이동평균을 계산합니다.
  2. 9일 이동 평균과 21일 이동 평균 사이의 교차 상황을 결정합니다. 9일 이동 평균이 21일 이동 평균을 넘으면 긴 신호를 생성합니다. 9일 이동 평균이 21일 이동 평균을 넘으면 짧은 신호를 생성합니다.
  3. 25일 이동 평균과 99일 이동 평균 사이의 교차 상황을 결정합니다. 25일 이동 평균이 99일 이동 평균을 넘으면 긴 신호를 생성합니다. 25일 이동 평균이 99일 이동 평균을 넘으면 짧은 신호를 생성합니다.
  4. 14일 RSI 인디케이터를 계산합니다. RSI가 70보다 높을 때 시장은 과소매로 간주됩니다. RSI가 30보다 낮을 때 시장은 과소매로 간주됩니다.
  5. 이동 평균 크로스오버 신호와 RSI 신호를 결합하여 최종 거래 신호를 생성합니다.
    • 9일 이동 평균이 21일 이동 평균을 넘어서고 RSI가 70을 넘으면 짧은 포지션을 개설합니다.
    • 9일 이동평균이 21일 이동평균 아래로 넘어가고 RSI가 30 아래로 넘어가면 긴 포지션을 개시합니다.
    • 25일 이동 평균이 99일 이동 평균을 넘어서고 RSI가 70을 넘으면 긴 포지션을 개설합니다.
    • 25일 이동평균이 99일 이동평균 아래로 넘어가고 RSI가 30 아래로 넘어가면 짧은 포지션을 개척합니다.
  6. 이동 평균 크로스오버 신호는 또한 포지션을 닫을 때 사용됩니다. 해당 이동 평균 크로스오버가 발생하면 이전 포지션을 닫습니다.

이점 분석

  1. 트렌드 추적: 전략은 다른 기간의 이동 평균의 트렌드 특성을 활용하고 상승 또는 하락 정렬에 따라 주요 시장 트렌드를 결정하여 전체 시장 방향을 파악하는 데 도움이됩니다.
  2. 노이즈 필터링: 단일 이동 평균을 사용하는 것과 비교하면 이 전략은 다양한 기간을 가진 여러 이동 평균을 사용하며, 이는 단기 노이즈를 필터링하고 신호 신뢰성을 향상시키는 데 도움이됩니다.
  3. 감정 판단: RSI 지표를 추가 판단으로 포함하면 시장 정서가 너무 낙관적이거나 비관적이면 역전 신호를 제공하며 극단적인 시장 조건에서 전략이 큰 마감을 경험하지 않도록 할 수 있습니다.
  4. 명확한 논리: 전략의 거래 논리는 간단하고 직설적이어서 이해하기 쉽고 구현하기 쉽습니다.
  5. 적응성: 전략은 이동 평균의 기간과 RSI의 매개 변수를 조정함으로써 다른 시장 환경과 거래 도구에 적응할 수 있습니다.

위험 분석

  1. 매개 변수 민감성: 전략의 성능은 이동 평균 기간 및 RSI 매개 변수 설정 선택에 민감할 수 있습니다. 다른 매개 변수들은 전략 성능에 상당한 변화를 초래할 수 있습니다.
  2. 트렌드 인식 지연: 이동 평균은 본질적으로 지연 지표이며 시장 전환점에 일정 수준의 지연을 경험할 수 있으며, 놓친 거래 기회 또는 잘못된 신호로 이어질 수 있습니다.
  3. 범위에 제한된 시장에서의 저성능: 범위에 제한된 시장에서, 이동 평균의 빈번한 크로스오버는 전략이 많은 거래 신호를 생성하도록 만들 수 있으며, 잠재적으로 열등한 성능을 초래할 수 있습니다.
  4. 블랙 스완 사건: 전략은 판단을 위해 주로 역사적 데이터에 의존하고 갑작스러운 블랙 스완 사건에 적절하게 대응하지 않을 수 있습니다.

최적화 방향

  1. 매개 변수 최적화: 이동 평균의 기간과 RSI의 매개 변수를 최적화하여 특정 시장에 가장 좋은 매개 변수 조합을 찾을 수 있습니다. 유전 알고리즘과 같은 최적화 방법은 최적 매개 변수를 자동으로 검색하는 데 사용할 수 있습니다.
  2. 신호 필터링: 이동 평균 크로스오버 및 RSI 신호 외에도 신호 정확성을 향상시키기 위해 다른 기술적 지표 또는 가격 행동 패턴을 도입하십시오. 예를 들어 볼링거 밴드 또는 MACD 지표를 통합하는 것을 고려하십시오.
  3. 포지션 사이징: 현재 전략에 포지션 사이징의 개념을 도입합니다. 시장 트렌드의 힘과 확실성에 따라 포지션 크기를 동적으로 조정하여 위험을 더 잘 제어하고 수익을 향상시킵니다.
  4. 스톱 로스 및 트레이프 로프: 거래당 최대 위험 노출을 제어하기 위해 스톱 로스 및 트레이프 로프 메커니즘, 특히 변동성 기반 또는 후속 스톱 로스를 구현합니다.
  5. 다중 시장 적응: 여러 시장과 도구에 전략을 확장하십시오. 적절한 매개 변수 조정 및 위험 통제를 통해 다른 시장에서 거래 기회를 포착하십시오.

요약

이 전략은 트렌드 추종 및 정서를 판단하는 거래 전략을 형성하기 위해 다른 기간과 RSI 지표와 이동 평균을 결합합니다. 이 전략의 장점은 명확한 논리와 적응력입니다. 여러 이동 평균을 통합함으로써 시장 추세를 효과적으로 파악 할 수 있습니다. 그러나 매개 변수 민감성, 트렌드 인식 지연 및 범위 제한 시장에서의 저성능과 같은 위험에 직면하고 있습니다. 향후 개선은 매개 변수 최적화, 신호 필터링, 위치 크기, 스톱 로스 및 영업 메커니즘 및 멀티 시장 적응을 통해 전략의 성과와 탄력성을 더욱 향상시킬 수 있습니다.


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

//@version=5
strategy("Estratégia de Médias Móveis e RSI (por Svitorino_trade)", shorttitle="Estratégia-Médias Móveis", overlay=true)

len1 = input.int(9, minval=1, title="Length 1")
len2 = input.int(21, minval=1, title="Length 2")
len3 = input.int(25, minval=1, title="Length 3")
len4 = input.int(99, minval=1, title="Length 4")
rsi_length = input.int(14, minval=1, title="RSI Length")
rsi_oversold = input.float(30, minval=0, maxval=100, title="RSI Oversold Level")
rsi_overbought = input.float(70, minval=0, maxval=100, title="RSI Overbought Level")

src = input(close, title="Source")

ama(src, length) =>
    sum = 0.0
    for i = 0 to length - 1
        sum := sum + src[i]
    sum / length

avg1 = ama(src, len1)
avg2 = ama(src, len2)
avg3 = ama(src, len3)
avg4 = ama(src, len4)

rsi_value = ta.rsi(src, rsi_length)

// Condições de entrada e saída para períodos de 9 e 21
cruzamento_9_21_acima = avg1 > avg2 and avg1[1] <= avg2[1]
cruzamento_9_21_abaixo = avg1 < avg2 and avg1[1] >= avg2[1]

// Condições de entrada e saída para períodos de 25 e 99
cruzamento_25_99_acima = avg3 > avg4 and avg3[1] <= avg4[1]
cruzamento_25_99_abaixo = avg3 < avg4 and avg3[1] >= avg4[1]

// Plotando os sinais de entrada e saída
plotshape(series=cruzamento_9_21_acima, style=shape.triangleup, color=color.green, size=size.small, location=location.belowbar)
plotshape(series=cruzamento_9_21_abaixo, style=shape.triangledown, color=color.red, size=size.small, location=location.abovebar)
plotshape(series=cruzamento_25_99_acima, style=shape.triangleup, color=color.green, size=size.small, location=location.belowbar)
plotshape(series=cruzamento_25_99_abaixo, style=shape.triangledown, color=color.red, size=size.small, location=location.abovebar)

// Entradas e saídas para períodos de 9 e 21
if cruzamento_9_21_acima and rsi_value > rsi_overbought
    strategy.entry("Venda Curta", strategy.short)
if cruzamento_9_21_abaixo and rsi_value < rsi_oversold
    strategy.entry("Compra Curta", strategy.long)
if cruzamento_9_21_acima
    strategy.close("Compra Curta")
if cruzamento_9_21_abaixo
    strategy.close("Venda Curta")

// Entradas e saídas para períodos de 25 e 99
if cruzamento_25_99_acima and rsi_value > rsi_overbought
    strategy.entry("Compra Forte", strategy.long)
if cruzamento_25_99_abaixo and rsi_value < rsi_oversold
    strategy.entry("Venda Forte", strategy.short)
if cruzamento_25_99_acima
    strategy.close("Venda Forte")
if cruzamento_25_99_abaixo
    strategy.close("Compra Forte")


관련

더 많은