동적 트렌드 추적 역전 전략

저자:차오장, 날짜: 2024-01-16 15:35:18
태그:

img

전반적인 설명

동적 트렌드 추적 역전 전략 (Dynamic Trend Tracking Reversal Strategy) 은 JD 순차 지표에 기반한 단기 정량적 거래 전략이다. 이 전략은 실시간으로 가격 최고와 최하위를 추적함으로써 현재 트렌드 방향과 동력을 결정하여 출입 및 출출 시기를 위해 시장 역전 지점을 효율적으로 파악합니다. 전통적인 JD 순차 전략과 비교하면이 전략은 다음과 같은 개선 사항을 제공합니다.

  1. 가격 상승과 하락을 사용해서 가격 상승과 하락을 사용해서
  2. 최대 카운터 숫자는 9 대신 7이므로 더 빠른 거래 신호 생성이 가능합니다.
  3. 지원/저항 라인 및 5번의 역전 옵션을 Stop Loss로 추가합니다.

이 전략은 5분 및 15분 차트와 같은 단기 시간 프레임에 적합하며, 이는 단기 가격 변동과 반전 기회를 효과적으로 포착할 수 있습니다.

전략 논리

동적 트렌드 추적 역전 전략의 핵심 논리는 JD 순차 지표에 기반합니다. 현재 기간의 높은 가격과 낮은 가격을 이전 두 기간의 가격과 비교함으로써, 이 지표는 연속적인 높은 가격이나 낮은 가격의 하락이 발생했는지 여부를 결정하고 1에서 7까지 순차적인 수치를 생성합니다. 수치가 7까지 축적되면 거래 신호가 생성됩니다.

구체적으로, 전략은 다음과 같은 변수를 정의합니다:

  • sp_up: 현재 높은 가격이 2 기간 전의 높은 가격을 초과할 때 true
  • sp_dn: 현재 낮은 가격이 2주기 전 낮은 가격 이하로 떨어지면 true
  • sp_ct: 현재 카운트, 1의 증가를 할 때마다 sp_up 또는 sp_dn는 사실입니다, 최대 7
  • sp_com: 7을 세면 true
  • sp_usr: 7번 계산과 sp_up의 중간 가격, 상승 저항으로 작용합니다.
  • sp_dsr: 7번 계산과 sp_dn의 중간 가격, 하향지원 역할을 합니다.

트레이드 신호 생성 논리는 다음과 같습니다.

  • 긴 신호: sp_com는 사실이고 sp_dn은 사실이며, 카운트 완료와 하락 추세를 나타냅니다.
  • 짧은 신호: sp_com는 사실이고 sp_up는 사실이며, 카운트 완료와 상승 추세를 나타냅니다.

스톱 손실 논리는 다음과 같습니다.

  • 롱 SL: 5로 계산 역전 (sp_up true) 또는 sp_usr 이상의 가격 교차
  • 짧은 SL: 5으로 계산 역전 (sp_dn true) 또는 sp_dsr 아래로 가격 교차

트렌드 방향과 강도를 결정하기 위해 실시간으로 최고/하위치를 비교하여, 진입에 대한 카운트 기반 타이밍과 함께, 이 전략은 단기 반전 기회를 효과적으로 포착할 수 있습니다. 스톱 로스 라인은 또한 위험을 제어하도록 구성됩니다.

이점 분석

전통적인 JD 연속 전략과 비교하면 동적 트렌드 추적 역전 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 더 빠른 신호 생성. 높은/저한 비교를 사용하면 추세를 포착하는 데 가까운 가격보다 더 빠르며, 7 카운트는 9 카운트보다 더 빨리 신호를 생성합니다.
  2. 증강된 스톱 로스 메커니즘. 5 카운트 역전 및 지원/저항 스톱 로스 추가로 더 나은 리스크 통제가 가능합니다.
  3. 유연한 구성. 중지 손실을 포함하고 부분 카운트를 표시하는 옵션은 유연성을 추가합니다.
  4. 단기 거래에 적합합니다. 적절한 스톱 손실과 결합된 고 주파수 신호는 단기 시간 프레임에 잘 맞습니다.

이 전략의 주요 장점은 단기 이벤트로 인한 큰 변동을 효과적으로 파악할 수 있는 빠른 반응이다. 또한 알고리즘 신호 생성 및 스톱 로스 기계화는 거래자의 정서적 간섭을 줄여 일관성을 향상시킬 수 있다.

위험 분석

동적 트렌드 추적 역전 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 높은 주파수 거래로 인해 거래 비용이 증가합니다. 더 많은 거래는 더 높은 수수료와 미끄러진 비용으로 이어집니다.
  2. 잘못된 신호에 취약합니다. 시장의 최고와 최저를 비교하면 종종 부당한 거래와 손실이 발생할 수 있습니다.
  3. 공격적 인 스톱. 하드 스톱은 스파이크에 취약하며 적시에 조정해야합니다.

위의 위험을 완화하기 위해 전략은 다음 측면으로 최적화 될 수 있습니다.

  1. 거래당 자본 사용량을 낮추기 위해 포지션 크기를 줄이세요.
  2. 비효율적인 거래를 피하기 위해 불안한 시장에서 거래를 중지하십시오.
  3. 후속 스톱이나 탈출 스톱을 사용해서 함락될 확률을 줄일 수 있습니다.

최적화 방향

동적 트렌드 추적 역전 전략은 다음과 같은 방향으로 더 이상 최적화 할 수있는 충분한 공간이 있습니다.

  1. 다중 시간 프레임 조합: 더 높은 시간 프레임에서 주요 트렌드 방향을 결정하여 거래를 피하십시오.

  2. 다른 지표와 결합. 신호 품질을 향상시키기 위해 변동성 메트릭, 볼륨 데이터 등을 포함합니다.

  3. 추가 검증을 위한 기계 학습. 오류 트레이드를 줄이기 위해 AI/ML 알고리즘을 거래 신호에 대한 보조 판단으로 활용합니다.

  4. 매개 변수 조정. 다른 시장 조건에 맞게 카운트 기간, 거래 세션, 포지션 사이징 등과 같은 매개 변수를 최적화합니다.

  5. 위험 통제 메커니즘을 확장하고, 더 복잡한 위험 관리 기술을 도입하여, 적응적 중지, 포지션 사이즈 등으로 위험을 더욱 제한합니다.

  6. 백테스팅을 통한 전략 평가. 매개 변수 안정성을 측정하기 위해 백테스트의 표본 크기와 시간 프레임을 확장하십시오.

결론

동적 트렌드 추적 역전 전략은 트렌드 방향과 강도를 결정하기 위해 가격 최고와 최저의 실시간 비교를 통해 단기 역전 기회를 포착하며, 거래 타이밍을위한 JD 순차 지표 내의 7 카운트 규칙과 함께합니다. 전통적인 JD 전략과 비교하면이 전략은 폐쇄 가격 대신 최고 / 최저, 단축 카운트 기간, 추가 스톱 로스 메커니즘 등을 사용하여 더 빠른 신호 생성을 가능하게합니다.

이 전략의 핵심 강점은 단기 반전 거래에 적합한 빠른 반응에 있다. 동시에 높은 거래 빈도 및 공격적인 스톱과 같은 위험이 존재한다. 미래 최적화 방향에는 매개 변수 조정, 위험 통제 강화, 멀티 타임프레임 조합 등이 포함된다. 지속적인 최적화와 반복을 통해이 전략은 단기 반전 신호를 효율적으로 캡처하는 강력한 도구가 될 가능성이 있다.


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @NeoButane 7 Dec. 2018
// JD Aggressive Sequential Setup
// Not based off official Tom DeMarke documentation. As such, I have named the indicator JD instead oF TD to reflect this, and as a joke.
//
// Difference vs. TD Sequential: faster trade exits and a unique entry. Made for low timeframes.
// - Highs or lows are compared instead of close.
// - Mirrors only the Setup aspect of TD Sequential (1-9, not to 13)
// - Count maxes out at 7 instead of 9. Also part of the joke if I'm going to be honest here

// v1 - Release - Made as a strategy, 7 count
//    . S/R on 7 count
//   .. Entry on 7 count
//  ... Exit on 5 count or S/R cross

//@version=3
title = "JD Aggressive Sequential Setup"
vers  = " 1.0 [NeoButane]"
total = title + vers
strategy(total, total, 1, 0)

xx        = input(true, "Include S/R Crosses Into Stop Loss")
show_sp   = input(true, "Show Count 1-4")
sp_ct     = 0
inc_sp(x) => nz(x) == 7 ? 1 : nz(x) + 1
sp_up     = high > high[2]
sp_dn     = low < low[2]
sp_col    = sp_up ? green : red
sp_comCol = sp_up ? red : green
sp_ct    := sp_up ? (nz(sp_up[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : sp_dn ? (nz(sp_dn[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : na
sp_com    = sp_ct == 7
sp_sr     = valuewhen(sp_ct == 5, close, 0)
sp_usr    = valuewhen(sp_ct == 7 and sp_up, sma(hlc3, 2), 0)
sp_usr   := sp_usr <= sp_usr[1] * 1.0042 and sp_usr >= sp_usr[1] * 0.9958 ? sp_usr[1] : sp_usr
sp_dsr    = valuewhen(sp_ct == 7 and sp_dn, sma(hlc3, 2), 0)
sp_dsr   := sp_dsr <= sp_dsr[1] * 1.0042 and sp_dsr >= sp_dsr[1] * 0.9958 ? sp_dsr[1] : sp_dsr
locc = location.abovebar
plotchar(show_sp and sp_ct == 1, 'Setup: 1', '1', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 2, 'Setup: 2', '2', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 3, 'Setup: 3', '3', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 4, 'Setup: 4', '4', locc, sp_col, editable=false)
plotshape(sp_ct == 5, 'Setup: 5', shape.xcross, locc, sp_comCol, 0, 0, '5', sp_col)
plotshape(sp_ct == 6, 'Setup: 6', shape.circle, locc, sp_comCol, 0, 0, '6', sp_col)
plotshape(sp_ct == 7, 'Setup: 7', shape.circle, locc, sp_comCol, 0, 0, '7', sp_col)
// plot(sp_sr, "5 Count Support/Resistance", gray, 2, 6)
plot(sp_usr, "7 Count Resistance", maroon, 2, 6)
plot(sp_dsr, "7 Count Support", green, 2, 6)

long  = (sp_com and sp_dn)
short = (sp_com and sp_up)
sl_l  = xx ? crossunder(close, sp_dsr) or (sp_ct == 5 and sp_up) or short : (sp_ct == 5 and sp_up) or short
sl_s  = xx ? crossover(close, sp_usr) or (sp_ct == 5 and sp_dn) or long : (sp_ct == 5 and sp_dn) or long

strategy.entry('L', 1, when = long)
strategy.close('L', when = sl_l)
strategy.entry('S', 0, when = short)
strategy.close('S', when = sl_s)

더 많은