이것은 RSI 지표를 사용하여 오스실레이션 시장을 식별하고 시장 오스실레이션 중에 트렌드 역전 기회를 포착하는 거래 전략입니다. 전략은 빠른 RSI 지표에 의해 가격이 오스실레이션 구역에 진입했는지 판단하고 촛불체와 빠른 RSI 신호와 결합하여 진입 시기를 결정합니다.
이 전략은 주로 다음과 같은 원칙에 따라 작동합니다.
특히, 전략은 가격이 30-70 미리 설정된 오스실레이션 범위에 진입했는지 판단하기 위해 이중 기간 RSI를 사용합니다. 또한 거래 신호를 생성하기 전에 촛불 몸의 1/4 또는 1/2를 뚫어야합니다. 이러한 이중 조건 검사를 통해 가짜 신호는 실제 오스실레이션이 발생했을 때만 시장에 진입하는 것을 보장하기 위해 효과적으로 필터링 할 수 있습니다.
이 전략은 다음과 같은 중요한 장점을 보여줍니다.
또한 주의해야 할 몇 가지 위험 요소가 있습니다.
리스크를 제어하기 위해 매개 변수 조합, 실시간 거래 검증 및 스톱 로스 메커니즘을 조정하는 것이 좋습니다.
더 많은 최적화를 할 수 있습니다.
다중 지표 통합, 적응적 매개 변수 조정 및 알고 거래와 같은 기술을 통해 전략 안정성과 수익성은 다음 단계로 올라갈 수 있습니다.
급변하는 RSI 거래 전략은 급변하는 RSI와 이중 필터 메커니즘을 통해 가격 변동을 식별하고 출입 시기를 결정합니다. 심도 있는 연구와 응용을 가치가있는 효과적인 전략입니다. 실제로는 위험을 모니터링하고 전략의 효율성을 높이기 위해 다차원적 최적화가 필요합니다.
/*backtest start: 2023-01-07 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's FRSI Strategy v1.22", shorttitle = "FRSI str 1.22", overlay = true ) //Settings uprsiperiod = input(2, defval = 2, minval = 2, maxval = 50, title = "RSI UP Period") dnrsiperiod = input(9, defval = 9, minval = 2, maxval = 50, title = "RSI DN 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(2018, 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), uprsiperiod) fastdown = rma(-min(change(rsisrc), 0), dnrsiperiod) 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) sps := 1 if exit strategy.close_all() sps := 0