동적 트렌드 추적 역전 전략은 JD Sequential 지표에 기반한 단기 양적 거래 전략이다. 이 전략은 가격의 고점과 낮은 곳을 실시간으로 추적하여 현재의 트렌드 방향과 강도를 판단하여 시장의 역전점을 효율적으로 포착하고 진입과 출퇴근을 시정한다. 전통적인 JD Sequential 전략에 비해 다음과 같은 개선이 이루어졌다.
이 전략은 5분, 15분과 같은 짧은 시간 사이클에 적합하며, 단기 가격 변동과 역전 기회를 효과적으로 포착할 수 있다.
역동적 추세를 추적하는 역전 전략의 핵심 논리는 JD Sequential 지표에 기반합니다. 이 지표는 현재 주기의 고점과 이전 두 주기의 낮은 점을 비교하여 가격이 연속적으로 더 높은 고점을 만들거나 더 낮은 낮은 점을 만들지 여부를 판단하여 1-7의 순서적 수를 제공합니다. 이 수치는 7까지 누적되면 거래가 발생합니다.
특히, 이 전략은 다음과 같은 변수를 정의합니다.
거래 신호의 생성 논리는 다음과 같습니다.
이 논리는 다음과 같습니다.
이 전략은 실시간 비교 높은 낮은 점으로 트렌드 방향과 강도를 결정하고, 카운터 타이밍으로 출전을 할 수 있으며, 단기 반전 기회를 효과적으로 포착할 수 있다. 동시에 위험을 제어하기 위해 스톱 라인을 설정한다.
전통적인 JD Sequential 전략에 비해 동적 트렌드 추적 역전 전략은 다음과 같은 장점이 있습니다.
이 전략의 주요 장점은 신속한 반응으로 단기적 급격한 사건으로 인한 큰 변동성을 효과적으로 포착할 수 있다는 것입니다. 또한, 완전히 수동 거래에 비해 알고리즘 신호 생성 및 정지 손실은 거래자의 정서적 영향을 줄여 안정성을 높일 수 있습니다.
동적 트렌드를 추적하는 역전 전략에는 위험도 있습니다.
위와 같은 위험을 줄이기 위해 다음과 같은 측면에서 최적화할 수 있습니다.
동적 트렌드 추적 및 역전 전략에 대해 최적화할 수 있는 방안이 많습니다. 주요 방향은 다음과 같습니다.
다중 시간 주기 포트폴리지는 더 높은 시간 주기에서 주 트렌드 방향을 결정할 수 있으며, 주 트렌드와 상반되는 거래를 피할 수 있다.
다른 지표와 조합. 변동률 지표, 교류량 지표 등과 조합하여 신호의 질을 향상시킬 수 있다.
기계 학습 필터링. 기계 학습 알고리즘을 사용하여 거래 신호에 대한 보조 판단을 함으로써 잘못된 거래를 줄인다.
매개 변수 최적화. 수회주기 수, 거래시간, 포지션 비율 등의 매개 변수를 최적화하여 다른 시장 조건에 맞게 최적화할 수 있다.
더 많은 위험 관리 장치. 이동 상쇄, 포지션 제어와 같은 더 풍부한 위험 관리 수단이 추가되어 위험을 더욱 제한합니다.
재검사 축적 데이터 ᆞ 재검사 샘플량과 시간 간격을 확장하고, 테스트 파라미터의 안정성을 ᆞ
동적 트렌드 추적 역전 전략은 실시간으로 비교적 높은 낮은 점을 판단하여 트렌드 방향과 강도를 판단하고, JD Sequential 지표의 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)