모멘텀 역전 RSI 전략

저자:차오장, 날짜: 2023년 11월 15일 16:29:25
태그:

img

전반적인 설명

이것은 상대 강도 지표 (RSI) 인디케이터를 기반으로 한 단기 거래 전략이다. 그것은 과소득 및 과소득 수준을 식별하기 위해 RSI를 활용하고 잘못된 신호를 피하기 위해 촛불 필터링을 결합하고, 반전 지점에서 장과 단위 포지션을 입력합니다. 전략은 극단적인 과소득 또는 과소득 조건 후에 평균 반전 기회를 포착하는 것을 목표로합니다.

전략 설명

논리

첫째, RSI 지표는 7로 설정된 기간의 폐쇄 가격에 기초하여 계산됩니다. 과잉 구매 수준은 70로 설정되고 과잉 판매 수준은 30로 설정됩니다. RSI가 30을 넘을 때 구매 신호가 생성되고 RSI가 70을 넘을 때 판매 신호가 생성됩니다.

거짓 신호를 필터링하기 위해, 촛불 몸의 크기는 거래 신호가 트리거될 때 정상적인 범위의 1-3배로 확장되어야 합니다. 여기서 전략은 신호를 확인하기 위해 1-5개의 연속적인 RSI 바가 지나치게 구매되거나 지나치게 팔린 수준에 머무르는 것을 요구하며, 몸의 확장은 4배로 설정됩니다.

RSI가 5개의 연속 바를 30 이하로 유지되면, 긴 신호가 생성된다. 다음 촛불이 4배 이상 증가하는 상승세를 보이는 경우, 긴 포지션이 실행된다. RSI가 5개의 연속 바를 70 이상으로 유지되면, 짧은 신호가 생성된다. 다음 촛불이 4배 이상 증가하는 하락세를 보이는 경우, 짧은 포지션이 실행된다.

이윤을 확보하기 위해, 현재 촛불 방향이 위치 방향과 일치하고 몸체가 2배 확장될 때 포지션은 닫을 것입니다.

장점

  1. 극한 수준 이후의 평균 회전 수치를 캡처하는 것

RSI는 과잉 구매 및 과잉 판매 조건을 잘 파악합니다. 주가가 극단적 인 수준에 도달하면 인기를 끌 가능성이 높으며 극단적 인 수준은 종종 다가오는 반전을 의미합니다.이 전략은 전환점에 그러한 기회를 포착 할 수 있습니다.

  1. 촛불 필터링은 잘못된 신호를 감소시킵니다.

순전히 RSI 신호에 기반한 거래는 많은 잘못된 신호로 이어질 수 있습니다. 이 전략은 촛불 몸의 확장을 필터로 통합하여, 격변 지점 주위에 확대 된 몸이 나타날 때 포지션을 입력하여 혼란스러운 시장에서 발생하는 윙사 (whipssa) 를 피합니다.

  1. 연속적인 RSI 바는 신뢰성을 높입니다.

과잉 구매 또는 과잉 판매 구역에서 1-5 개의 연속 RSI 바를 요구하는 것은 확인으로 작용하며, 때때로 부적절한 바로부터 잘못된 신호를 피하고 신호 신뢰성을 향상시킵니다.

  1. 유연한 몸집 확장 인수

몸집 확장 인수는 다른 제품에 맞게 조정될 수 있다. 큰 변동이 있는 주식에는 기준이 완화될 수 있고, 좁은 범위의 주식에는 엄격하게 조정될 수 있다. 이것은 다른 거래 제품에 대한 유연한 조정을 허용한다.

위험성

  1. 잠재적인 부착

매개 변수 설정에는 몇 가지 고유 한 제한이 있습니다. 다른 제품 및 시간 기간은 매개 변수 조정이 필요할 수 있습니다. 고정된 설정을 사용하면 과도한 부착 문제가 발생할 수 있습니다.

  1. 을 식별하는 정확도가 낮습니다.

RSI 자체는 몇 가지 지체 특성을 가지고 있습니다. 신체 확장과 결합하면 조기에 위치가 빠져 나갑니다. 따라서 정확한 바닥이나 꼭대기를 잡는 정확도는 일반적으로 매우 높지 않습니다.

  1. 다양한 시장에서 잠재적으로 긴 보유 기간

범위 시장에서 RSI는 긴 보유 기간을 초래하는 빈번한 구매 및 판매 신호를 유발할 수 있습니다. 이러한 경우 매개 변수를 조정하거나 전략을 일시 중단해야합니다.

  1. 적절한 위치 사이즈 전략이 필요합니다.

단기적인 거래 전략으로서, 적절한 포지션 사이징 전략, 예를 들어 이동 스톱 로스, 영업 취득 등이 결합되어 수익을 확보하고 위험을 제어해야 합니다.

개선 방법

  1. 다른 매개 변수 집합을 테스트

RSI 매개 변수들의 다른 조합을 테스트할 수 있습니다. 예를 들어, 기간, 과잉 구매/ 과잉 판매 수준, 촛불 필터 등 다양한 상품에 최적화된 매개 변수를 찾기 위해 테스트할 수 있습니다.

  1. 스톱 로스를 추가하고 이윤을 취합니다.

이윤을 잠금하기 위해 이동 또는 비율 스톱 손실을 추가 할 수 있습니다. 또는 ATR 값 또는 Donchain 채널 등을 기반으로 스톱 손실을 설정합니다.

  1. 필터로 다른 지표를 조합합니다.

유효하지 않은 브레이크오웃의 잘못된 신호를 피하기 위해 MACD, KDJ 및 기타 지표에 기반한 조건이 추가될 수 있습니다. 변동성 지표는 또한 트렌드의 반전 신호를 식별하는 데 도움이 될 수 있습니다.

  1. 트렌드 편향을 추가합니다

트렌드 편향을 측정하기 위해 이동 평균을 사용하십시오. 트렌드에 부합하는 거래 신호만 고려하십시오. 전략은 범위 제한 시장에서 일시 중단 될 수 있습니다. 트렌드 강도 지표는 필터로도 사용할 수 있습니다.

결론

요약하면,이 RSI 역전 전략은 자신의 장단점을 가진 전형적인 단기 거래 전략입니다. 주요 장점은 극한 이후의 인기를 잡는 데 있으며 주요 위험은 낮은 신호 정확성과 범위에서의 긴 보유 기간에서 발생합니다. 우리는 더 많은 제품과 시장 조건에 적응하고 더 안정적인 결과를 달성하기 위해 매개 변수를 조정하고 필터를 추가하고 정지를 최적화하여 전략을 향상시킬 수 있습니다.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0)

//Settings
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
sps = 0
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2038, defval = 2018, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//Signals
up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4
dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4
exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    sps := 1

if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()
    sps := 0
    

더 많은