다중 필터 트렌드 돌파 지능형 이동 평균 거래 전략

VWAP EMA RSI ADX ATR HTF SMA
생성 날짜: 2024-12-20 15:49:05 마지막으로 수정됨: 2024-12-20 15:49:05
복사: 0 클릭수: 427
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 필터 트렌드 돌파 지능형 이동 평균 거래 전략

개요

이 전략은 다중 기술 지표 에 기반 한 트렌드 트레이딩 시스템이다. 이 전략은 지수 이동 평균 ((EMA), 매출량 중도 평균 가격 ((VWAP), 상대적으로 강한 지수 ((RSI), 평균 트렌드 지수 ((ADX) 등 여러 기술 지표를 종합적으로 사용하여, 여러 신호 확인을 통해 가짜 을 필터링하여 거래의 정확성을 향상시킵니다. 이 전략은 또한 더 높은 시간 주기 트렌드 판단을 결합하고, ATR 기반의 동적 스톱 손실 스톱 프로그램을 채택하여, 위험을 효과적으로 제어합니다.

전략 원칙

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

  1. 트렌드 판단 시스템: 9주기 및 21주기 EMA의 교차를 사용하여 단기 트렌드 변화를 포착하고, 15분 주기의 50주기 EMA를 참조하여 더 큰 트렌드 방향을 확인한다.
  2. 가격 동력 확인: RSI 지표를 사용하여 동력 확인, 다중 헤드 요구 RSI> 55, 공허 헤드 요구 RSI< 45.
  3. 트렌드 강도 검증: 트렌드 강도를 판단하는 ADX 지표를 도입하고, 트렌드의 유효성을 보장하기 위해 ADX>25을 요구한다.
  4. 가격 위치 검증: VWAP를 가격 위치 참조로 사용하여, 가격이 올바른 VWAP 위치에 있는지 확인한다.
  5. 거래량 확인: 10주기 평균 거래량의 1.5배 이상의 거래량을 요구하여 시장에 충분한 참여를 보장합니다.
  6. 위험 관리: 계좌 총액의 고정 비율과 ATR 동적 계산 보유 규모를 기반으로 1.5배의 ATR을 스톱로, 3배의 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)