여러 기간 RSI를 기반으로 하는 역전 거래 전략

저자:차오장, 날짜: 2023-09-14 20:42:55
태그:

이 문서에서는 전환점을 식별하기 위해 다기간의 RSI 지표를 활용하는 양적 거래 전략을 자세히 설명합니다. 시장 전환점을 발견하기 위해 여러 RSI 지표를 동시에 분석합니다.

I. 전략 논리

이 전략은 다른 매개 변수와 함께 RSI 지표의 3 그룹을 사용합니다.

  1. 각각 2, 7, 14주기의 RSI 값을 계산합니다.

  2. RSI-2가 10보다 낮고 RSI-7가 20보다 낮고 RSI-14가 30보다 낮으면 바닥이 나타납니다.

  3. RSI-2가 90보다 높고 RSI-7가 80보다 높고 RSI-14가 70보다 높을 때, 정상이 확인됩니다.

  4. RSI 합의를 기반으로 구매/판매 신호를 생성합니다.

  5. 신호의 주파수를 제어하는 지표 합의에 대한 미리 조정 가능한 매개 변수

기간 간 RSI 지표를 집합적으로 분석함으로써 전환점 정확도를 향상시킬 수 있습니다.

II. 전략의 장점

가장 큰 장점은 여러 시간 프레임 RSI 분석을 사용하여 핵심 지점의 식별을 개선하고 잘못된 신호를 필터링한다는 것입니다.

또 다른 장점은 합의 매개 변수를 조정하고 다른 시장 환경에 적응할 수 있는 유연성입니다.

마지막으로, RSI 조합은 또한 더 많은 조정 옵션을 제공합니다.

III. 잠재적 위험

그러나 다음과 같은 위험이 있습니다.

첫째로, RSI 자체는 반전을 식별하는 데 있어 본질적인 지연을 가지고 있습니다.

둘째, 여러 지표가 명확한 규칙을 필요로 하는 신호의 모호성을 가져옵니다.

마지막으로, 반전 거래는 심리적 준비가 필요한 실패율이 있습니다.

IV. 요약

요약적으로,이 기사는 다기간의 RSI 분석에 기반한 반전을 식별하는 양적 전략을 설명했습니다. 그것은 RSI 일관성을 판단함으로써 시장 전환점을 인식하는 것을 향상시킵니다. 그러나 지연 및 잘못된 신호와 같은 위험이 관리되어야합니다. 전반적으로 유연한 RSI 전략 최적화 접근 방식을 제공합니다.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, 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")

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

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
acc = 10 - accuracy
signalup1 = fastrsi < (5 + acc) ? 1 : 0
signalup2 = middlersi < (10 + acc * 2) ? 1 : 0
signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0

signaldn1 = fastrsi > (95 - acc) ? 1 : 0
signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0
signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0

up = signalup1 + signalup2 + signalup3 >= indi
dn = signaldn1 + signaldn2 + signaldn3 >= indi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

더 많은