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

멀티 필터 트렌드 돌파구 스마트 이동 평균 거래 전략

저자:차오장, 날짜: 2024-12-20 15:49:05
태그:VWAPEMARSIADXATRHTFSMA

img

전반적인 설명

이 전략은 여러 가지 기술 지표 필터를 기반으로하는 트렌드 돌파구 거래 시스템이다. 이는 여러 가지 신호 확인을 통해 잘못된 브레이크오프를 필터링하고 거래 정확성을 향상시키기 위해 기하급수적인 이동 평균 (EMA), 볼륨 가중 평균 가격 (VWAP), 상대 강도 지수 (RSI), 평균 방향 지수 (ADX) 등 여러 기술적 지표를 결합합니다. 이 전략은 또한 더 높은 시간 프레임 트렌드 판단을 통합하고 효과적인 위험 통제를 위해 ATR 기반의 동적 스톱-로스 및 수익 취득 제도를 사용합니다.

전략 원칙

전략의 핵심 논리는 다음의 핵심 요소에 기초합니다.

  1. 트렌드 판단 시스템: 9 기간 및 21 기간 EMA 크로스오버를 사용하여 단기 트렌드 변화를 포착하고, 15 분 시간 프레임 50 기간 EMA를 참조하여 더 큰 트렌드 방향을 확인합니다.
  2. 가격 모멘텀 확인: 모멘텀 확인을 위해 RSI 지표를 사용합니다.
  3. 트렌드 강도 검증: 트렌드 강도를 판단하기 위한 ADX 지표를 포함하고, 트렌드 유효성을 보장하기 위해 ADX>25을 요구합니다.
  4. 가격 위치 검증: 가격 위치의 기준으로 VWAP를 사용하며, 가격이 올바른 VWAP 위치에 있어야 합니다.
  5. 부피 확인: 충분한 시장 참여를 보장하기 위해 거래 부피가 10 기간 평균 부피보다 1.5배가 되어야 합니다.
  6. 리스크 관리: 계좌 자금의 고정 비율과 ATR에 기초한 포지션 크기를 동적으로 계산하며, 스톱 로스 (stop loss) 에 1.5x ATR, 영업 수익에 3x ATR을 사용합니다.

전략적 장점

  1. 여러 신호 확인 메커니즘은 잘못된 신호의 간섭을 크게 줄입니다.
  2. 더 높은 시간 프레임 분석과 더 낮은 시간 프레임 분석의 조합은 트렌드 판단의 정확성을 향상시킵니다.
  3. 역동적인 포지션 관리와 스톱 로스/트랙프로프트 설정은 좋은 리스크 통제를 달성합니다.
  4. 거래 확증으로 볼륨 브레이크오웃을 사용하는 것은 거래 신뢰성을 향상시킵니다.
  5. 강력한 매개 변수 조정성은 다른 시장 조건에 최적화를 촉진합니다.

전략 위험

  1. 여러 필터로 인해 유효한 거래 기회를 놓칠 수 있습니다.
  2. 다양한 시장에서 빈번한 거래 신호를 생성할 수 있습니다.
  3. 매개 변수 최적화는 역사적 데이터의 과도한 적합성으로 이어질 수 있습니다.
  4. 매우 변동적인 시장에서 ATR 정지는 너무 넓을 수 있습니다.

전략 최적화 방향

  1. 시장 조건에 따라 동적으로 매개 변수를 조정하는 적응 매개 변수 메커니즘을 도입합니다.
  2. 다른 시장 환경에서 다른 매개 변수 조합을 사용하기 위해 시장 환경 인식 모듈을 추가합니다.
  3. 매우 변동성 있는 기간을 피하기 위해 거래 시간 필터를 포함합니다.
  4. 시장 변동성에 기반한 동적 조정을 고려하여 스톱 로스 및 영업률을 최적화합니다.
  5. 트렌드 강도 등급을 추가하여 다른 강도 수준에서 다른 포지션 관리 전략을 채택합니다.

요약

이 전략은 여러 기술적 지표의 시너지를 통해 비교적 완전한 거래 시스템을 구축합니다. 그것의 핵심 장점은 자본 안전을 보호하기 위해 과학적 위험 관리 방법을 사용하는 동시에 다차원 신호 확인을 통해 거래 정확성을 향상시키는 데 있습니다. 특정 한계가 있지만 지속적인 최적화 및 개선으로이 전략은 실제 거래에서 안정적인 수익을 얻을 수 있습니다.


/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend-Filtered Scalping Strategy", overlay=true, shorttitle="TFSS")

// Inputs
emaShort     = input.int(9, title="EMA Short", minval=1)
emaLong      = input.int(21, title="EMA Long", minval=1)
rsiLength    = input.int(14, title="RSI Length", minval=1)
atrLength    = input.int(14, title="ATR Length", minval=1)
adxLength    = input.int(20, title="ADX Length", minval=1)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1)
volMultiplier = input.float(1.5, title="Volume Spike Multiplier", minval=1.0)
riskPercent  = input.float(1, title="Risk % of Equity", minval=0.1, step=0.1)

// Higher Time Frame for Trend Filter
htfTimeframe = input.timeframe("15", title="Higher Time Frame")
ema50HTF     = request.security(syminfo.tickerid, htfTimeframe, ta.ema(close, 50))

// Indicators
ema9  = ta.ema(close, emaShort)
ema21 = ta.ema(close, emaLong)
vwap  = ta.vwap(close)
rsi   = ta.rsi(close, rsiLength)
atr   = ta.atr(atrLength)
volAvg = ta.sma(volume, 10)

// ADX Calculation with Smoothing
[_, _, adx] = ta.dmi(adxLength, adxSmoothing)

// Entry Conditions
longCondition = (ta.crossover(ema9, ema21) and close > vwap and rsi > 55 and adx > 25 and close > ema50HTF and volume > volAvg * volMultiplier)
shortCondition = (ta.crossunder(ema9, ema21) and close < vwap and rsi < 45 and adx > 25 and close < ema50HTF and volume > volAvg * volMultiplier)

// Position Sizing Based on Risk %
capitalPerTrade = (strategy.equity * (riskPercent / 100)) / atr
longStop  = close - 1.5 * atr
longTarget = close + 3 * atr
shortStop = close + 1.5 * atr
shortTarget = close - 3 * atr

// Entry Logic
if longCondition and not strategy.opentrades
    strategy.entry("Long", strategy.long, qty=capitalPerTrade)
    strategy.exit("Exit Long", from_entry="Long", stop=longStop, limit=longTarget)

if shortCondition and not strategy.opentrades
    strategy.entry("Short", strategy.short, qty=capitalPerTrade)
    strategy.exit("Exit Short", from_entry="Short", stop=shortStop, limit=shortTarget)

// Alerts
alertcondition(longCondition, title="Long Entry Alert", message="Long Condition Triggered!")
alertcondition(shortCondition, title="Short Entry Alert", message="Short Condition Triggered!")

// Plot Indicators
plot(ema9, title="EMA 9", color=color.green)
plot(ema21, title="EMA 21", color=color.red)
plot(vwap, title="VWAP", color=color.blue)
plot(ema50HTF, title="HTF EMA 50", color=color.purple)
hline(55, "RSI Long Threshold", color=color.green)
hline(45, "RSI Short Threshold", color=color.red)


관련

더 많은