리버스 브레이크오웃 과잉 판매 RSI 전략

저자:차오장, 날짜: 2023-12-22 15:00:48
태그:

img

전반적인 설명

리버설 브레이크아웃 오버솔드 (Reversal Breakout Oversold) RSI 전략은 상대 강도 지수 (RSI) 인디케이터를 사용하여 오버솔드 상황을 결정하고 가격이 역전될 때 장기간 거래하는 알고리즘 거래 전략이다. 이 전략은 RSI 임계점을 30로 설정한다. RSI가 30 이하로 떨어지면 오버솔드라고 간주되며, 그 시점에서 장기 포지션이 열린다. 이 전략은 엄격한 스톱 로스 및 영업 규칙으로 수익을 잠금한다.

전략 논리

리버설 브레이크아웃 오버솔드 (Reversal Breakout Oversold) RSI 전략은 14개 기간의 RSI 지표를 사용한다. RSI가 30 이하로 떨어지면 오버솔드 (oversold) 로 판단된다. 이것은 가격이 이전 기간 동안 지속적으로 하락하고 현재 오버솔드 상태라는 것을 나타냅니다. 따라서 시장이 뒤집어지고 가격이 상승하기 시작할 가능성이 있습니다. 전략은 역전 기회를 찾기 위해 이 시점에서 긴 포지션을 개척합니다.

특히, RSI가 <30이고 백테스트 시간 창 내에서, 포지션을 열기 위해 긴 신호가 발생한다. 그 다음 엔트리 가격보다 1% 아래로 스톱 로스를 설정하고, 이윤을 7% 이상으로 취한다. 가격이 이윤을 취하거나 스톱 로스 이하로 떨어지면 포지션을 닫는다.

전체 전략은 지나친 매출의 반전 입구점을 파악하고 손해를 멈추고 이익을 취득하여 수익을 확보함으로써 자본을 증가시킵니다.

이점 분석

리버스 브레이크아웃 오버솔드 (Reversal Breakout Oversold) RSI 전략은 다음과 같은 장점이 있습니다.

  1. 과도한 매출로 인한 긴 기회를 포착합니다. 비교적 신뢰할 수 있는 거래 전략입니다.

  2. RSI 인디케이터를 사용하여 엔트리 포인트를 식별합니다. 이는 직접 가격 액션보다 더 전문적입니다.

  3. 엄격한 스톱 로스 및 수익 설정은 각 거래의 위험과 수익을 효과적으로 제어합니다.

  4. 백테스트 데이터에 따르면 이 전략은 높은 수익률과 승률을 가지고 있습니다.

  5. 이해하기 쉽고 초보자도 쉽게 사용할 수 있습니다.

위험 분석

리버설 브레이크아웃 오버솔드 (Reversal Breakout Oversold) RSI 전략은 또한 몇 가지 위험을 가지고 있습니다.

  1. 가격 반전이 실패할 확률이 여전히 있습니다. 30 이하의 RSI가 반전의 확률을 높이는 반면 시장 상황은 복잡하고 변동적이며 여전히 실패가 발생할 수 있으며, 이 시점에서 스톱 로스를 유발합니다.

  2. 스톱 로스 포인트는 너무 가깝고 스톱 로스 클러스터링이 발생할 확률이 높습니다. 스톱 로스 진폭은 적절하게 느려질 수 있습니다.

  3. 잘못된 백테스트 시간 창 설정은 테스트 결과를 편향할 수 있습니다. 백테스트 기간은 전략 성능을 완전히 평가하기 위해 조정되어야 합니다.

  4. 트레이딩 토큰의 잘못된 선택은 또한 이익에 영향을 줄 수 있습니다. 이 전략은 더 변동적인 동전에서 가장 잘 작동합니다.

최적화

여전히 리버설 브레이크아웃 오버솔드 RSI 전략의 최적화를 위한 여지가 있습니다.

  1. RSI 매개 변수를 조정하고 전략 수익에 대한 다른 매개 변수의 영향을 테스트합니다.

  2. 다른 거래 쌍을 테스트하고 더 변동적인 동전을 선택하세요.

  3. 최적의 매개 변수 조합을 찾기 위해 스톱 로스 및 취익 매개 변수를 조정합니다. 스톱 로스 진폭을 적절히 넓히는 것도 방향입니다.

  4. 다른 지표 필터를 추가합니다. 예를 들어 가격이 특정 이동 평균을 넘으면 입력하는 것 처럼요.

  5. 가장 좋은 입력 시기를 찾기 위해 다른 시간 기간 매개 변수를 테스트합니다.

요약

리버설 브레이크아웃 오버솔드 (Reversal Breakout Oversold) RSI 전략은 전반적으로 이해하기 쉽고 작동하기 쉽고, 수익을 창출하기 위해 오버솔드 상황으로부터 반전 기회를 포착합니다. 전략의 가장 큰 장점은 초보자조차도 쉽게 파악 할 수 있다는 것입니다. 동시에 엄격한 스톱 손실 및 수익 메커니즘은 위험을 제어 할 수 있습니다. 다음 단계는 매개 변수 조정 및 필터 지표 추가와 같은 방향에서 최적화하여 전략 성능을 더욱 향상시키는 것입니다.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © brodieCoinrule

//@version=4
strategy(shorttitle='Oversold RSI with tight SL',title='Oversold RSI with tight SL Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

perc_change(lkb) =>
    overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100



// RSI inputs and calculations
lengthRSI = 14
RSI = rsi(close, lengthRSI)
oversold= input(30)


//Entry 
strategy.entry(id="long", long = true, when = RSI< oversold and window())

//Exit
Stop_loss= ((input (1))/100)
Take_profit= ((input (7)/100))

longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())



더 많은