RSI 반전 거래 전략

저자:차오장, 날짜: 2023-11-14 16:49:02
태그:

img

전반적인 설명

RSI 반전 거래 전략은 상대적 강도 지표 (RSI) 지표를 사용하여 과반 구매 및 과반 판매 조건을 식별하고 반전 지점에서 긴 또는 짧은 거래를하는 양적 거래 전략입니다. 이 전략은 RSI 과반 구매 및 과반 판매 임계 수준을 설정하고 RSI가 과반 구매 구역에 들어갈 때 짧고 RSI가 과반 판매 구역에 들어갈 때 길게 이동하여 가격 반전을 포착합니다.

전략 논리

이 전략은 다음과 같은 핵심 논리에 기반합니다.

  1. RSI는 현재 시장이 과소매 또는 과소매를 반영할 수 있습니다. RSI는 일정 기간 동안 평균 상승 변화와 평균 하락 변화의 비율을 계산하여 상승과 하락의 상대적 모멘텀을 측정합니다.

  2. RSI가 과잉 매수 구역 (일반적으로 RSI가 70 이상으로 간주) 에 진입하면 강력한 상승 동력을 나타냅니다. 상승 지위를 오랫동안 보유한 거래자가 더 많을 것이며 상승세를 계속 할 수있는 공간이 제한됩니다. 과잉 매수 상태를 수정하기 위해 가격이 하향으로 역전 될 수 있습니다.

  3. RSI가 과잉 판매 구역 (일반적으로 30 이하) 에 진입하면 강한 하향 동력을 나타냅니다. 하향 지위를 보유하는 더 많은 거래자가 있고 하향 지점을 계속 할 수있는 공간이 제한됩니다. 과잉 판매 상태를 수정하기 위해 가격이 상향으로 역전될 수 있습니다.

  4. 따라서, 우리는 RSI 과잉 구매 경계가 90로, 과잉 판매 경계가 10로 설정할 수 있습니다. RSI가 과잉 구매 구역에 들어가면 짧고 RSI가 과잉 판매 구역에 들어가면 길게 이동하여 반전을 포착합니다.

구체적으로, 전략 논리는 다음과 같습니다.

  1. RSI 지표 값은 2개의 기간을 가진 RSI 원천으로 닫기 가격을 사용하여 계산합니다.

  2. RSI가 90을 넘으면 과잉 매수 구역으로 들어가고, 10을 넘으면 과잉 매수 구역으로 들어가고,

  3. 각 거래에 스톱 로스를 설정합니다. 가장 낮은 가격에 긴 스톱, 가장 높은 가격에 짧은 스톱.

  4. 각 거래에 트레일링 스톱을 설정합니다. RSI가 더 극단적인 과반 구매/ 과반 판매 수준으로 계속되면 더 많은 공간을 제공하기 위해 트레일링 스톱을 조정합니다.

  5. RSI가 50대 중립지대로 돌아온다면 수익을 취하는 것을 고려하세요.

  6. 3 바가 지나면 반전이 없다면, 무제한 손실을 피하기 위해 거래를 종료합니다.

장점

RSI 역전 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 과잉 구매/ 과잉 판매 조건을 식별하기 위해 RSI를 사용하면 시장 반전 지점을 효과적으로 파악 할 수 있습니다. RSI는 극단적인 판단에 정확하며 높은 반전 성공률을 가지고 있습니다.

  2. 역전 전략은 추세를 계속 따라가는 체계적인 이점을 가지고 있습니다. 함정에 빠지지 않기 위해 과도하게 구매 된 경우 짧고 과도하게 판매 된 경우 길게 갈 수 있습니다.

  3. 스톱 로즈 메커니즘은 개별 거래에서 손실을 효과적으로 제어합니다. 반전이 실패하더라도 손실은 특정 범위 내에서 유지됩니다.

  4. 트레일링 스톱은 지속적인 가격 움직임에 따라 스톱 거리를 유연하게 조정할 수 있으며, 스톱을 트리거하고 더 많은 가격 차이를 포착하는 것 사이에서 균형을 잡습니다.

  5. 고정된 바에 따라 강제 출퇴하면 적시에 반전되지 않은 거래는 무제한 손실로 이어지지 않습니다.

  6. 조정 가능한 RSI 매개 변수는 다른 시장에 전략을 조정할 수 있습니다.

위험성

이 전략은 또한 다음과 같은 위험을 가지고 있습니다.

  1. 기술 지표 전략으로서, RSI 반전 성능은 곡선 적합 편차를 가질 수 있습니다. 실제 거래 반전 성공률은 백테스트 결과보다 낮을 수 있습니다.

  2. 비록 RSI는 과잉 구매/ 과잉 판매 상황을 식별 할 수 있지만 정확한 반전 시기를 예측할 수 없습니다. 진입 후 반전이 없을 위험이 있으며 가격은 추세를 계속합니다.

  3. RSI 과잉 구매/ 과잉 판매 수준은 합리적으로 설정되지 않을 수 있습니다. 잘못된 수준은 반전을 놓치거나 반전 전에 중단 될 수 있습니다.

  4. 이윤을 취하기 전에 가격이 또 다른 반전을 할 확률이 있습니다. 이윤을 취하는 것은 채워지지 않을 수 있습니다.

  5. 너무 좁거나 너무 느슨하게 설정된 스톱 손실 거리는 스톱을 비효율적으로 만들 수 있습니다.

  6. 거래 수수료도 전략 수익성에 영향을 줄 수 있습니다.

개선

이 전략은 다음과 같은 방법으로 강화될 수 있습니다.

  1. 다양한 RSI 매개 변수를 테스트하여 RSI 길이, 과잉 구매/ 과잉 판매 임계 수준과 같은 최적의 조합을 찾습니다.

  2. 더 많은 필터를 추가하여 MACD 등과 결합하여 확률을 높이는 것과 같은 잘못된 반전 신호를 피합니다.

  3. 스톱 로스 전략을 최적화하십시오. 예를 들어 ATR 기반 스톱, 변동성 조정 거리가 있습니다.

  4. 수익을 취하는 전략을 최적화합니다. 예를 들어, 수익을 취하는 움직이고, 더 많은 가격 차이를 추적하는 것.

  5. 기계 학습 모델을 추가하여 역행에 대한 판단을 돕고 성공률을 향상시킵니다.

  6. 실제 거래에 최적의 매개 변수를 찾기 위해 다양한 시장과 도구에 대한 전략을 테스트합니다.

  7. 거래량이 증가할 때 반전 신호만 고려하세요.

결론

결론적으로, RSI 역전 전략은 과도한 구매 및 과도한 판매 시장 조건 및 전환점에 거래를 식별하는 데 RSI의 강점을 활용하여 적당한 체계적인 수익을 제공합니다. 그러나 RSI 매개 변수 및 스톱 / 테이크 이익 최적화 및 다른 지표와 필터링을 통해 해결해야 할 위험이 있습니다. 올바르게 실행되면 RSI 역전은 양적 거래 시스템의 효과적인 구성 요소를 형성 할 수 있습니다.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Copyright (c) 2021-present, RicMos
//study("RSI2 Sell Strategy, overlay=true)

//------------------------------------------USER VARIABLE DEFINITIONS --------------------------------------
var float lots = 0.1
//var float fixed_commission = 0.6 // forex pairs commission  value USD per position size two sides
var float fixed_commission = 10 // BTC commission value USD per position size two sides
//var float money = 10000 //forex pairs position size
var float money = 0.3333 //BTC position size



strategy(title="RSI2 Sell Strategy", commission_type=strategy.commission.cash_per_order, calc_on_every_tick =true, commission_value = fixed_commission/2, overlay=true, default_qty_value= lots*100000, initial_capital=1000, currency = "USD", calc_on_order_fills = false)
len = input(2, minval=1, title="RSI Length")
src = input(close, "RSI Source", type = input.source)
upRsi = rma(max(change(src), 0), len)
downRsi = rma(-min(change(src), 0), len)
rsi = downRsi == 0 ? 100 : upRsi == 0 ? 0 : 100 - (100 / (1 + upRsi / downRsi))
var color buyColor = color.blue
var color sellColor = color.red


plotshape(rsi <= 10 ? low : na, title="Arrow Up", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=buyColor)
plotshape(rsi >= 90 ? high : na, title="Arrow Down", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=sellColor)


// long = rsi <= 10 
// var float longsl = 0
// var int long_ts_points = 0

// if long
//     longsl:= low
//     long_ts_points := 200
    
// if rsi >= 70
//     long_ts_points := 100
// else if rsi >= 80
//     long_ts_points := 80


// plot (longsl)
// var int barsPassed = 0
// barsPassed := barssince(long)
// if long
//     strategy.entry("long", long = strategy.long, qty = 10000, stop = high)
// strategy.exit("slLo", from_entry="long", stop = longsl-0.0002, trail_points = long_ts_points )
// //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" )
// strategy.cancel_all(barsPassed > 3  and not long)


short = rsi >= 90 
var float shortsl = 0
var int short_ts_points = 0
//var bool stClose = 0

if short
    shortsl:= high
    short_ts_points := 200
    
if rsi <= 30
    short_ts_points := 100
    //stClose :=1
else if rsi <= 20
    short_ts_points := 80 
//else
    //stClose := 0

plot (shortsl)
var int barsPassedSh = 0
barsPassedSh := barssince(short)
if short
    strategy.entry("short", long = strategy.short, qty = money, stop = low)
strategy.exit("slSh", from_entry="short", stop = shortsl, trail_points = short_ts_points, trail_offset =20 )
//strategy.close("short", comment="rsi<30", when = stClose)


//strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" )
strategy.cancel_all(barsPassedSh > 3  and not short)










더 많은