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

동적 신경 RSI 트렌드를 따르는 거래 전략

저자:차오장, 날짜: 2025-01-17 14:19:08
태그:SMARSI

 Dynamic Neural RSI Trend-Following Trading Strategy

전반적인 설명

이 전략은 이동 평균, RSI 지표 및 트래일링 스톱 로스를 기반으로 한 양적 거래 시스템이다. 트렌드 추적 및 기술 분석의 추진력 지표를 결합하여 엄격한 입출장 조건을 통해 위험 통제 거래를 달성합니다. 핵심 논리는 상승 추세에서 과판 기회를 찾고 트래일링 스톱을 사용하여 이익을 보호하는 것입니다.

전략 원칙

이 전략은 트렌드 판단의 기준으로 200일 간 간단한 이동 평균 (SMA) 을 사용하고, 거래 신호를 생성하기 위해 상대 강도 지수 (RSI) 와 결합합니다. 구체적으로: 1. 주요 트렌드를 판단하기 위해 200일 SMA를 사용하며, 가격이 평균보다 높을 때만 긴 포지션을 고려합니다. 2. RSI가 미리 설정된 임계치 (디폴트 40) 아래로 떨어지면 과판 신호를 식별합니다. 3. 두 가지 조건이 충족되고 마지막 출구 (10 일 기본) 이후 대기 기간이 경과했을 때 긴 입구를 유발합니다. 4. 후속 스톱 로스 (디폴트 5%) 를 통해 포지션 보유 중 수익을 보호합니다. 5. 가격이 트레일링 스톱 또는 200일 SMA 이하로 떨어질 때 위치에서 빠져나갑니다.

전략적 장점

  1. 트렌드 및 모멘텀 이중 필터링을 결합하여 거래 정확성을 향상시킵니다.
  2. 수익을 효과적으로 차단하기 위해 후속 중지 메커니즘을 사용합니다.
  3. 빈번한 거래를 피하기 위해 거래 간격을 설정합니다
  4. 다양한 시장 환경에 적응하기 위해 강력한 매개 변수 조정성
  5. 명확한 거래 논리, 이해하기 쉽고 실행하기 쉬운
  6. 높은 계산 효율을 가진 간단한 계산

전략 위험

  1. 이동 평균 지연은 입력 및 출력 신호가 지연될 수 있습니다.
  2. RSI 지표는 다양한 시장에서 잘못된 신호를 생성 할 수 있습니다.
  3. 고정 비율의 후속 정지는 모든 시장 환경에 적합하지 않을 수 있습니다.
  4. 매개 변수 최적화는 과도한 부착으로 이어질 수 있습니다.
  5. 매우 변동적인 시장에서 상당한 마감을 겪을 수 있습니다.

전략 최적화 방향

  1. 변동성 적응 트레일링 스톱 비율을 도입
  2. 보조 확인으로 부피 표시기를 추가합니다.
  3. 더 나은 감수성을 위해 기하급수적인 이동 평균으로 간단한 이동 평균을 대체
  4. 거래 시기를 최적화하기 위해 시장 정서 지표를 포함
  5. 동적 매개 변수 최적화 메커니즘 개발
  6. 멀티 타임프레임 전략 확인 메커니즘을 추가

요약

이것은 완전한 구조와 명확한 논리를 가진 양적 거래 전략입니다. 여러 기술적 지표를 결합함으로써 위험을 제어하면서 안정적인 수익을 추구합니다. 최적화 할 여지가 있지만 기본 프레임워크는 좋은 실용성과 확장성을 가지고 있습니다. 전략은 중장기 투자자에게 적합하며 다른 시장 환경에 잘 적응합니다.


/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("200 SMA Crossover Strategy", overlay=false)

// Define inputs
smaLength = input.int(200, title="SMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.float(40, title="RSI Threshold")
trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)")
waitingPeriod = input.int(10, title="Waiting Period (Days)")

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

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

// Plot the 200 SMA and RSI
plot(sma200, color=color.blue, linewidth=2, title="200 SMA")
plot(rsi, color=color.purple, title="RSI", display=display.none)

// Define buy and sell conditions
var isLong = false
var float lastExitTime = na
var float trailStopPrice = na

// Explicitly declare timeSinceExit as float
float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000)
canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod

buyCondition = close > sma200 and rsi < rsiThreshold and canEnter

if (buyCondition and not isLong)
    strategy.entry("Buy", strategy.long)
    trailStopPrice := na
    isLong := true

// Update trailing stop loss if long
if (isLong)
    trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100))

// Check for trailing stop loss or sell condition
if (isLong and (close < trailStopPrice or close < sma200))
    strategy.close("Buy")
    lastExitTime := time
    isLong := false

// Plot buy and sell signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


관련

더 많은