MACD와 RSI를 결합한 장기 거래 전략

MACD RSI
생성 날짜: 2024-04-29 14:31:53 마지막으로 수정됨: 2024-04-29 14:31:53
복사: 3 클릭수: 820
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

MACD와 RSI를 결합한 장기 거래 전략

개요

이 전략은 스크립트 전문가 인 Snehashish에 의해 정교하게 설계되었으며, 시장에서 가장 좋은 입구와 출구를 식별하기 위해 이동 평균 분산 지표 ((MACD) 와 상대적으로 약한 지수 ((RSI) 의 장점을 혁신적으로 결합합니다. 이 방법은 5K 선 전에 RSI가 시장이 초과 상태임을 표시하는 경우 MACD 라인이 신호 라인을 가로질러 정확하게 다자 거래에 진입하도록 정교하게 설계되었습니다.

평점 포지션의 경우, 이 전략은 두 가지 중요한 조건을 사용하여 탈퇴 신호를 낸다. 첫째, MACD 직각이 0보다 높고 MACD 라인이 신호선 아래로 지나면 거래가 종료되며 상승 동력이 역전될 수 있음을 나타냅니다. 둘째, 5K 라인 이전에 RSI가 초과 상태에서 발견되면 탈퇴 신호가 발생하며 시장이 꼭대기에 도달했을 수 있음을 나타냅니다.

Snehashish의 방법은 이러한 기술적 지표를 교묘하게 결합하여 특정 조건에서 MACD 및 RSI 지표의 확인을 기다리는 것으로 잡음을 필터링하고 성공 확률이 높은 거래를 목표로합니다. 이 전략의 조합은 입출소를 최적화하여 지표의 장점을 활용하여 시장 변동과 관련된 위험을 줄여 거래의 수익성을 높이는 것입니다.

전략 원칙

이 전략의 핵심 원칙은 MACD와 RSI의 두 가지 기술 지표를 결합하여 시장의 전환점을 더 높은 정밀도로 포착하는 것입니다. RSI가 시장이 가장 최근의 K 라인에서 과매매되고 MACD 라인이 신호 라인을 상향으로 건너면 전략은 다중 거래에 진입합니다.

평소 위치의 경우, 전략은 MACD와 RSI가 보여주는 잠재적인 추세 역전 신호에 주목한다. MACD 직각이 0보다 높고 MACD 선이 신호선을 아래로 통과하면 전략은 평소된다. 또한, RSI가 시장이 초과 구매 수준을 달성 한 경우 평소 위치를 촉발합니다. 이러한 조건은 종합적으로 가격이 상위, 상위 동작이 약해질 수있을 때 전략은 상위 위치를 닫습니다.

전체적으로, MACD와 RSI가 제공하는 신호를 조합하여, 이 전략은 트렌드가 시작될 때 반전 징후를 볼 때 포지션을 열고, 트렌드가 끝날 때 포지션을 풀기 위해 노력하여 입출소를 최적화하여 전반적인 거래 성능을 향상시킵니다.

전략적 이점

  1. 이 전략은 MACD와 RSI를 결합하여 시장의 전환점을 더 정확하게 포착하여 진입 및 출퇴근 시간을 최적화합니다.
  2. RSI는 시장의 과매매와 과매매 상태를 확인하는 데 사용되며, MACD 라인은 신호 라인을 가로질러 포지션 개시 신호를 제공하며, 두 지표의 조합은 가격 움직임을 더 안정적으로 예측할 수 있습니다.
  3. 포지션을 개시하기 전에 RSI가 초과 상태를 확인하는 것을 기다리는 것은 하향 추세에서 조기 입주를 피할 수 있다.
  4. MACD 직각은 0보다 높으며 MACD 선이 아래로 신호선을 통과할 때 평소되어 상승 추세 말기에 상위 포지션을 제때 종료하여 잠재적인 회수 위험을 피할 수 있다.
  5. RSI의 과매매 및 과매매 마이너스, MACD의 빠른 느린 선 주기와 같은 유연한 변수 설정은 사용자가 자신의 위험 선호와 시장 특성에 따라 전략을 최적화 할 수 있습니다.

전략적 위험

  1. 불안정한 시장에서 MACD와 RSI의 빈번한 신호는 과도한 거래로 이어지고 거래 비용과 손실을 증가시킬 수 있습니다.
  2. 시장의 추세가 강하면 RSI가 장기간 오버 바이 영역에 머물러 전략이 놓친 부분을 상승시킬 수 있습니다.
  3. 이 전략은 주로 지연성 지표에 의존하며, 시장이 급격히 역전되면 적시에 포지션을 조정할 수 없다.
  4. 매개 변수 설정은 전략의 성능에 큰 영향을 미치며, 잘못된 매개 변수는 많은 가짜 신호를 유발하여 전략의 효율성을 떨어뜨릴 수 있다.

이러한 위험을 완화하기 위해, 필터링 조건으로 다른 선도적 지표를 도입하고, 다른 시장 상황에 맞게 파라미터를 최적화하고, 단일 거래 위험을 제어하기 위해 적절한 스톱 및 스톱을 설정하는 것이 고려될 수 있습니다.

전략 최적화 방향

  1. 다른 기술 지표들, 예를 들어, 브린 밴드, 평균선 등이 도입되어 추가적인 트렌드 확인과 지지/저항 지점을 판단하여 신호의 신뢰성을 향상시킨다.
  2. RSI와 MACD의 파라미터를 최적화하여 현재 시장 상황과 목표 자산에 가장 적합한 파라미터 조합을 찾아 거짓 신호를 줄입니다.
  3. 거래량, 변동률 등과 같은 시장 환경 분석을 추가하여 다양한 시장 상태에 따라 전략 매개 변수를 동적으로 조정하여 적응력을 향상시킵니다.
  4. 신호의 강도와 위험 수준에 따라 포지션 크기를 조정하는 것과 같은 적절한 포지션 관리 규칙을 설정하여 전체적인 위험 을 제어하십시오.
  5. 정기적으로 전략의 성과를 재검토하고 평가하고, 시장의 변화에 따라 전략의 논리와 매개 변수를 적시에 조정하여 전략의 효과와 안정성을 보장합니다.

이러한 최적화 조치는 전략의 리스크 조정 수익률을 더 높여 변화하는 시장 환경에 더 잘 적응할 수 있습니다.

요약하다

Snehashish이 설계한 이 긴 라인 거래 전략은 MACD와 RSI의 두 가지 기술 지표를 교묘하게 결합하여 시장의 전환점을 더 정확하게 포착하고, 진입과 출퇴근을 최적화한다. RSI가 오버셀 상태를 확인하는 것을 기다리는 것, 그리고 MACD 라인을 통해 신호 라인을 통해 포지션 개시 신호로, 전략은 트렌드 초반의 역전 징후가 있을 때 적시에 진입할 수 있다. 동시에, MACD 직선과 신호 라인의 상대적인 위치를 이용하고, RSI의 오버 바이 신호는, 전략은 상행 트렌드가 끝날 때 적시에 포지션을 평정할 수 있다.

이 전략은 좋은 잠재력을 보여 주지만, 여전히 과잉 거래와 강한 추세의 신호 지연과 같은 위험이 있습니다. 이러한 위험을 완화하기 위해, 다른 지표의 도입, 최적화된 매개 변수 설정, 시장 환경 분석의 강화, 포지션 관리의 개선과 같은 조치를 고려할 수 있습니다.

전체적으로, MACD와 RSI를 결합한 이 긴 라인 거래 전략은 투자자에게 시장의 전환점을 포착하고 출구 시기를 최적화 할 수있는 신뢰할 수있는 프레임 워크를 제공합니다. 추가적인 최적화 및 개선으로 이 전략은 변화하는 시장에서 투자자에게 강력한 도구가 될 수 있으며, 안정적인 장기 수익을 창출 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// snehashish 2024
strategy(title='spl Long Strategy', initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, currency='USD', overlay=true)

//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input.bool(true, title='Enable Long Strategy', group='SL/TP For Long Strategy', inline='1')
long_stoploss_value = input.float(50, title='Stoploss %', minval=0, group='SL/TP For Long Strategy', inline='2')
long_takeprofit_value = input.float(50, title='Take Profit %', minval=0, group='SL/TP For Long Strategy', inline='2')

// Enable Short Strategy
enable_short_strategy = input.bool(true, title='Enable Short Strategy', group='SL/TP For Short Strategy', inline='3')
short_stoploss_value = input.float(50, title='Stoploss %', minval=0, group='SL/TP For Short Strategy', inline='4')
short_takeprofit_value = input.float(50, title='Take Profit %', minval=0, group='SL/TP For Short Strategy', inline='4')

// Date Range
start_date = input.int(1, title='Start Date', minval=1, maxval=31, group='Date Range', inline='1')
start_month = input.int(1, title='Start Month', minval=1, maxval=12, group='Date Range', inline='2')
start_year = input.int(2023, title='Start Year', minval=1800, maxval=3000, group='Date Range', inline='3')
end_date = input.int(1, title='End Date', minval=1, maxval=31, group='Date Range', inline='4')
end_month = input.int(12, title='End Month', minval=1, maxval=12, group='Date Range', inline='5')
end_year = input.int(2077, title='End Year', minval=1800, maxval=3000, group='Date Range', inline='6')
in_date_range = true

//// Indicator Inputs
// RSI
rsi_over_sold = input.int(30, title='Over Sold Level', group='RSI')
rsi_over_bought = input.int(70, title='Over Bought Level', group='RSI')
rsi_length = input.int(14, title='RSI Length', group='RSI')
rsi = ta.rsi(close, rsi_length)

// MACD
fast_ma = input.int(12, title='FastMA Length', group='MACD')
slow_ma = input.int(26, title='SlowMA Length', group='MACD')
signal_length = input.int(9, title='Signal Length', group='MACD')
[macd_line, signal_line, _] = ta.macd(close, fast_ma, slow_ma, signal_length)

//// Strategy Logic
was_over_sold = ta.barssince(rsi <= rsi_over_sold) <= 10
was_over_bought = ta.barssince(rsi >= rsi_over_bought) <= 10
crossover_bull = ta.crossover(macd_line, signal_line)
crossover_bear = ta.crossunder(macd_line, signal_line)
buy_signal = was_over_sold and crossover_bull and in_date_range
sell_signal = was_over_bought and crossover_bear and in_date_range

// Long Strategy
if (enable_long_strategy and buy_signal)
    strategy.entry('Long', strategy.long)
    strategy.exit('Long SL/TP', from_entry='Long', stop=strategy.position_avg_price * (1 - long_stoploss_value / 100), limit=strategy.position_avg_price * (1 + long_takeprofit_value / 100))

// Short Strategy
if (enable_short_strategy and sell_signal)
    strategy.entry('Short', strategy.short)
    strategy.exit('Short SL/TP', from_entry='Short', stop=strategy.position_avg_price * (1 + short_stoploss_value / 100), limit=strategy.position_avg_price * (1 - short_takeprofit_value / 100))