고급 RSI 지표 거래 전략

저자:차오장, 날짜: 2024-02-06 11:47:59
태그:

img

전반적인 설명

S&P500 첨단 RSI 지표 거래 전략은 S&P500 지표를 거래하는 중장기 트렌드를 따르는 전략입니다. 이 전략은 위험을 제어하고 잘못된 신호를 줄이기 위해 RSI 과잉 구매 및 과잉 판매 신호와 여러 필터를 결합합니다.

전략 논리

이 전략의 핵심 지표는 RSI이며, 2 기간 RSI를 사용하여 가격 과소매 및 과소매 수준을 결정합니다. RSI가 과소매 라인 아래에 떨어지면 길어지고 RSI가 과소매 라인 위에 상승하면 포지션을 닫습니다. 또한 전략에는 위험을 제어하기위한 일련의 보조 필터가 있습니다.

  1. 주간 RSI 필터: 황소 시장에서 지나치게 공격적인 긴 시장을 피하기 위해 주간 RSI가 한 임계치 이하가 되어야 합니다.

  2. MA 필터 (MA Filter): 상승 추세가 시작되면 진입을 보장하기 위해 가격이 특정 MA 기간보다 높아야 합니다.

  3. 2차 RSI 필터: 거짓 브레이크오웃을 피하기 위해 2차 RSI 지표가 과잉 판매 라인 아래로 떨어지는 것을 요구합니다.

  4. ATR 브레이크아웃 필터: 급격한 가격 하락 후 장기간 위험을 통제하는 것을 피합니다.

이러한 여러 필터의 조합은 중장기 가격 반전 지점을 효과적으로 식별하고 거래 빈도를 제어하고 위험을 줄일 수 있습니다.

이점 분석

S&P500 고급 RSI 지표 거래 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 여러 보조 표시기를 결합하면 잘못된 신호를 줄이고 신뢰성을 향상시킵니다.

  2. ATR 브레이크아웃 필터는 가격 추락 후 구매를 피함으로써 위험을 조절합니다.

  3. 주간 RSI 필터는 황소 시장에서 지나치게 공격적인 장기 거래를 방지합니다.

  4. MA 필터는 상승 추세가 시작되면 진입을 보장합니다.

  5. 2차 RSI 필터는 잘못된 RSI 브레이크를 피합니다.

  6. 중장기 보유에 적합하며 과잉 거래를 피합니다.

위험 분석

이 전략의 주요 위험은 다음과 같은 측면으로 나타납니다.

  1. 주요 지표로서의 RSI는 다소 뒤떨어져 있습니다.

  2. 필터 조건이 너무 엄격해서 기회를 놓칠 수도 있습니다.

  3. 스톱 손실은 플래시 충돌 때 제거 될 수 있습니다.

  4. 간단한 RSI와 필터는 복잡한 시장 조건에서 제한된 능력을 가지고 있습니다.

대응하는 완화 조치:

  1. 트레이드를 놓치지 않도록 매개 변수를 조정합니다.

  2. 놓친 트레이드를 계산하기 위해 포지션 크기를 늘려

  3. 거래 빈도를 높이기 위해 필터 조건을 완화하십시오.

  4. 복잡한 시장 분석을 위해 더 많은 지표를 결합하는 것을 고려하십시오.

최적화 방향

이 전략은 다음 방향으로 더 이상 최적화 될 수 있습니다.

  1. 최적의 과반 구매/ 과반 판매 라인을 찾기 위해 RSI 매개 변수를 조정하여 테스트합니다.

  2. 최대의 값을 결정하기 위해 MA 기간 매개 변수를 테스트합니다.

  3. 가격 유출 필터를 최적화하기 위해 ATR 매개 변수를 조정하는 테스트.

  4. 복잡한 시장에 대한 더 나은 분석을 위해 다른 지표를 결합하는 것을 시도하십시오.

  5. 최적의 설정을 찾기 위해 주간 RSI 매개 변수를 최적화합니다.

  6. 2차 RSI 매개 변수를 최적화합니다. 기간 및 과잉 구매/ 과잉 판매 라인 등이 포함됩니다.

결론

S&P500 고급 RSI 지표 거래 전략은 위험을 제어하기 위해 RSI와 여러 필터 조건을 사용하여 중장기 트렌드 역전 지점을 식별합니다. 중장기 트렌드를 잠금하고 과거래를 피하기 위해 RSI의 강점을 효과적으로 활용합니다. 매개 변수가 계속 최적화됨에 따라 전략 성능이 계속 향상 될 수 있습니다. 전반적으로 중장기 가치 투자에 적합하며 비교적 안정적인 수치 전략입니다.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Lets connect on LinkedIn (https://www.linkedin.com/in/lets-grow-with-quality/)
// Optimized for S&P500 Daily. Use it as a buy confirmation on certain levels (Springs, Pullbacks, ...) or let it run 
// without "Weekly RSI Filter" and pyramiding for 4 x more trades.
// This strategy is optimized for minimum drawdowns and has several filters on board for use on different securities

strategy("S&P500 RSI2 Studio", overlay=true)

baseLength = input(2, title="Base RSI Length")
overSold = input(10, title="Overbought Level")
overBought = input(90, title="Oversold Level")
overBoughtExit = input(70, title="Overbought Level Exit")
enableWeeklyRsiFilter = input(true, title="Enable Weekly RSI Filter")
weeklyOverSold = input(30, title="Weekly Oversold Level")
weeklyOverBought = input(70, title="Weekly OverOverbought Level")
weeklyRsiLength = input(2, title="weeklyRsiLength")

enableWmaFilter = input(false, title="Enable MA Filter")
wmaLength = input(100, title="WMA Length")

exitRsiLength = input(4, title="Exit RSI Length")
dailyRsiLength = input(4, title="Daily RSI Length")

enable2ndRSIFilter = input(false, title="Enable 2nd RSI Filter")
SecRSIFilterLengh = input(14, title="2nd RSI Filter Length")
SecRSIFilterOverSold = input(20, title="2nd RSI Filter Oversold Level")

enableAtrFilter = input(true, title="Enable ATR Filter")
numAtrDays = input(14, title="Number of Days ATR Average")
atrFilterFactor = input(2, title="ATR Filter Factor")

weeklyRsi = request.security(syminfo.tickerid, "W", ta.wma(ta.rsi(close, weeklyRsiLength), 1))
exitRsi = request.security(syminfo.tickerid, "D", ta.wma(ta.rsi(close, exitRsiLength), 2))
dailyRsi = request.security(syminfo.tickerid, "D", ta.wma(ta.rsi(close, dailyRsiLength), 2))
price = close

priceDropCondition = ta.atr(1) >= ta.atr(numAtrDays) * atrFilterFactor
preventEarlyEntry = not priceDropCondition

vrsi = ta.wma(ta.rsi(price, baseLength), 2)
wma = ta.wma(price, wmaLength)


buyCond1 = ta.crossunder(vrsi, overSold)
buyCond2 = enableWeeklyRsiFilter ? weeklyRsi < weeklyOverSold : true
buyCond3 = enable2ndRSIFilter ? ta.wma(ta.rsi(close, SecRSIFilterLengh),2) < SecRSIFilterOverSold : true
buyCond4 = enableWmaFilter ? price > ta.wma(close, wmaLength) : true
buyCond5 = enableAtrFilter ? preventEarlyEntry : true
 
buy = buyCond1 and buyCond2 and buyCond3 and buyCond4 and buyCond5

if (not na(vrsi))
    if buy 
        strategy.entry("RSI2 Studio", strategy.long, comment="Long")

if (exitRsi > overBoughtExit)
    strategy.close("RSI2 Studio", comment="Close Long")

더 많은