RSI 반전 브레이크업 전략

저자:차오장, 날짜: 2023-10-08 14:16:57
태그:

전반적인 설명

RSI 리버서스 브레이크아웃 전략은 RSI 지표를 사용하여 과잉 구매 및 과잉 판매 상황을 식별하고 가격이 이동 평균을 넘었을 때 역 트렌드 거래를하는 전략입니다. 이 전략은 트렌드와 과잉 구매 / 과잉 판매 지표를 결합하여 회전 신호가 나타나면 거래를 수행하여 주식 가격의 단기적 역전 기회를 포착하는 것을 목표로합니다.

전략 논리

이 전략은 주로 다음과 같은 논리에 기초합니다.

  1. 가격의 과소매 또는 과소매 여부를 판단하기 위해 RSI를 사용하십시오. 25 이하의 RSI는 과소매로 간주되며, 80 이상의 RSI는 과소매로 간주됩니다.

  2. 전체 트렌드 방향을 결정하기 위해 200일 EMA를 사용하십시오. EMA를 넘어가는 가격은 상승 트렌드 신호로 간주되며, EMA를 넘어가는 것은 하락 트렌드 신호로 간주됩니다.

  3. RSI가 초판 신호를 표시하고 가격이 EMA 이상으로 떨어지면 상승 추세에 대해 장기간 거래하십시오. 이것은 전형적인 반전 신호이며, 가격이 초판 구역에서 회복되는 것을 나타냅니다.

  4. RSI가 과잉 매입 신호를 보이며 가격이 EMA 이하로 떨어지면 하락 추세로 단축합니다. 또한 역전 신호로 가격이 과잉 매입 구역에서 철수하기 시작한다는 것을 나타냅니다.

  5. 반전 트레이딩을 통해 우리는 새로운 트렌드의 시작을 시작하기 전에 잡을 수 있기를 바랍니다.

구체적으로, 입시 규칙은 RSI가 <25이고 가격이 상단 범위를 넘어서면 긴 거리로; RSI가 >80이고 가격이 하단 범위를 넘어서면 짧은 거리로. 하루 최고 가격이 전날의 최고 가격보다 낮을 때 종료됩니다.

장점

RSI 반전 브레이크아웃 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 반전 확률을 파악: RSI로 과반 구매/ 과반 판매를 식별하면 알파를 생성하는 데 핵심이 되는 가격 반전을 파악할 수 있습니다.

  2. 트렌드에 따라 거래: EMA를 통합하면 거래가 주요 트렌드에 맞춰질 수 있습니다. 큰 트렌드에 일치 할 때만 반전이 고려됩니다.

  3. 리스크 제어: 리버스 거래는 포지션 보유 기간을 제한하고 리스크를 제어합니다.

  4. 유연한 매개 변수: RSI 기간과 EMA 기간은 시장 체제 변화에 따라 조정할 수 있으며 적응력을 향상시킵니다.

  5. 적절한 거래 빈도: 반전 신호는 적당한 빈도에서 발생하며, 활동 중인 동안 과잉 거래를 피합니다.

  6. 단순함: 규칙은 직접적이고 실시간 거래에서 쉽게 구현됩니다.

위험 및 관리

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

  1. 실패한 반전 위험: 반전 신호 이후 가격이 원래 트렌드를 재개하여 손실로 이어질 수 있습니다. 하락세를 제어하기 위해 스톱 로스를 사용할 수 있습니다.

  2. 불분명한 트렌드 위험: EMA는 명확한 트렌드가 없을 때 잘 작동하지 않습니다. 트렌드가 불분명한 경우 반전을 피할 수 있습니다.

  3. 최적화 위험: RSI 및 EMA 매개 변수는 성능에 큰 영향을 미칩니다. 최적을 찾기 위해 다양한 값을 광범위하게 테스트해야합니다.

  4. 과도한 적합성 위험: 최적화 과정에서 성능을 추격하는 것은 과도한 적합성으로 이어질 수 있습니다. 과도한 최적화를 피하기 위해 견고성 검사가 필요합니다.

  5. 과잉 거래 위험: 너무 빈번한 반전 신호는 과도한 거래로 이어집니다. 거래 빈도를 제한하기 위해 RSI 기간을 조정할 수 있습니다.

개선

이 전략은 다음과 같은 측면에서 더 향상될 수 있습니다.

  1. 주식 품질을 평가합니다. 기본 기준에 기초하여 고품질 주식에만 전략을 적용하십시오.

  2. 다른 지표를 포함: MACD, KD 등을 추가하여 반전 신호를 확인하고 신뢰성을 향상시킵니다.

  3. 동적 매개 변수 조정: 변화하는 시장 조건에 따라 RSI와 EMA 매개 변수를 동적으로 조정합니다.

  4. 입력 타이밍을 최적화합니다. 반전 확인을 기다리기 위해 입력 규칙을 정렬합니다.

  5. 이윤 취득 전략: 적당한 이윤 취득 수준을 설정하여 이윤을 반환하지 않도록하십시오.

  6. 거래 비용 고려: 미끄러짐 및 수수료의 영향을 평가합니다.

  7. 변동성을 고려하세요. 전략을 더 견고하게 하기 위해 변동성이 높은 주식에만 집중하세요.

결론

RSI 반전 브레이크아웃 전략은 초기 반전과 주요 기회를 잡기 위해 트렌드 및 반전 신호를 결합합니다. 적당한 거래 빈도는 위험 통제를 돕습니다. 입시 타이밍, 수익 취득 및 매개 변수 선택에 대한 적절한 최적화는 성능을 더욱 향상시킬 수 있습니다. 올바른 최적화로이 전략은 효과적인 수치적 거래 접근 방식이 될 수 있습니다.


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
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/
// © jocker.soad

//@version=4
// strategy("My Script", overlay=true, initial_capital=10000, default_qty_value=100)
min = input(title="Valor minimo de entrada", defval=25)
qtdAtivos = input(title="Quantidade de ações", defval=1)

// overBuyLine = hline(80)
// overSellLine = hline(min)

var comprado = false
var valorComprado = 0.0
var qtdDiasComprado = 0
var valorLucro = 0.0

valueRsi = rsi(close, 2)
valueSma = sma(close, 200)
valueEma = ema(close, 200)
lastHighPrice = high[2]

buyValidation = valueRsi <= min
sellValidation = close >= lastHighPrice



// plot(lastHighPrice, trackprice=true, offset=-99999, color=color.olive, linewidth=3, style=plot.style_area)
// plot(valueRsi)
// plot(valueSma)
// plot(valueEma)
// plotshape(sellValidation, style=shape.triangledown, color=color.blue)
// plotshape(comprado, style=shape.triangledown, color=color.blue)

startDate = input(title="Inicio Dia", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Inicio Mes", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Inicio Ano", type=input.integer, defval=2018, minval=1800, maxval=2100)

endDate = input(title="Final Dia", type=input.integer, defval=1, minval=1, maxval=31)
endMonth = input(title="Final Mes", type=input.integer, defval=12, minval=1, maxval=12)
endYear = input(title="Final Ano", type=input.integer,  defval=2020, minval=1800, maxval=2100)

inDateRange = true

if inDateRange

    if close >= valueEma
    
        if comprado == false and buyValidation
            qtdDiasComprado := 0
            comprado := true
            valorComprado := close
            strategy.order("buy", true, qtdAtivos, when=buyValidation)
        
        if sellValidation and comprado == true
            comprado := false
            valorLucro := valorLucro + (close - valorComprado)
            valorComprado := 0
            strategy.order("sell", false, qtdAtivos, when=sellValidation)
        
        if comprado == true and sellValidation == false
            qtdDiasComprado := qtdDiasComprado + 1

// plot(valorLucro, color=color.lime)




더 많은