RSI CCI Williams%R 양적 거래 전략

저자:차오장, 날짜: 2024-01-24 11:18:08
태그:

img

전략 개요

이 전략은 세 가지 분류 지표: RSI, CCI 및 Williams%R를 결합하여 효과적인 거래 신호를 생성합니다. 세 가지 지표 모두 동시에 과소매 또는 과소매 신호를 표시 할 때 구매 또는 판매 신호를 발행합니다. 단일 지표를 사용하는 것과 비교하면이 복합 전략은 더 많은 잘못된 신호를 필터링하고 안정성을 향상시킵니다.

이 전략은 Three Trail Trawler Strategy라고 불립니다. Three Trail은 RSI, CCI 및 Williams%R의 조합을 의미합니다.

전략 논리

이 전략은 주로 거래 결정을 위한 다음과 같은 지표에 의존합니다.

  1. 과잉 매수/ 과잉 판매 수준을 판단하는 RSI 지표
  2. 전환점을 나타내는 CCI 지표
  3. 거래 신호를 추가로 확인하는 Williams%R 지표

RSI가 25보다 낮으면 과판 상태가 나타납니다. RSI가 75보다 높으면 과반 상태가 나타납니다. CCI와 윌리엄스%R 매개 변수에도 같은 논리가 적용됩니다.

세 가지 지표가 동시에 구매 신호를 표시할 때, 즉 RSI < 25, CCI < - 130, Williams % R < - 85, 전략은 길게됩니다. 세 가지 지표가 동시에 판매 신호를 표시할 때, 즉 RSI > 75, CCI > 130, Williams % R > -15, 전략은 짧게됩니다.

이것은 단일 지표에서 잘못된 신호를 피하고 신뢰성을 향상시킵니다. 또한 거래 당 위험과 수익을 제어하기 위해 Stop Loss 및 Take Profit를 구성합니다.

장점

  1. 다중 지표 조합은 거짓 신호를 필터링합니다
    RSI, CCI 및 Williams%R을 결합함으로써 전략은 개별 지표에서 일부 잘못된 신호를 필터링하여 정확도를 향상시킵니다.

  2. 자동 중지 손실/이익 취득 위험 관리 내장된 스톱 로스 및 영리 기능은 자동으로 각 거래에 대한 출구 가격을 설정하여 허용 가능한 한 손실을 제한합니다.

  3. 중장기 거래에 적합합니다 이 전략은 중장기 거래에 더 잘 작동합니다. 지표 조합을 통해 중장기 전환점을 명확하게 식별합니다. 단기 소음과 장기 트렌드를 발견하는 데 약합니다.

  4. 탄탄한 백테스트 데이터
    이 전략은 유동성과 데이터가 풍부한 주요 외환 쌍인 EUR/USD의 45분 바를 사용하며, 불충분한 데이터로 인한 과잉 리스크를 줄입니다.

위험성

  1. 약한 장기 추세 확인
    전략은 반대 신호에 더 의존합니다. 장기적인 경향을 측정하고 추적하는 능력은 제한적입니다. 장기적인 일방 시장에서 수익 잠재력은 제한됩니다.

  2. 단기 변동이 없어 45 분 바와 함께, 전략은 더 빈번한 단기 가격 변동으로 수익 기회를 놓친다. 바 스펜 내에서 더 큰 변동성은 놓친 기회를 초래할 수 있다.

  3. 시스템적 위험
    이 전략 은 주로 EUR/USD 에 적용 됩니다. 세계 외환 시장 을 흔들고 있는 심각한 경제 위기 때, 거래 규칙 이 실패 할 수 있으며, 엄청난 손실 을 입을 수 있습니다.

개선 영역

  1. 트렌드를 따르는 지표를 추가합니다
    MA, Boll 등과 같은 트렌딩 메트릭을 통합하여 장기적인 트렌드 인식에 도움이 되도록 시도하십시오. 일반적인 방향에 따라 포지션을 취하면 승률을 향상시킬 수 있습니다.

  2. 스톱 로스/프로프트 매개 변수를 최적화 최적의 설정을 찾기 위해 최종 수익성에 다양한 스톱 로스/이익 매개 변수의 영향을 평가하기 위해 더 많은 역사적 데이터를 백테스트하십시오. 동적 템플링도 고려하십시오.

  3. 제품 확장
    현재는 주로 EUR/USD에 적용됩니다. 우리는 안정성과 전환성을 조사하기 위해 GBP, JPY, AUD와 같은 다른 주요 통화 쌍에 배치 할 수 있습니다.

결론

3 트레일 트롤러 전략은 RSI, CCI 및 윌리엄스 %R의 조합을 사용하여 과반 구매 / 과반 판매 신호에 대한 가격 반전 지점을 식별합니다. 개별 메트릭에 비해이 멀티 지표 설정은 더 많은 잘못된 신호를 필터링하고 정확도를 향상시킵니다. 자동 스톱 로스 / 수익 취득 기능 또한 거래 위험을 제한하는 데 도움이됩니다. 전반적으로 중장기 거래에 적합한 안정적인 전략이며 양적 시스템에서 귀중한 모듈이 될 수 있습니다. 여전히 장기 트렌드 탐지 및 단기 변동을 포착하는 데 결함이 있습니다. 트렌드 메트릭을 추가하고 출구 매개 변수 및 확장 제품과 같은 정밀 조정 조치는 엔진 시스템에 대한 안정적인 수익으로 전략을 향상시킬 것입니다.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI CCI Williams %R Strategy with TP and SL", overlay=true)

// Input parameters for indicators
rsi_period = input(14, title="RSI Period")
cci_period = input(20, title="CCI Period")
williams_period = input(14, title="Williams %R Period")

// Thresholds for overbought and oversold conditions
rsi_oversold = input(25, title="RSI Oversold Level")
rsi_overbought = input(75, title="RSI Overbought Level")
cci_oversold = input(-130, title="CCI Oversold Level")
cci_overbought = input(130, title="CCI Overbought Level")
williams_oversold = input(-85, title="Williams %R Oversold Level")
williams_overbought = input(-15, title="Williams %R Overbought Level")

// Take profit and stop loss levels as a percentage
take_profit_pct = input(1.2, title="Take Profit (%)") / 100
stop_loss_pct = input(0.45, title="Stop Loss (%)") / 100

// Indicator calculations
rsi = ta.rsi(close, rsi_period)
cci = ta.cci(close, cci_period)
highestHigh = ta.highest(high, williams_period)
lowestLow = ta.lowest(low, williams_period)
williamsR = (highestHigh - close) / (highestHigh - lowestLow) * -100

// Entry conditions
longCondition = rsi < rsi_oversold and cci < cci_oversold and williamsR < williams_oversold and strategy.position_size == 0
shortCondition = rsi > rsi_overbought and cci > cci_overbought and williamsR > williams_overbought and strategy.position_size == 0

// Execute strategy entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit or Stop Loss Long", "Long", limit=close * (1 + take_profit_pct), stop=close * (1 - stop_loss_pct))

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit or Stop Loss Short", "Short", limit=close * (1 - take_profit_pct), stop=close * (1 + stop_loss_pct))

// Plot the signals on the chart
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, text="SELL")

// Plot the indicators for visualization
plot(rsi, title="RSI", color=color.blue)
plot(cci, title="CCI", color=color.purple)
plot(williamsR, title="Williams %R", color=color.orange)

더 많은