평균 방향성 지수 필터 기반 이동 평균 거부 전략

ADX MA WMA
생성 날짜: 2024-05-17 10:35:58 마지막으로 수정됨: 2024-05-17 10:35:58
복사: 1 클릭수: 644
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

평균 방향성 지수 필터 기반 이동 평균 거부 전략

개요

이 전략은 여러 이동 평균 (MA) 을 주요 거래 신호로 사용하고, 평균 방향 지수 (ADX) 와 결합하여 필터로 사용합니다. 전략의 주요 아이디어는 빠른 MA, 느린 MA 및 평균 MA의 관계를 비교하여 잠재적인 다단계 및 빈도 기회를 식별하는 것입니다. 동시에, ADX 지표는 거래 신호의 신뢰성을 높이기 위해 충분한 경향을 가진 시장 환경을 필터링합니다.

전략 원칙

  1. 빠른 MA, 느린 MA, 평균 MA를 계산한다.
  2. 마감 가격과 느린 MA의 관계를 비교하여 잠재적인 다단계와 빈단계 수준을 식별한다.
  3. 마감 가격과 빠른 MA의 관계를 비교하여 다단계와 빈단계 수준을 확인한다.
  4. 트렌드 강도를 측정하기 위해 ADX 지표를 수동으로 계산한다.
  5. 급속한 MA가 평균 MA를 상향으로 통과하고 ADX가 설정된 임계값보다 크며, 다단계 수준이 확인되면, 다단계 출전 신호를 생성한다.
  6. 빠른 MA가 하향으로 평균 MA를 통과하고, ADX가 설정된 임계값보다 크며, 공중선 레벨이 확인되면 공중선 진입 신호를 생성한다.
  7. 종식 가격이 느린 MA를 아래로 넘어가면 다단계 출구 신호가 발생하며, 종식 가격이 느린 MA를 위로 넘어가면 공백 출구 신호가 발생한다.

전략적 이점

  1. 여러 MA를 사용하면 시장의 동향과 동력의 변화를 더 포괄적으로 포착할 수 있습니다.
  2. 빠른 MA, 느린 MA 및 평균 MA의 관계를 비교하여 잠재적인 거래 기회를 식별 할 수 있습니다.
  3. ADX 지표를 필터로 사용하면, 흔들리는 시장에서 과도한 가짜 신호를 방지하고 거래 신호의 신뢰성을 향상시킬 수 있습니다.
  4. 전략의 논리는 명확하고, 이해하기 쉽고, 실행하기 쉽다.

전략적 위험

  1. 트렌드가 보이지 않거나 시장이 흔들리는 경우, 이 전략은 더 많은 가짜 신호를 생성할 수 있으며, 이는 빈번한 거래와 손실을 초래할 수 있다.
  2. 이 전략은 MA와 ADX와 같은 지표에 의존하여 초기 트렌드 형성 기회를 놓칠 수 있습니다.
  3. 전략의 매개 변수 설정 (MA 길이 및 ADX 값과 같은) 은 전략의 성능에 큰 영향을 미치며, 다른 시장과 품종에 따라 최적화가 필요합니다.

전략 최적화 방향

  1. 거래 신호의 신뢰성과 다양성을 높이기 위해 RSI, MACD 등과 같은 다른 기술 지표를 도입하는 것을 고려하십시오.
  2. 다른 시장 환경에 대해, 시장의 변화에 적응하기 위해 다른 파라미터 조합을 설정할 수 있습니다.
  3. 잠재적인 손실을 통제하기 위해 위험 관리 조치를 도입합니다.
  4. 경제 데이터, 정책 변화 등과 같은 기초적인 분석과 결합하여 더 포괄적인 시장 관점을 얻을 수 있습니다.

요약하다

평균 방향 지수 필터 기반의 평선 거부 전략은 여러 MA 및 ADX 지표를 활용하여 잠재적인 거래 기회를 식별하고 낮은 품질의 거래 신호를 필터링합니다. 이 전략은 논리적으로 명확하고 이해하기 쉽고 구현되지만 실제 응용에서는 시장 환경의 변화에 주의를 기울이고 다른 기술 지표와 위험 관리 조치와 함께 최적화해야합니다.

전략 소스 코드
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gavinc745

//@version=5
strategy("MA Rejection Strategy with ADX Filter", overlay=true)

// Input parameters
fastMALength = input.int(10, title="Fast MA Length", minval=1)
slowMALength = input.int(50, title="Slow MA Length", minval=1)
averageMALength = input.int(20, title="Average MA Length", minval=1)
adxLength = input.int(14, title="ADX Length", minval=1)
adxThreshold = input.int(20, title="ADX Threshold", minval=1)

// Calculate moving averages
fastMA = ta.wma(close, fastMALength)
slowMA = ta.wma(close, slowMALength)
averageMA = ta.wma(close, averageMALength)

// Calculate ADX manually
dmPlus = high - high[1]
dmMinus = low[1] - low
trueRange = ta.tr

dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength)
dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength)
trSmoothed = ta.wma(trueRange, adxLength)

diPlus = dmPlusSmoothed / trSmoothed * 100
diMinus = dmMinusSmoothed / trSmoothed * 100
adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength)

// Identify potential levels
potentialLongLevel = low < slowMA and close > slowMA
potentialShortLevel = high > slowMA and close < slowMA

// Confirm levels
confirmedLongLevel = potentialLongLevel and close > fastMA
confirmedShortLevel = potentialShortLevel and close < fastMA

// Entry signals
longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold
shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold

// Exit signals
longExit = ta.crossunder(close, slowMA)
shortExit = ta.crossover(close, slowMA)

// Plot signals
plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// Plot moving averages and ADX
plot(fastMA, title="Fast MA", color=color.blue)
plot(slowMA, title="Slow MA", color=color.red)
plot(averageMA, title="Average MA", color=color.orange)
// plot(adx, title="ADX", color=color.purple)
// hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed)

// Execute trades
if longEntry
    strategy.entry("Long", strategy.long)
else if longExit
    strategy.close("Long")

if shortEntry
    strategy.entry("Short", strategy.short)
else if shortExit
    strategy.close("Short")