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

ADX 트렌드 브레이크업 모멘텀 거래 전략

저자:차오장, 날짜: 2024-11-28 15:44:59
태그:ADXDMIMAATR

img

전반적인 설명

이 전략은 평균 방향 지수 (ADX) 와 가격 브레이크아웃을 기반으로 한 양적 거래 전략이다. 이 전략은 주로 ADX 지표 값을 모니터링하여 시장 트렌드 강도를 평가하고 시장 동력을 파악하기 위해 가격 브레이크아웃 신호를 결합합니다. 이 전략은 특정 거래 세션 내에서 작동하며 스톱 로스 및 일일 거래 제한을 통해 리스크 관리를 구현합니다.

전략 원칙

핵심 논리는 다음의 핵심 요소들을 포함합니다.

  1. ADX 모니터링: ADX 지표를 사용하여 트렌드 강도를 평가하며, ADX 값이 17.5 이하로 되면 새로운 트렌드 형성 가능성이 나타난다.
  2. 가격 유출 탐지: 지난 34 기간 동안 가장 높은 폐쇄 가격을 추적하고, 현재 가격이 이 저항을 넘어서면 거래 신호를 유발합니다.
  3. 세션 관리: 낮은 유동성 기간을 피하기 위해 지정된 거래 시간 (0730-1430) 에만 작동합니다.
  4. 위험 관리 메커니즘:
    • 단일 거래 손실을 제한하기 위한 고정 달러 스톱 로스
    • 회당 최대 3 거래 제한
    • 세션 종료 시 자동 포지션 폐쇄

전략적 장점

  1. 트렌드 캡처 능력: ADX 지표와 가격 브레이크아웃 조합을 통해 초기 트렌드 단계를 효과적으로 식별합니다.
  2. 포괄적 리스크 관리: 고정 스톱 로스, 거래 제한 및 자동 폐쇄 메커니즘을 포함한 여러 가지 리스크 제어 조치.
  3. 높은 자동화: 명확한 전략 논리는 수동 개입 없이 완전히 자동화된 거래를 가능하게 합니다.
  4. 강한 적응력: 매개 변수를 다른 시장 조건에 맞게 조정할 수 있습니다.

전략 위험

  1. 가짜 브레이크업 위험: 다양한 시장에서 연속적으로 중단될 수 있습니다.
  2. 매개 변수 의존성: 전략의 효과는 ADX 임계 및 뷰백 기간 설정에 크게 의존합니다.
  3. 시간 제한: 특정 세션에서만 거래하면 기회를 놓칠 수 있습니다.
  4. 스톱 로스 구성: 고정 달러 스톱은 다른 변동성 환경에서 유연성이 부족할 수 있습니다.

최적화 방향

  1. 동적 스톱 로스: 다른 시장 변동성 조건에 ATR 기반 동적 스톱을 구현하는 것이 좋습니다.
  2. 시장 환경 필터: 높은 변동성 환경에서 거래를 조정하거나 일시 중지하기 위해 변동성 필터를 추가합니다.
  3. 입력 최적화: 브레이크아웃 신호 신뢰성을 향상시키기 위해 볼륨 확인을 추가하는 것을 고려하십시오.
  4. 동적 매개 변수 조정: ADX 임계값 및 뷰백 기간에 대한 적응 조정 메커니즘을 구현합니다.

요약

이 전략은 명확한 논리를 가진 잘 구성된 트렌드-추천 전략이다. 효과적인 리스크 관리 프레임 워크 아래 ADX 지표와 가격 브레이크오웃을 결합하여 시장 트렌드를 포착한다. 최적화 할 여지가 있지만 전략의 기초는 견고하고 양적 거래 시스템의 기본 구성 요소로 적합하다. 거래자는 라이브 거래 전에 철저한 백테스팅과 매개 변수 최적화를 수행하고 시장 조건에 따라 특정 개선 사항을 수행하는 것이 좋습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
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/
// © HuntGatherTrade
// ========================
// NQ 30 minute, ES 30 minute

//@version=5
strategy("ADX Breakout", overlay=false, initial_capital=25000, default_qty_value=1)

// ===============================
// Input parameters
// ===============================
stopLoss = input(1000.0, title="Stop Loss ($)", group="Exits")
session = input("0730-1430:1234567", group="Trade Session")
highestLB = input(34, title="Highest lookback window", group="Indicator values")

// ===============================
// Trade Session Handling
// ===============================
t = time(timeframe.period, session)

// Reset numTrades at the start of each session
var int numTrades = 0
is_new_session = ta.change(time("D")) != 0
if is_new_session
    numTrades := 0

// ===============================
// Entry Conditions
// ===============================
[plusDI, minusDI, adxValue] = ta.dmi(50, 14)
entryCondition = (close >= ta.highest(close, highestLB)[1]) and (adxValue < 17.5) and (strategy.position_size == 0) and (numTrades < 3) and not na(t)

// ===============================
// 7. Execute Entry
// ===============================
var float stopPricePlot = na

if entryCondition
    entryPrice = close + syminfo.mintick
    strategy.entry("Long Entry", strategy.long, stop=entryPrice)
    //stopPrice = strategy.position_avg_price - (stopLoss / syminfo.pointvalue)
    //strategy.exit("Stop Loss", "Long Entry", stop=stopPrice)
    numTrades += 1

if (strategy.position_size > 0) and (strategy.position_size[1] == 0)
    stopPoints = stopLoss / syminfo.pointvalue
    stopPrice = strategy.position_avg_price - stopPoints
    stopPrice := math.round(stopPrice / syminfo.mintick) * syminfo.mintick
    strategy.exit("Stop Loss", from_entry="Long Entry", stop=stopPrice)


if ta.change(strategy.opentrades) == 1
    float entryPrice = strategy.opentrades.entry_price(0)
    stopPricePlot := entryPrice - (stopLoss / syminfo.pointvalue)

if ta.change(strategy.closedtrades) == 1
    stopPricePlot   := na

plot(stopPricePlot, "Stop-loss level", color.red, 1, plot.style_linebr)

// ===============================
// Exit at End of Session
// ===============================
if na(t) and strategy.position_size != 0
    strategy.close_all(comment="End of Day Exit")

관련

더 많은