이 전략은 RSI 신호를 확인함으로써 중추점 반전 전략을 상대적 강도 지표 (RSI) 지표와 결합하여 중추 수준에서 잠재적 인 트렌드 반전 기회를 탐지합니다.
이 전략은 먼저 주요 지지 및 저항 수준을 계산하여 왼쪽과 오른쪽으로 여러 바를 통해 가장 높은 피보트 및 가장 낮은 피보트를 찾기 위해 계산합니다. 피보트 레벨이 설정되면 RSI가 과잉 구매 또는 과잉 판매 조건을 충족하는지 여부를 추가로 검사합니다. 구체적으로, RSI가 저항에서 과잉 판매 라인 아래에 있다면, 긴 진입에 과잉 판매로 간주됩니다. RSI가 지원에서 과잉 구매 라인 위에 있다면, 짧은 진입에 과잉 구매로 간주됩니다. 이것은 RSI 필터를 사용하여 잘못된 브레이크와 트렌드 반전 지점에서 더 나은 진입 타이밍을 식별 할 수 있습니다.
코드의 세부 사항은 다음과 같습니다.
이 전략의 주요 장점은 다음과 같습니다.
트렌드 확인: RSI는 가짜 브레이크를 필터링하고 일시적 인 인기를 도모하는 동안 잘못된 항목을 피합니다.
위험 관리: 더 나은 위험 관리를 위해 주요 지원 및 저항 근처에 중지가 배치됩니다.
다재다능성: 다양한 제품과 시간대에 적용됩니다.
단순성: 간단한 구현을 위한 최소한의 지표와 매개 변수.
데이터 효율성: 데이터 품질에 민감하지 않은 OHLC 데이터만 필요합니다.
잠재적인 위험은 다음과 같습니다.
피보트 실패 위험: 거대한 시장 변동 중에 핵심 수준이 깨질 수 있으며 전략 실패를 유발할 수 있습니다. 피보트 범위를 넓히기 위해 룩백 기간을 조정함으로써 이를 완화 할 수 있습니다.
RSI 격차 위험: RSI는 격차 시장에서 과잉 구매 / 과잉 판매에 따라 격차하고 비효율화 될 수 있습니다. RSI 매개 변수를 조정하고 RSI 신호를 검증하기 위해 추가 필터를 추가 할 수 있습니다.
스톱 로스 위험: 더 큰 스톱 로스 거리가 도움이 될 수 있지만 이익과 위험을 균형 잡는 것이 필요합니다.
마감 위험: 전략은 모든 틱에서 실행되며 불리한 반전 시 마감에 직면 할 수 있습니다. 마감은 위험 관리로 제어 할 수 있습니다.
이 전략은 몇 가지 측면에서 개선될 수 있습니다.
다른 왼쪽/우측 뷰백 기간을 테스트하고 정확도를 높이기 위해 필터를 추가하여 피보트 계산을 최적화하십시오.
과잉 구매/ 과잉 판매를 더 잘 감지하기 위해 RSI 매개 변수를 최적화합니다. 다른 길이와 임계 수준을 테스트하십시오.
변동성 지표와 같은 불안정한 시장에서 휘파람을 피하기 위해 추가 필터를 추가하십시오.
수익과 위험을 균형을 맞추기 위해 정지를 최적화하십시오. 후속 정지 및 다른 동적 메커니즘을 고려하십시오.
스토리 데이터 분석에 기초한 통계적 스톱을 사용하여 스톱 손실 범위를 결정합니다.
복수의 기간을 사용하여 승률을 높이기 위해 다중 시간 프레임 확인을 추가합니다.
트렌드 RSI 전략은 잠재적인 트렌드 전환점을 식별하고 최적의 엔트리를 찾기 위해 피보트 포인트와 RSI를 결합합니다. 피보트 또는 RSI와 같은 단일 기술을 사용하는 것과 비교하면이 전략은 견고성과 일관성을 향상시킵니다. 매개 변수 및 필터에 대한 추가 최적화는 승률과 위험 조정 수익을 향상시킬 수 있습니다. 전반적으로 단기 트렌드 역전을 거래하는 실용적인 시스템입니다.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-07 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Pivot Point Reversal + RSI Strategy", shorttitle = 'PP + RSI Strategy', overlay=true) //////////// // Inputs // leftBars = input(3, title = 'PP - Left Bars') rightBars = input(3, title = 'PP - Right Bars') rsi_length = input(14, title = "RSI - Length") rsi_long = input(70, title = "RSI - Overbought level") rsi_short = input(30, title = "RSI - Overold level") ////////////////// // Calculations // // Pivot Points swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) // Pivot High swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) // Pivot Low swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) // RSI rsi = rsi(close, 14) ////////////// // STRATEGY // if (le and rsi[rightBars] < rsi_long ) strategy.entry("PivRevLE", strategy.long, comment = "PivRSI Long", stop = hprice + syminfo.mintick) if (se and rsi[rightBars] > rsi_short) strategy.entry("PivRevSE", strategy.short, comment = "PivRSI Short", stop = lprice - syminfo.mintick)