RSI 기반 전략


생성 날짜: 2023-11-15 16:29:25 마지막으로 수정됨: 2023-11-15 16:29:25
복사: 0 클릭수: 678
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI 기반 전략

개요

이 전략은 상대적으로 약한 지표 ((RSI) 를 기반으로 한 짧은 라인 거래 전략이다. RSI 지표를 사용하여 오버 바이 오버 소드 범위를 식별하고 K 라인 엔티티와 결합하여 가짜 신호를 필터링하여 전환점에 구매 및 판매 작업을 수행한다. 전략은 극단적인 오버 바이 오버 소드 상태 이후의 반동 기회를 포착하는 것을 추구한다.

전략 설명

원칙

먼저 RSI 지표를 계산하고, 7일 사이클을 설정하여 7일 사이클을 설정하여 7일 사이클을 설정한 후, 30일 사이클을 설정하고, 70일 사이클을 설정합니다. RSI 상위 30선을 통과하면 구매 신호가 발생하고, 70선을 통과하면 판매 신호가 발생합니다.

가짜 신호를 필터링하기 위해, K선 개체가 일반의 1~3배의 크기를 확대하도록 요구하면 거래 신호가 트리거됩니다. RSI 1~5개의 K선들이 연속적으로 오버 바이 오버 셀 범위에 있는 신호를 확인하기 위해 사용되며, 개체의 확대 배수는 4배로 설정됩니다.

RSI가 연속적으로 5개의 K선이 30보다 낮으면 구매 신호가 발생하고, K선이 4배 이상 확대되면 구매 동작을 수행한다. RSI가 연속적으로 5개의 K선이 70보다 높으면 판매 신호가 발생하고, K선이 4배 이상 확대되면 판매 동작을 수행한다.

이윤을 잠금하기 위해, 지위 방향이 현재 K선 방향과 일치할 때, 2배의 개체 확대 시 평형 지위 중지한다.

장점

  1. 오버쇼핑 후 재탄생의 기회를 잡기

RSI 지표는 오버 바이 오버 소드를 더 잘 식별할 수 있다. 주식이 오버 바이 오버 소드 영역에 있을 때, 단기간에 회귀 가능성이 높으며, 오버 소드 영역은 종종 다가오는 반발 상황을 예고한다. 이 전략은 역전 직전에 기회를 잡을 수 있다.

  1. 실체 필터링은 가짜 신호를 감소시킵니다.

단순 RSI 지표 거래에는 더 많은 가짜 신호가 존재할 수 있다. 이 전략은 K선 엔티티가 확대되는 것을 필터링 조건으로 추가하고, 역전점 전날에 K선 엔티티가 확대되는 것을 포지션으로 추가하여, 흔들림 시장의 가짜 신호에 의해 오해되는 것을 피한다.

  1. 연속 N 루트 K 라인 확인으로 신뢰성이 향상

RSI는 1-5개의 K선들이 계속적으로 오버 바이 오버 소드 영역에 있는 것을 확인하도록 요구하며, 개별적인 비동기 K선들에 의해 오해되는 것을 피하고, 신호의 신뢰성을 높인다.

  1. 개체 확대 배수는 조정할 수 있다

개체 확대 배수는 다른 품종에 따라 조정할 수 있으며, 대폭 대폭 하락형 품종에 대해서는 적절한 완화 조건이 가능하며, 변동 평온형 품종에 대해서는 적절한 강화 조건이 가능하며, 자신의 거래 품종에 맞는 자유롭게 조정할 수 있다.

위험

  1. 맞춤 문제가 있을 수 있습니다.

이 정책의 변수 설정에는 어느 정도의 제한이 있으며, 다른 품종과 다른 기간에 따라 변수를 조정해야 한다. 하나의 변수 설정을 고정적으로 사용하면, 과도한 적합 문제가 발생할 수 있다.

  1. 판매점 식별 정확도가 낮습니다.

RSI 지표 자체에는 어느 정도 지연성이 존재하며, 엔터티 확대와 함께 필터링 조건으로도 조기 어느 정도 포지션 탈퇴를 할 수 있다. 따라서 매수점을 식별하는 정확도는 일반적으로 특별히 높지 않다.

  1. 위기 상황에서도 지분 보유 기간이 너무 길어질 수 있다.

불안정한 상황에서는 RSI 지표가 자주 구매/판매 신호를 유발할 수 있으며 이는 너무 긴 포지션 보유 기간을 초래할 수 있습니다. 이 경우 변수를 조정하거나 전략 운영을 중단해야 합니다.

  1. 포지션 전략의 적절한 조정

이 전략은 단선 거래 전략으로, 수익을 잠금하고 위험을 통제하기 위해 적당한 포지션 전략, 예를 들어 평균선 제거, 손실 중지 등과 같은 방법이 필요합니다.

더 나은 생각

  1. 다른 변수 설정을 테스트

주기, 오버 바이 오버 세일 라인, 그리고 K 라인 엔티티 필터링 파라미터와 같은 다른 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