RSI 및 MACD 지표를 기반으로 한 거래 전략


생성 날짜: 2024-01-31 16:07:31 마지막으로 수정됨: 2024-01-31 16:07:31
복사: 0 클릭수: 919
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI 및 MACD 지표를 기반으로 한 거래 전략

개요

이 전략은 상대적으로 강한 지수 ((RSI) 와 이동 평균 집적 지수 ((MACD) 를 결합하여 BTC의 거래 기회를 식별합니다. RSI가 30보다 낮고 MACD 라인이 신호 라인보다 낮고 MACD 히스토그램이 100보다 작을 때 더 많이하고 RSI가 80보다 높고 MACD 라인이 신호 라인보다 높고 MACD 히스토그램이 250보다 작을 때 비어 있습니다.

전략 원칙

  1. RSI를 사용하여 시장이 과매매 또는 과매매되는지 판단하십시오. RSI가 30보다 낮으면 과매매 신호로 간주되며 80 이상이면 과매매 신호로 간주됩니다.

  2. MACD 지표의 MACD 라인과 신호 라인의 황금 포크 사다리 (金叉死叉) 를 사용하여 매매 시기를 판단한다. MACD 라인 상의 신호 라인을 통과할 때 구매 신호로; MACD 라인 아래의 신호 라인을 통과할 때 판매 신호로.

  3. RSI와 MACD 지표의 신호를 결합하여 이 전략의 입시 조건을 형성한다.

  4. 추적 스톱을 사용하여 수익을 잠금하고, 추적 스톱은 지분 손실에 따라 실시간으로 업데이트하여 위험을 효과적으로 제어 할 수 있습니다.

우위 분석

  1. 이 전략은 RSI와 MACD 두 지표를 결합하여 가짜 신호를 효과적으로 필터링 할 수 있습니다.

  2. RSI 지표는 시장의 과매매 현상을 효과적으로 판단할 수 있다. MACD 지표는 트렌드의 변화를 포착할 수 있다. 둘을 결합하여 사용하는 효과는 좋다.

  3. 트래킹 스톱을 사용하면 실시간 시장 상황에 따라 스톱을 할 수 있으며, 수익을 최대한 고정하고 위험을 제어할 수 있다.

  4. 전략적 요소가 적고 실행하기 쉽다.

위험 분석

  1. 단일 품종 전략, 품종 자체의 시스템적 위험.

  2. RSI 지표는 분기시장과 하반부에서 반동할 때 가짜 신호를 일으킬 수 있다. MACD 지표는 흔들리는 상황에서도 잘못된 신호를 일으킬 수 있다.

  3. 추적 스톱 손실은 대량 거래에서 깨질 수 있으며, 위험을 통제할 수 없습니다.

  4. 잘못된 매개 변수 설정은 거래 빈도 또는 표 누락을 초래할 수 있다.

최적화 방향

  1. 브린 라인, KD 등과 같은 다른 지표와 결합하여 거래 신호를 발산하는 것을 고려할 수 있다.

  2. 다양한 품종 간의 연관성을 연구하고, 다중 품종 중개 전략을 수립할 수 있다.

  3. 적시 중단, 평균 중단 등으로 손실을 중지하는 전략을 최적화 할 수 있습니다.

  4. 기계학습과 같은 방법을 결합하여 지능을 최적화할 수 있다.

요약하다

이 전략은 RSI와 MACD 지표에 기반한 과매매 과매매를 판단하는 트렌드 추적 전략이다. 이 전략은 기술 지표의 장점을 효과적으로 결합하여 시장의 트렌드 변화를 포착할 수 있다. 동시에, 전략은 간단하고 직접적이며 실행하기 쉽다. 최적화를 통해 이 전략의 적용을 더욱 확장할 수 있다.

전략 소스 코드
/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTC/USDT RSI and MACD Strategy", overlay = true)

// Define the RSI period
rsiPeriod = input(14, "RSI Period")

// Calculate the RSI
rsi = ta.rsi(close, rsiPeriod)

// Define the MACD parameters
macdShort = input(12, "MACD Short Period")
macdLong = input(26, "MACD Long Period")
macdSignal = input(9, "MACD Signal Period")

// Calculate the MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Define the trailing stop level
trailing_stop_loss_factor = input.float(2.50, "Trailing Stop Loss Factor", step = 0.01)

// Define the entry and exit conditions
enterLong = ta.crossover(rsi, 30) and macdLine < signalLine and macdLine < -100
enterShort = ta.crossunder(rsi, 83) and macdLine > signalLine and macdLine > 250

// Submit the orders
if (enterLong)
    strategy.entry("Long", strategy.long)
if (enterShort)
    strategy.entry("Short", strategy.short)

// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// Plot the indicators
plot(rsi, "RSI", color=color.blue)
hline(20, "RSI Lower Level", color=color.green)
hline(80, "RSI Upper Level", color=color.red)
plot(macdLine - signalLine, "MACD Histogram", color=color.red, style=plot.style_histogram)
hline(0, "Zero", color=color.gray)