리소스 로딩... 로딩...

이중 이동 평균 트렌드 RSI 필터와 전략에 따라

저자:차오장, 날짜: 2024-07-29 16:45:59
태그:SMARSISLTP

img

전반적인 설명

이 전략은 트렌드를 따르는 거래 시스템으로 단순 이동 평균 (SMA) 과 상대 강도 지수 (RSI) 를 결합합니다. 주로 상승 추세를 식별하기 위해 200 기간 SMA를 사용하고 입시 시기를 최적화하기 위해 RSI를 필터로 사용합니다. 이 전략은 또한 리스크를 제어하고 이익을 잠금하기 위해 수익을 취하고 손실을 멈추는 메커니즘을 통합합니다.

전략 원칙

이 전략의 핵심 논리는 다음의 핵심 요소들을 포함합니다.

  1. 트렌드 식별: 200 기간 SMA를 장기 트렌드 지표로 사용합니다. 가격이 SMA를 넘어서고 SMA를 넘어서면 잠재적인 상승 추세로 간주됩니다.

  2. 진입 확인: 트렌드 안정성을 보장하기 위해 가격이 최소 30 개의 연속 기간 (분) 동안 SMA보다 높게 유지되도록 요구합니다.

  3. RSI 필터: RSI가 30 (가장 팔린 지역) 이면만 입시를 허용하는 14 기간 RSI 지표를 사용합니다. 이는 잠재적인 리바운드 기회를 잡는 데 도움이됩니다.

  4. 리스크 관리: 거래당 최대 손실을 제한하기 위해 0.5%의 스톱 로스 수준을 설정합니다.

  5. 이윤 목표: 예상 수익이 달성되면 자동으로 포지션을 닫기 위해 2%의 이윤 취득 수준을 설정합니다.

전략 실행 과정은 다음과 같습니다.

  • 가격이 200 SMA를 넘어서고 RSI가 30보다 낮을 때 30 기간 이상 그 위에 머무르면 긴 포지션을 개척합니다.
  • 보유 기간 동안, 가격이 입시 가격의 102%를 달성하거나 입시 가격의 99.5% 이하로 떨어지면 자동으로 포지션을 닫습니다.
  • 포지션을 닫은 후, 시스템은 재설정되고 조건에 부합하는 다음 진입 기회를 기다립니다.

전략적 장점

  1. 트렌드 추적: 장기적인 SMA를 활용하여 주요 트렌드를 파악하여 강력한 상승 시장에서 이익을 얻는 데 도움이됩니다.

  2. 엔트리 최적화: 가격이 30 기간 동안 SMA보다 높게 유지되도록 요구하면 잘못된 브레이크오프를 필터링하여 엔트리 품질을 향상시킵니다.

  3. 역전 캡처: RSI 과잉 판매 조건을 결합하면 트렌드의 시작에서 잠재적인 리바운드 기회를 캡처 할 수 있습니다.

  4. 리스크 제어: 명확한 스톱 로스 레벨을 설정하면 각 거래의 최대 리스크를 효과적으로 제한합니다.

  5. 이윤 잠금: 미리 설정된 이윤 취득 수준은 예상 수익이 달성되면 자동 이윤 잠금을 보장합니다.

  6. 객관성: 명확한 전략 규칙은 주관적 판단의 감정적 영향을 줄입니다.

  7. 정량화 가능: 전략 매개 변수는 과거 데이터를 사용하여 역 테스트 및 최적화 할 수 있습니다.

전략 위험

  1. 가짜 브레이크: 부진하거나 불안정한 시장에서 빈번한 가짜 브레이크는 연속적인 스톱 손실로 이어질 수 있습니다.

  2. 지연: 지연 지표로서의 SMA는 트렌드의 시작에서 몇 가지 기회를 놓칠 수도 있고 트렌드가 끝나면 포지션을 유지할 수도 있습니다.

  3. RSI 제한: 엄격한 RSI 조건은 특히 강한 상승 추세에서 좋은 진입 기회를 놓칠 수 있습니다.

  4. 고정된 영업 및 중단 손실: 미리 설정된 비율은 모든 시장 조건에 적합하지 않을 수 있으며 매우 변동적인 시장에서 너무 일찍 작동 할 수 있습니다.

  5. 단일 방향: 전략은 장기적으로만 지속되며, 하향 추세에서 이익을 얻을 수 없습니다.

  6. 매개 변수 민감성: 전략 성능은 SMA 기간, 확인 기간 및 RSI 설정의 변화에 민감할 수 있습니다.

  7. 시장 적응성: 전략은 특정 시장이나 시간 프레임에서 잘 수행 할 수 있지만 모든 상황에 적용되지 않을 수 있습니다.

전략 최적화 방향

  1. 동적 취득 및 중지 손실: 다른 시장 변동 조건에 적응하기 위해 동적 취득 및 중지 손실 수준을 설정하기 위해 ATR (평균 진정한 범위) 를 사용하는 것을 고려하십시오.

  2. 다중 시간 프레임 확인: 신호 신뢰성을 향상시키기 위해 입력 전에 일일 및 시간 차트 두 가지 조건이 충족되어야하는 것과 같은 여러 시간 프레임에 대한 확인 메커니즘을 도입하십시오.

  3. 트렌드 강도 필터: ADX (평균 방향 지표) 를 추가하여 트렌드 강도를 측정하고 강한 트렌드 중만 입력합니다.

  4. 변동성 조정: 낮은 변동성 중 확인 기간을 늘리고 높은 변동성 중 확정 기간을 줄이는 것과 같은 시장 변동성에 기초한 매개 변수를 동적으로 조정합니다.

  5. 쇼트 판매 메커니즘을 추가하십시오. 가격이 SMA 이하로 떨어지고 RSI가 과잉 구매되면 쇼트 판매를 고려하여 전략이 양쪽 방향으로 이익을 얻을 수 있습니다.

  6. RSI 사용 최적화: 입시 신호 신뢰성을 높이기 위해 RSI 오차를 사용하거나 다른 지표 (MACD와 같은) 와 결합하는 것을 고려하십시오.

  7. 부피 확인을 도입합니다. 부피 분석을 추가하여 충분한 거래 부피로 브레이크오웃 또는 반전이 지원되는지 확인합니다.

  8. 시간 필터: 알려진 낮은 유동성 기간 동안 거래를 피하기 위해 시간 필터를 추가합니다.

  9. 자금 관리 최적화: 역동적인 포지션 크기를 구현하고 계정 크기와 시장 변동성에 따라 각 거래에 대한 위험 노출을 조정합니다.

  10. 지표 조합을 증가 시키십시오: 더 포괄적인 거래 시스템을 구축하기 위해 볼링거 밴드 및 피보나치 리트레이싱과 같은 다른 기술 지표를 결합하는 것을 고려하십시오.

결론

RSI 필터와 함께 트렌드를 따르는 이중 이동 평균 전략은 트렌드를 따르는 방법과 모멘텀 역전 아이디어를 결합한 양적 거래 전략이다. 200기간의 SMA를 사용하여 장기적인 트렌드를 식별하고 RSI 과잉 판매 조건을 결합하여 엔트리 타이밍을 최적화함으로써, 이 전략은 강력한 상승 추세에서 잠재적인 리바운드 기회를 포착하는 것을 목표로 한다. 내장된 영리 및 스톱 로스 메커니즘은 위험을 제어하고 이익을 잠금하는 데 도움이 되며, 비교적 포괄적인 거래 시스템이다.

그러나 전략은 또한 가짜 브레이크에 취약하고 롱 트레이드에 한정되는 것과 같은 몇 가지 한계를 가지고 있습니다. 전략의 안정성과 적응력을 더욱 향상시키기 위해 동적 인 수익 및 스톱 로스 레벨, 멀티 타임프레임 확인, 트렌드 강도 필터링 및 기타 최적화 조치를 도입하는 것을 고려하는 것이 좋습니다. 또한 단장 매매 메커니즘을 추가하고 돈 관리 전략을 최적화하는 것이 시스템의 전반적인 성능을 크게 향상시킬 수 있습니다.

요약하자면, 이 전략은 트렌드 추적 및 모멘텀 트레이딩에 좋은 출발점을 제공합니다. 지속적인 백테스팅, 최적화 및 라이브 트레이딩 검증을 통해 거래자는 특정 시장 환경과 개별 위험 선호도에 따라 이 전략을 더욱 정비하고 사용자 정의하여 더 나은 거래 결과를 얻을 수 있습니다.


/*backtest
start: 2024-07-21 00:00:00
end: 2024-07-28 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA 200 with RSI Filter", overlay=true)

// Inputs
smaLength = input.int(200, title="SMA Length")
confirmBars = input.int(30, title="Confirmation Bars (30 minutes)")
takeProfitPerc = input.float(2.0, title="Take Profit (%)", step=0.1) / 100
stopLossPerc = input.float(0.5, title="Stop Loss (%)", step=0.1) / 100
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")

// Calculate SMA
sma = ta.sma(close, smaLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Buy condition
priceAboveSMA = close > sma
aboveSMAcount = ta.barssince(priceAboveSMA == false)
rsiCondition = rsi < rsiOversold
enterLongCondition = priceAboveSMA and aboveSMAcount >= confirmBars and rsiCondition

// Track entry price for calculating take profit and stop loss levels
var float entryPrice = na
if (enterLongCondition and na(entryPrice))
    entryPrice := close

// Ensure the entryPrice is only set when a position is opened
if (strategy.opentrades == 0)
    entryPrice := na

takeProfitLevel = entryPrice * (1 + takeProfitPerc)
stopLossLevel = entryPrice * (1 - stopLossPerc)

// Exit conditions
takeProfitCondition = close >= takeProfitLevel
stopLossCondition = close <= stopLossLevel

// Plot SMA and RSI
plot(sma, title="SMA 200", color=color.blue)
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)

// Plot shapes for entries and exits
plotshape(series=enterLongCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=takeProfitCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="TP")
plotshape(series=stopLossCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SL")

// Strategy entry and exit
if (enterLongCondition)
    strategy.entry("Long", strategy.long, comment="SMA200LE")

if (takeProfitCondition or stopLossCondition)
    strategy.close("Long", when=takeProfitCondition or stopLossCondition)

// Reset entry price after position is closed
if (strategy.position_size == 0)
    entryPrice := na


관련

더 많은