동적 변동성 조정 강화된 추세 돌파 백테스트 거래 전략

ATR SMA EMA TP SL JIMENEZ
생성 날짜: 2025-07-01 13:46:39 마지막으로 수정됨: 2025-07-01 13:46:39
복사: 0 클릭수: 258
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

동적 변동성 조정 강화된 추세 돌파 백테스트 거래 전략 동적 변동성 조정 강화된 추세 돌파 백테스트 거래 전략

개요

JIMENEZ 동적 변동조절 강화형 트렌드 브레이크 재테스트 트레이딩 전략은 특히 변동성 시장을 위해 고안된 전술적 거래 시스템이다. 이 전략의 핵심 아이디어는 시장 브레이크 이후의 재테스트 포인트 위치를 식별하고, 트렌드 지속을 확인한 조건에 정밀 진입을 기반으로 한다. 이 시스템은 스윙 구조 검증, 지능적인 냉각 기간 및 가격 간격 논리, 3 기둥 뒤에 있는 스톱 로스 압축 및 ?? 강도 및 ATR에 기반한 동적 수익 목표 설정을 통합한다. 이 전략은 특히 변동성 시장에서 정밀 진입과 리스크 을 제어하는 것을 추구하는 거래자에게 적합하다.

전략 원칙

JIMENEZ 전략의 기본 원칙은 시장 구조의 변화와 트렌드 지속 신호를 식별하는 데 있습니다. 주요 구성 요소는 다음과 같습니다.

  1. 해부학 분석전략은 먼저 그램 형태를 심층적으로 분석하여, 주저하는 형태 (전체 그림자보다 작은 30%의 개체) 와 강력한 형태 (전체 그림자보다 1.5배 더 큰 개체) 를 식별한다. 이것은 돌파와 재측정에 대한 형태 기반을 제공한다.

  2. 빗나가는 논리

    • 다중 헤드 돌파구: 이전 은 주저형으로, 현재 의 종결 가격은 개시 가격보다 높으며 이전 보다 크다.
    • 다중 헤드 회전: 전조의 최저 가격은 전조의 두 번째 조의 폐쇄 가격 (± 0.3% 범위) 에 가깝고 폐쇄 가격은 오픈 가격보다 높다
    • 공중 돌파 및 회귀 논리는 다중 머리와는 반대
  3. 지능형 냉각기과도한 거래를 피하기 위해, 전략은 동적 냉각 기간 개념을 도입했다. 변동성이 상승하는 동안 냉각 기간은 자동으로 반으로 줄어들어서 더 자주 거래가 가능합니다. 정상적인 시장 조건에서 표준 냉각 기간을 유지합니다.

  4. 가격 간격 제어: 비슷한 가격으로 반복 입국을 방지하기 위해, 새로운 입국 지점과 이전 입국 지점 사이의 가격 차이는 최소가어야하거나 충분한 시간 간격이 있어야 한다.

  5. 동적 위험 관리

    • 수익 목표 동적 설정: 수익 목표가 탄소 강도 및 변동 상태에 따라 조정되며, 강도 조건에서 ATR의 배수를 1.5에서 2.5로 높인다.
    • 스톱로스 설정은 ATR에 기반하여 1.0배의 ATR 거리를 유지합니다.
    • 선택적 추적 중지, 버퍼 영역 곱셈을 통해 실현
  6. 다중 필터링 조건전략: 시간 필터링, 변동성 필터링, 거래량 확인과 같은 여러 조건을 결합하여 이상적인 조건에서만 입시를 보장합니다.

전략적 이점

  1. 정확한 입학 조건: -회복 모드, 모형 분석 및 다중 필터를 결합하여, 진입 지점이 높은 확률의 추세 지속 특성을 보장하여 거래 성공률을 크게 향상시킵니다.

  2. 적응력이 전략은 시장의 변동에 따라 거래 빈도와 수익 목표를 자동으로 조정할 수 있으며, 높은 변동의 기간에 더 적극적으로 기회를 잡을 수 있으며, 낮은 변동의 기간에는 더 보수적입니다.

  3. 세심한 위험 관리: 고정 ATR 배수의 중지 손실 설정은 위험과 시장의 변동에 비례하도록 보장하고, 동적 수익 목표는 거래의 강도에 따라 조정되어 위험 수익률을 최적화합니다.

  4. 과도한 거래 방지: 지능적인 냉각 기간과 가격 간격 논리는 비슷한 조건에서 자주 거래되는 것을 효과적으로 방지하고, 무효 거래와 절차 비용 손실을 줄인다.

  5. 시각화 거래 신호전략: 전략은 입시점, 중단 지점, 수익 목표 등과 같은 명확한 시각적 표시를 제공하여 거래자가 각 거래의 잠재적 위험과 수익을 직관적으로 이해할 수 있도록 도와줍니다.

  6. 다중 인증 메커니즘: 거래량이 평균보다 높고, ATR이 최소 하락값보다 높고, 특정 거래 시간 동안 여러 조건이 동시에 충족되는 것을 요구하여 잘못된 신호의 가능성을 크게 줄입니다.

  7. 적응력 있는 포지션 관리: 자본의 비율 방식을 사용하여 포지션을 설정하여, 위험 관리와 계좌 크기에 비례하여, 다양한 자본 크기의 거래자를 위해 적합합니다.

전략적 위험

  1. 리포트 포인트 오판 위험전략: 재검토 영역의 정의는 ((전 종점 가격 ± 0.3%) 특정 시장 환경에서 너무 엄격하거나 너무 완만하여 유효한 신호를 놓치거나 잘못된 신호를 발생시킬 수 있습니다. 해결책은 다른 스탠더드의 특성에 따라이 매개 변수를 조정하는 것입니다.

  2. 변동성 돌연변이 위험극단적인 상황에서는 ATR이 단기간에 급격하게 변동할 수 있으며, 이로 인해 정지 및 수익 목표를 설정하는 것이 합리적이지 않습니다. 극단적인 변동 기간 동안 전략을 일시 중지하거나 변동률 전환 장치와 결합하여 ATR 값을 평형하는 것이 좋습니다.

  3. 연속 신호 품질 감소: 전략 빠른 재입입 때 (냉각 기간이 반으로 줄어든 경우), 후속 신호의 품질은 첫 번째 신호보다 낮을 수 있다. 빠른 재입입 신호에 추가 확인 조건을 추가하는 것을 고려할 수 있다.

  4. 가격 공간 부족의 위험: 가로판 또는 좁은 통로에서 최소 가격 간격 요구 사항은 유효한 신호를 놓치게 할 수 있다. 해결책은 가격 간격 변수를 절대값이 아닌 상대값 (ATR의 퍼센트와 같은) 으로 설정하는 것이다.

  5. 과도한 위험을 최적화: 정책에는 여러 가지 조정 가능한 매개 변수가 포함되어 있으며, 역사적 데이터와 과도하게 일치하는 위험이 있습니다. 전향 테스트와 샘플 외 테스트를 사용하여 매개 변수의 안정성을 검증하는 것이 좋습니다.

  6. 거래량 허위 확인: 거래량만 EMA보다 높다는 것이 확인으로 충분하지 않을 수 있으며, 특히 높은 거래량과 함께 가짜 브레이크가 발생하는 경우. 거래량 분산 분석 또는 상대 거래량 지표를 포함하는 것이 고려 될 수 있습니다.

  7. 특정 시간 의존성: 전략의 시간 필터는 비거래 시간에 중요한 움직임을 놓칠 수 있다. 고정된 시간보다는 가격 행동에 기반한 필터링 메커니즘을 도입하는 것을 고려할 수 있다.

전략 최적화 방향

  1. 역동적으로 조정된 재측정 범위: 현재 전략은 고정된 응답 범위 ((±0.3%) 를 사용하며, 최근 변동성에 대한 자동 조정에 기반한 동적 응답 범위로 최적화 할 수 있습니다. 이것은 높은 파동의 시장은 일반적으로 더 넓은 응답 영역이 필요하고 낮은 파동의 시장은 더 좁은 응답 영역이 필요하기 때문에 다양한 변동 환경에서 신호의 정확성을 향상시킬 수 있습니다.

  2. 파동 구조 분석 강화: 현 전략의 흔들림 구조 분석은 비교적 간단하며, 지그자그 지표 또는 높은 낮은 점의 연속 분석을 도입하여 시장 구조를 식별하는 능력을 향상시킬 수 있습니다. 이것은 전략이 진정한 돌파구를 더 정확하게 식별하는 데 도움이 될 것입니다.

  3. 시장 감정 지표 통합RSI, MACD 또는 브린 띠와 같은 지표를 도입하여 시장의 전체적인 감정과 잠재적인 경향의 강도를 평가하여 역 추세 상황에서 입장을 피하고 전략의 승률을 높일 수 있습니다.

  4. 적응형 상쇄장치: 현재 전략은 3개의 기둥 뒤에 압축한 스톱로스를 추가적으로 최적화하여 시장 구조와 가격 행동에 기반한 동적 스톱로스 조정 메커니즘을 사용할 수 있습니다. 예를 들어, 스톱로스를 중요한 지원/저항점으로 이동하거나 스톱로스 거리를 변동률에 의해 조정합니다.

  5. 분기 수익 메커니즘: 분기 수익 전략을 적용하는 것을 고려하십시오. 예를 들어, 1.0 배의 ATR을 달성했을 때 포지션의 일부를 청산하고, 2.0 배의 ATR에서 다른 부분을 청산하여, 부분적인 이익을 보장하면서 일부 포지션이 더 큰 시장을 잡을 수 있습니다.

  6. 거래 시점 최적화: 고정된 시작 및 종료 시간을 사용하는 대신 통계 분석을 통해 다양한 거래 품종에 대한 최적의 거래 시간을 결정하여 다양한 시장 및 시간대에 대한 전략의 적응력을 향상시킵니다.

  7. 신호 품질 평가 시스템: 시장 구조, 변동 상태, 거래량 확인 강도 등의 요인을 종합적으로 고려한 신호 품질 점수 시스템을 개발하고, 점수에 따라 포지션 크기를 조정하고, 고품질 신호에 더 큰 포지션을 채택하고, 경계 신호에 대한 위험 구멍을 줄인다.

요약하다

JIMENEZ 동적 변동 조정 강화형 트렌드 돌파 회수 거래 전략은 정밀한 돌파-회수 메커니즘, 동적 위험 관리 및 지능형 냉각 메커니즘을 통해 거래자에게 완전한 거래 솔루션을 제공하는 정교하게 설계된 전술적 거래 시스템입니다. 이 전략은 특히 진동 시장에서 정밀한 입구 및 위험 제어에 중점을 두고 있으며, 여러 가지 필터링 조건을 통해 높은 확률 상황에서만 거래되도록합니다.

전략의 핵심 장점은 시장 상태에 따라 자동으로 거래 매개 변수를 조정할 수 있는 자기 적응성과 정교한 위험 제어 장치에 있습니다. 전략의 일관성을 유지하면서 다양한 시장 환경에 적응할 수 있습니다. 그러나 전략에는 매개 변수 설정의 민감성 및 가능한 과도한 최적화 문제와 같은 잠재적인 위험도 있습니다.

제안된 방향의 최적화, 특히 역동적인 재측정 간격을 조정하고, 시장 구조 분석을 강화하고, 신호 품질 점수 시스템을 도입함으로써, 이 전략은 그 성능과 안정성을 더욱 향상시킬 잠재력을 가지고 있다. 전체적으로, JIMENEZ 전략은 변동하는 시장에서 정밀한 거래를 추구하는 투자자들에게, 특히 위험 제어와 거래 규율에 중점을 둔 거래자들에게 고려할 가치가 있는 선택권을 제공합니다.

전략 소스 코드
/*backtest
start: 2024-06-30 00:00:00
end: 2025-06-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/




//@version=6
strategy("FS JIMENEZ)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs === //
lookback        = input.int(20, "Swing Structure Lookback")
cooldownBars    = input.int(5, "Base Cooldown Between Trades")
minATR          = input.float(1.0, "Min ATR Filter")
startHour       = input.int(7, "Start Hour (24h)")
endHour         = input.int(20, "End Hour (24h)")
minSpacing      = input.float(5.0, "Minimum Price Spacing (pts)")
spacingTimeout  = input.int(12, "Bars to Re-allow Entry at Same Price")
trailingBuffer  = input.float(1.0, "Trailing Buffer Multiplier")

// === Candle Anatomy === //
body         = math.abs(close - open)
upperWick    = high - math.max(close, open)
lowerWick    = math.min(close, open) - low
totalWick    = upperWick + lowerWick
isIndecisive = body < totalWick * 0.3
strongBody   = body > totalWick * 1.5 and body > body[1]

// === Filters === //
atr          = ta.atr(14)
atrSMA       = ta.sma(atr, 20)
volOK        = volume > ta.ema(volume, 20)
atrOK        = atr > minATR
volatilitySpike = atr > atrSMA * 1.2
timeOK       = (hour >= startHour and hour <= endHour)
freeToTrade  = strategy.position_size == 0

// === Setup Logic (Widened Retest Range) === //
bullBreakout = isIndecisive[1] and close > open and body > body[1]
bullRetest   = low[1] < close[2] * 1.003 and low[1] > close[2] * 0.997 and close[1] > open[1]
longRaw      = bullBreakout and bullRetest and strongBody and atrOK and timeOK and volOK

bearBreakout = isIndecisive[1] and close < open and body > body[1]
bearRetest   = high[1] > close[2] * 0.997 and high[1] < close[2] * 1.003 and close[1] < open[1]
shortRaw     = bearBreakout and bearRetest and strongBody and atrOK and timeOK and volOK

// === Smart Cooldown Logic === //
var int lastLongBar = na
var int lastShortBar = na
var float lastLongPrice = na
var float lastShortPrice = na

fastReEntry   = volatilitySpike and strongBody
cooldownLong  = fastReEntry ? math.floor(cooldownBars / 2) : cooldownBars
cooldownShort = fastReEntry ? math.floor(cooldownBars / 2) : cooldownBars

longTooClose  = not na(lastLongPrice) and math.abs(close - lastLongPrice) < minSpacing and bar_index - lastLongBar <= spacingTimeout
shortTooClose = not na(lastShortPrice) and math.abs(close - lastShortPrice) < minSpacing and bar_index - lastShortBar <= spacingTimeout

longValid  = longRaw and freeToTrade and (na(lastLongBar) or bar_index - lastLongBar > cooldownLong) and not longTooClose
shortValid = shortRaw and freeToTrade and (na(lastShortBar) or bar_index - lastShortBar > cooldownShort) and not shortTooClose

if longValid
    lastLongBar   := bar_index
    lastLongPrice := close

if shortValid
    lastShortBar   := bar_index
    lastShortPrice := close

// === TP/SL === //
tpMultiplierLong  = strongBody and volatilitySpike ? 2.5 : 1.5
tpMultiplierShort = strongBody and volatilitySpike ? 2.5 : 1.5

tpLong  = math.round(close + atr * tpMultiplierLong)
slLong  = math.round(close - atr * 1.0)

tpShort = math.round(close - atr * tpMultiplierShort)
slShort = math.round(close + atr * 1.0)

// === Trade Execution === //
if longValid
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL Long", from_entry="Long", limit=tpLong, stop=slLong, trail_points=trailingBuffer > 0 ? atr * trailingBuffer : na)

if shortValid
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL Short", from_entry="Short", limit=tpShort, stop=slShort, trail_points=trailingBuffer > 0 ? atr * trailingBuffer : na)