RSI 범위 거래 전략

저자:차오장, 날짜: 2023-11-06 16:12:23
태그:

img

전반적인 설명

RSI 범위 거래 전략은 RSI가 과반 구매 또는 과반 판매 수준에 도달 할 때 트렌드에 대항하여 거래하여 수익을 창출합니다. 가격은 영원히 한 방향으로 유행하지 않고 범위 내에서 앞뒤로 변동한다는 가정에 기반합니다. 이 전략은 RSI가 극단에 도달 할 때 인기를 끌기를 목표로합니다.

전략 논리

이 전략은 RSI 지표를 계산하여 가격이 과잉 구매 또는 과잉 판매 수준에 도달했는지 여부를 결정합니다. 구체적으로, RSI 기간은 2 바로 설정됩니다. 과잉 구매 라인은 91이며 과잉 판매 라인은 11입니다. RSI가 과잉 구매 수준을 넘을 때 짧은 신호가 생성됩니다. RSI가 과잉 판매 수준을 넘을 때 긴 신호가 생성됩니다. 포지션 크기는 거래당 최대 위험의 5%로 설정됩니다.

리스크를 제어하기 위해 스톱 로스 메커니즘이 구현된다. 만약 가격이 긴 포지션을 열고 나서 긴 포지션에 대해 0.5% 움직이면 포지션은 닫힌다. 짧은 포지션에도 마찬가지다. 이것은 가격이 한 방향으로 강하게 흐르면 과도한 손실을 피한다.

요약하자면, 핵심 논리는 과잉 구매/ 과잉 판매에 대한 RSI를 모니터링하고, 구성된 RSI 수준을 기반으로 트렌드에 반대하여 거래하고, 스톱 로스를 통해 위험을 관리하는 것입니다.

이점 분석

  • RSI는 과잉 구매/ 과잉 판매 수준을 식별하는 검증된 지표입니다.

  • 극단적 거래는 일방적인 추세가 아닌 가격 변동의 가정에 부합합니다.

  • 스톱 손실은 개별 거래의 손실을 제어합니다.

  • 단순하고 명확한 백테스팅 프레임워크, 이해하기 쉽고 수정하기 쉽습니다.

  • 유연한 RSI 매개 변수와 변화하는 시장에 적응할 수 있는 스톱 로스 레벨

위험 분석

  • RSI는 트렌드를 따르는 지표입니다. 범위 제한 가격 대신 지속적인 트렌드 중에 지속적인 손실이 발생할 수 있습니다.

  • 부적절한 RSI 매개 변수는 더 많은 신호를 생성할 수 있지만 승률이 낮을 수 있습니다.

  • 스톱 손실은 작은 움직임에 의해 시작되거나 제대로 설정되지 않으면 큰 손실을 유발할 수 있습니다.

  • 이 전략은 범주형 시장에서 더 잘 작동하지만 강한 트렌드 시나리오에서는 저조한 성과를 낼 수 있습니다.

  • 과도한 포지션 크기는 손실을 증가시킬 수 있습니다.

최적화 방향

  • 신호 정확성을 높이기 위해 MACD와 같은 다른 지표와 RSI를 결합하십시오.

  • 최적의 설정을 찾기 위해 다른 매개 변수로 통계적인 RSI 행동을 연구합니다.

  • 역시험에서 동적 위치 크기를 측정하는 메커니즘을 테스트합니다.

  • ATR를 사용해서 적응식 스톱 손실 수준을 설정합니다.

  • 최적의 매개 변수 조합을 찾기 위해 기계 학습을 적용합니다.

  • 다른 평균 역전 전략을 RSI와 결합하여 견고한 시스템을 구축하는 것을 탐구하십시오.

요약

RSI 범위 거래 전략은 RSI 과잉 구매/ 과잉 판매 수준에 기반하여 간단한 반전 거래를 수행하고 스톱 로스를 통해 위험을 관리합니다. 범위 제한 오스실레이션 시장에서 작동하지만 강력한 트렌드 시나리오에서 한계를 가지고 있습니다. 매개 변수를 세밀하게 조정하고, 스톱 로스 규칙을 개선하고, 다른 지표 및 전략과 결합하여 안정성과 적응력을 향상시킬 수 있습니다. 전반적으로이 전략은 몇 가지 귀중한 통찰력을 제공하지만 라이브 거래에서 신중한 응용과 최적화가 필요합니다.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple RSI Strategy", overlay=true)

var rsiLength = input(2, title = "rsi Length")
var float rsiBuyLevel = input(11, title = "What rsi level triggers a long")
var float rsiShortLevel = input(91, title = "What rsi level triggers a short")
var float maxRisk =  input(.05, title="Maximum risk/ trade")
var chartEntryStop = input(.005, title="Max Movment in the opposite direction / trade")
var float longEntryPrice = na
var float shortEntryPrice = na 
rsiValue = ta.rsi(close, rsiLength)

var float maxRiskValue = (strategy.equity * maxRisk) / chartEntryStop
var float maxRsi = 0

//Conditions


// Strategy Execution
if( close <= longEntryPrice-(longEntryPrice*chartEntryStop ))
    strategy.close("Long")

if( close >= shortEntryPrice+(shortEntryPrice*chartEntryStop ))
    strategy.close("Short")

if (rsiValue <= rsiBuyLevel and maxRsi == rsiShortLevel)
    maxRsi := rsiBuyLevel 
    strategy.close("Short")
    strategy.entry("Long", strategy.long)
    longEntryPrice := close
    
   
else if (rsiValue >= rsiShortLevel and maxRsi == rsiBuyLevel)
    maxRsi := rsiShortLevel
    strategy.close("Long")
    strategy.entry("Short", strategy.short)
    shortEntryPrice := close

else if (rsiValue >= rsiShortLevel )
    maxRsi := rsiShortLevel
    strategy.close("Long")

else if (rsiValue <= rsiBuyLevel )
    maxRsi := rsiBuyLevel
    strategy.close("Short")

더 많은