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

ADX 필터와 함께 MA 거부 전략

저자:차오장, 날짜: 2024-05-17 10:35:58
태그:ADXMAWMA

img

전반적인 설명

이 전략은 여러 이동 평균 (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. 보다 포괄적인 시장 관점을 얻기 위해 경제 데이터와 정책 변화와 같은 근본 분석을 결합합니다.

요약

ADX 필터와 함께하는 MA 거부 전략은 잠재적 인 거래 기회를 식별하고 저품질의 거래 신호를 필터링하기 위해 여러 MAs와 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")

관련

더 많은