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

동력 필터링으로 트렌드를 따르는 거래 전략

저자:차오장, 날짜: 2024-06-03 11:23:02
태그:MACDMARSIATR

img

전반적인 설명

이 전략은 시장의 트렌드 기회를 파악하기 위해 이동 평균 (MA), 상대 강도 지수 (RSI), 평균 진정한 범위 (ATR) 등의 기술적 분석 도구를 결합합니다. 이 전략은 트렌드 방향을 결정하기 위해 이중 이동 평균 크로스오버를 사용하고 거래 신호의 추진력 필터링을 위해 RSI 지표를 사용합니다. 또한 위험을 관리하기 위해 스톱 로스의 기초로 ATR을 사용합니다.

전략 원칙

이 전략의 핵심은 다른 기간 (고속 및 느린) 을 가진 두 이동 평균의 교차를 사용하여 시장 트렌드를 식별하는 것입니다. 빠른 MA가 느린 MA보다 높을 때 상승 추세를 나타내고 전략은 긴 신호를 생성합니다. 반대로 빠른 MA가 느린 MA보다 낮을 때 하락 추세를 나타내고 전략은 짧은 신호를 생성합니다.

거래 신호의 신뢰성을 향상시키기 위해 전략은 RSI 지표를 모멘텀 필터로 도입합니다. 긴 포지션은 RSI가 특정 임계치 (예: 50) 이상일 때만 허용되며, 짧은 포지션은 RSI가 그 임계치 이하일 때만 허용됩니다. 이것은 옆 시장 또는 모멘텀이 부족할 때 거래를 피하는 데 도움이됩니다. 따라서 신호 품질을 향상시킵니다.

또한 전략은 스톱 로스 기준으로 ATR을 사용하며, 최근 기간 동안의 가격 변동에 따라 스톱 로스 수준을 동적으로 조정합니다. 이 적응 스톱 로스 접근 방식은 불분명한 트렌드 중에 빠른 스톱을 통해 마이너 다운을 제어 할 수 있으며, 강력한 트렌드 중에 더 많은 수익을 창출하여 전략 수익을 높일 수 있습니다.

전략적 장점

  1. 트렌드 추적: 이중 이동 평균 크로스오버를 통해 시장 트렌드를 포착함으로써 전략은 주요 시장 방향에 맞춰 승률을 높일 수 있습니다.
  2. 모멘텀 필터링: RSI 지표는 트레이딩 신호의 2차 확인을 위해 사용되며, 모멘텀이 불충분할 때 맹목적인 엔트리를 피하고 개별 트레이드의 품질을 향상시킵니다.
  3. 적응적 스톱 로스: ATR에 기반한 스톱 로스 수준을 동적으로 조정함으로써 전략은 다른 시장 조건에 대한 위험 적응을 달성하고, 인출을 줄이고 자본 효율성을 향상시킵니다.
  4. 단순성과 사용 편의성: 전략 논리는 명확하고 몇 가지 매개 변수를 가지고 있으며, 대부분의 투자자에게 적합하며 이해하기 쉽고 구현하기 쉽습니다.

전략 위험

  1. 윙사 위험: 불분명한 추세로 불안한 시장에서 빈번한 크로스오버는 과도한 거래 신호로 이어지며 빈번한 거래와 급속한 자본 고갈로 이어질 수 있습니다.
  2. 매개 변수 위험: 전략의 성능은 매개 변수 설정에 민감하며 다른 매개 변수들은 완전히 다른 결과를 가져올 수 있습니다. 매개 변수들이 올바르게 선택되지 않으면 전략은 실패할 수 있습니다.
  3. 트렌드 역전 위험: 시장이 갑자기 급격한 변화를 경험하고 트렌드가 급격하게 역전되면 전략은 손실을 제 시간에 막을 수 없으며 상당한 손실을 초래할 수 있습니다.
  4. 전체 위험: 전략은 추진력을 필터링하는 것을 포함하지만, 여전히 주로 추세를 따르는 전략입니다. 장기적인 측면 시장 또는 추세가 명백하지 않을 때 체계적인 위험에 직면 할 수 있습니다.

전략 최적화 방향

  1. 트렌드 강도 식별: 트렌드 강도 결정 외에도, 약한 트렌드에 대한 빈번한 거래를 피하고 트렌드 포착의 정확성을 향상시키기 위해 트렌드 강도 지표 (ADX와 같은) 를 도입할 수 있습니다.
  2. 긴 및 짧은 모멘텀의 차이: 현재의 전략은 긴 신호와 짧은 신호에 동일한 모멘텀 필터링 접근 방식을 적용합니다. 상승 및 하락 트렌드의 비대칭에 더 잘 적응하기 위해 긴 및 짧은 포지션에 대해 다른 RSI 임계치를 설정하는 것을 고려하십시오.
  3. 스톱 로스 최적화: ATR 기반의 스톱 로스 외에도 다른 스톱 로스 방법 (프로센트 스톱 로스, 지원/저항 수준 스톱 로스 등) 을 결합하여 더 많은 리스크 통제를 위해 다양화된 스톱 로스 시스템을 구성할 수 있습니다.
  4. 매개 변수 적응: 매개 변수 최적화 또는 적응 알고리즘을 도입하여 전략 매개 변수들이 시장 조건의 변화에 따라 자동으로 조정될 수 있도록 고려하여 전략의 적응성과 견고성을 향상시킵니다.

요약

이 전략은 트렌드 추적과 모멘텀 필터링을 효과적으로 결합하여 리스크를 관리하면서 시장의 트렌드 기회를 포착합니다. 전략 논리는 명확하고 구현하고 최적화하는 것이 쉽습니다. 그러나 실제 응용에서는 윙사 리스크와 매개 변수 리스크에주의를 기울여야합니다. 전략은 시장 특성과 개별 요구에 따라 유연하게 조정되고 최적화되어야합니다. 전반적으로 이것은 트렌드 포착과 리스크 통제를 모두 고려하는 균형 잡힌 전략으로 추가 탐구와 연습에 가치가 있습니다.


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

//@version=5
strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true)

// Input variables
fastLength = input(12, title="Fast MA Length")
slowLength = input(26, title="Slow MA Length")
signalLength = input(9, title="Signal Line Length")
stopLossPct = input(1.0, title="Stop Loss %") / 100
rsiLength = input(14, title="RSI Length")
rsiThreshold = input(50, title="RSI Threshold")

// Moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

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

// Entry conditions with RSI filter
bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold
bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold

// Calculate stop loss levels
longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct)
shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct)

// Execute trades
strategy.entry("Long", strategy.long, when=bullishSignal)
strategy.entry("Short", strategy.short, when=bearishSignal)
strategy.exit("Exit Long", "Long", stop=longStopLoss)
strategy.exit("Exit Short", "Short", stop=shortStopLoss)

// Plotting signals
plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal")
plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal")

// Plot MACD
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")

// Plot RSI
hline(rsiThreshold, "RSI Threshold", color=color.gray)
plot(rsi, color=color.purple, title="RSI")



관련

더 많은