이 전략은 핵심 지지부진 역전 전략과 상대적으로 강한 지수 (RSI) 를 결합하여 지지부진이 형성될 때 RSI 신호를 확인하여 잠재적인 트렌드 역전 기회를 발견합니다.
이 전략은 먼저 중요한 지원 저항 수준을 계산합니다. 즉, 왼쪽과 왼쪽의 여러 K 라인을 보고 가장 높은 가격의 지원 수준과 가장 낮은 가격의 저항 수준을 얻습니다. 지원 저항 수준이 형성되면 RSI 지표 값이 오버 바이 오버 세의 조건에 부합하는지 여부를 추가로 검사합니다.
코드는 다음과 같습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
트렌드 검증: RSI 지표는 가짜 브레이크를 필터링하여 임시 조정에서 잘못된 입구를 방지합니다.
위험 제어: 위험 제어에 도움이 되는 중요한 지지 저항 근처의 스톱 로즈 설정
범용성: 다양한 품종과 시간주기에 적합하다
실행이 간편합니다. 지표와 파라미터가 덜 설정되어 실행이 쉽습니다.
낮은 데이터 요구: OHLC만 필요하며, 데이터 품질에 대한 요구가 높지 않습니다.
이 전략에는 다음과 같은 위험도 있습니다.
지지부진의 실패 위험: 시장이 급격하게 변할 때, 원래의 지지부진이 돌파되어 전략 실패로 이어질 수 있다. 변수를 적절히 넓혀 지지부진의 범위를 조정함으로써 이 위험을 줄일 수 있다.
RSI 분산 위험: 불안정한 상황에서 RSI가 분산 될 수 있으며, 과매매가 무효로 판단됩니다. RSI 매개 변수를 적절히 조정하거나 RSI 신호를 검증하기 위해 추가 조건을 추가 할 수 있습니다.
스톱로드는 리스크가 가려져 있다: 트렌드 운행 중에 스톱로드는 파격되어 손실이 확대될 가능성이 있다. 스톱로드 거리는 적절히 느려질 수 있다. 하지만 트렌드 수익과 리스크 관리가 균형을 잡아야 한다.
회수 위험: 이 전략은 단계적으로 실행되며, 트렌드 반전이 좋지 않을 경우 일정 회수가 발생할 수 있다. 회수를 위험 관리로 제어할 수 있다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
지원 저항 지점 계산 파라미터를 최적화하고 위치 정확도를 개선한다. 다른 좌우 관점을 테스트하거나 조건 필터를 추가할 수 있다.
RSI 파라미터를 최적화하여 오버 바이 오버 소드 판단의 정확도를 개선한다. 다양한 RSI 길이를 테스트할 수 있으며, 오버 바이 오버 소드 라인의 위치를 테스트할 수 있다.
추가적인 검증 조건이 추가되어, 충격적인 상황 속에서도 을 피한다. 예를 들어, 변동률 지표와 결합한다.
트레일링 스톱 (trailing stop) 과 같은 동적 스톱 방법을 도입할 수 있다.
통계적 분석에 기반한 스톱로드를 도입하고, 역사적인 데이터에 기반한 계산을 통해 스톱로드 범위를 결정한다.
여러 시기를 결합하여 검증하고, 여러 시기를 상호 검증하여 승률을 높여라.
이 순서는 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)