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

RSI와 MACD 결합된 장기 단기 전략

저자:차오장, 날짜: 2024-05-17 11:04:03
태그:RSIMACD

img

전반적인 설명

이 전략은 상대적 강도 지수 (RSI) 와 이동 평균 컨버전스 디버전스 (MACD) 라는 두 가지 기술 지표를 결합합니다. 그것은 과소득 및 과소득 조건을 결정하기 위해 RSI를 사용하고, 트렌드 방향을 식별하기 위해 MACD를 사용하여 완전한 장기 단위 전략을 형성합니다. RSI가 과소득되면 판매 신호가 생성되고 MACD 빠른 라인이 느린 라인을 넘을 때 포지션은 닫습니다. RSI가 과소득되면 구매 신호가 생성되며 MACD 빠른 라인이 느린 라인을 넘을 때 포지션은 닫습니다. 스톱-러스 포인트는 자산의 평균 가격 변화의 절반을 계산하여 설정됩니다.

전략 원칙

  1. 과잉 구매 및 과잉 판매 조건을 결정하기 위해 RSI 지표를 계산합니다.
    • RSI가 70보다 높고 70선을 넘으면 판매 신호가 생성됩니다.
    • RSI가 30 이하이고 30선을 넘으면 구매 신호가 생성됩니다.
  2. 트렌드 방향을 확인하기 위한 MACD 지표를 계산합니다.
    • MACD 빠른 라인이 느린 라인의 위를 넘을 때, 짧은 포지션을 닫는 신호가 생성됩니다.
    • MACD 빠른 선이 느린 선 아래를 넘을 때, 긴 포지션을 닫는 신호가 생성됩니다.
  3. 스톱 로스 포인트를 설정합니다:
    • 자산의 평균 가격 변화를 계산하고 그 절반을 스톱-러스 포인트로 취합니다.

RSI를 사용하여 과소득 및 과소득 조건을 결정함으로써 전략은 반전의 시작에 입력됩니다. 트렌드 방향을 식별하기 위해 MACD를 사용하여 트렌드의 시작에서 위치를 닫고 효과적으로 트렌드를 캡처합니다. 두 지표는 서로를 보완하여 완전한 거래 시스템을 형성합니다.

전략적 장점

  1. 이 전략은 과잉 구매/ 과잉 판매와 트렌드를 따르는 접근 방식을 결합하여 트렌드가 형성될 때 트렌드 전환의 시작과 적절한 시기에 탈퇴하여 시장 변동으로 인한 손실을 효과적으로 피할 수 있습니다.
  2. 스톱-러스 포인트는 자산의 변동성 특성에 따라 설정되며, 마감량을 통제하고 자본 효율성을 향상시키는 데 도움이 됩니다.
  3. 코드 로직은 명확하고 모듈형 프로그래밍 접근 방식을 사용하여 이해하기 쉽고 최적화 할 수 있습니다.

전략 위험

  1. RSI와 MACD 매개 변수의 선택은 전략 성과에 상당한 영향을 미치며, 다른 자산과 시간 프레임에 대해 매개 변수 최적화가 필요할 수 있습니다.
  2. 예상치 못한 사건으로 인한 급격한 변화와 같은 극단적인 시장 조건에서 전략은 상당한 마감을 겪을 수 있습니다.
  3. 이 전략은 범위를 제한하는 시장에서 좋은 성과를 거두지 못할 수 있으며, 결과적으로 빈번한 거래와 높은 거래 비용이 발생할 수 있습니다.

전략 최적화 방향

  1. 현재 자산과 시간 프레임에 가장 적합한 조합을 찾기 위해 RSI와 MACD의 매개 변수를 최적화하여 전략의 안정성과 수익성을 향상시킵니다.
  2. 거래 빈도를 줄이고 신호 품질을 향상시키기 위해 볼륨 및 변동성 지표와 같은 더 많은 필터링 조건을 추가하십시오.
  3. 시장 동향과 성과에 따라 포지션을 동적으로 조정하고 마감량을 제어하는 포지션 관리 모듈을 도입합니다.
  4. 트렌드 추종 및 평균 역전과 같은 다른 전략과 결합하여 멀티 전략 포트폴리오를 형성하고 적응력을 향상시킵니다.

요약

이 전략은 과반 구매 및 과반 판매 조건을 결정하기 위해 RSI와 트렌드 방향을 파악하기 위해 MACD를 사용하여 완전한 장기-단계 거래 시스템을 형성합니다. 전략 논리는 명확하고 장점은 분명하지만 특정 위험도 있습니다. 매개 변수 최적화, 필터링 조건 추가, 위치 관리 및 다른 전략과 결합하여 이 전략의 성능을 더욱 향상시켜 견고한 거래 전략이 될 수 있습니다.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="RSI & MACD Strategy", shorttitle="RSI & MACD", overlay=true)

// Définition des entrées
rsi_length = 14
rsi_overbought = 70
rsi_oversold = 30
macd_fast_length = 12
macd_slow_length = 26
macd_signal_length = 9

// Fonction pour calculer le RSI
calculate_rsi(source, length) =>
    price_change = ta.change(source)
    up = ta.rma(price_change > 0 ? price_change : 0, length)
    down = ta.rma(price_change < 0 ? -price_change : 0, length)
    rs = up / down
    rsi = 100 - (100 / (1 + rs))
    rsi

// Fonction pour calculer le MACD
calculate_macd(source, fast_length, slow_length, signal_length) =>
    fast_ma = ta.ema(source, fast_length)
    slow_ma = ta.ema(source, slow_length)
    macd = fast_ma - slow_ma
    signal = ta.ema(macd, signal_length)
    hist = macd - signal
    [macd, signal, hist]

// Calcul des indicateurs
rsi_value = calculate_rsi(close, rsi_length)
[macd_line, signal_line, _] = calculate_macd(close, macd_fast_length, macd_slow_length, macd_signal_length)

// Conditions d'entrée et de sortie
// Entrée en vente : RSI passe de >= 70 à < 70
sell_entry_condition = ta.crossunder(rsi_value, rsi_overbought)

// Sortie en vente : MACD fast MA croise au-dessus de slow MA
sell_exit_condition = ta.crossover(macd_line, signal_line)

// Entrée en achat : RSI passe de <= 30 à > 30
buy_entry_condition = ta.crossover(rsi_value, rsi_oversold)

// Sortie en achat : MACD fast MA croise en-dessous de slow MA
buy_exit_condition = ta.crossunder(macd_line, signal_line)

// Affichage des signaux sur le graphique
plotshape(series=sell_entry_condition, title="Sell Entry", location=location.belowbar, color=color.red, style=shape.triangleup, size=size.small)
plotshape(series=sell_exit_condition, title="Sell Exit", location=location.abovebar, color=color.green, style=shape.triangledown, size=size.small)
plotshape(series=buy_entry_condition, title="Buy Entry", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=buy_exit_condition, title="Buy Exit", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small)

// Entrées et sorties de la stratégie
if (sell_entry_condition)
    strategy.entry("Short", strategy.short)
    
if (sell_exit_condition)
    strategy.close("Short")

if (buy_entry_condition)
    strategy.entry("Long", strategy.long)
    
if (buy_exit_condition)
    strategy.close("Long")


관련

더 많은