다차원 엔트로피 모멘텀 추세 적응형 거래 시스템

CETP-Plus Shannon Entropy RSI ATR ADX EMA momentum 3D Histogram Volatility Filter
생성 날짜: 2025-08-11 09:46:42 마지막으로 수정됨: 2025-08-20 16:26:32
복사: 4 클릭수: 353
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다차원 엔트로피 모멘텀 추세 적응형 거래 시스템 다차원 엔트로피 모멘텀 추세 적응형 거래 시스템

개요

다차원 동량 트렌드 자조 거래 시스템은 이론에 기반한 정량 거래 전략으로, 핵심은 이론에 기반한 CETP-Plus 지표로, 이 지표는 이론에 기반한 이론에 기반한 이론에 기반한 이론에 기반한 이론에 기반한 이론에 기반한 CETP-Plus 지표입니다. 이 시스템은 지수 이동 평균의 최근 가중 원리 (EMA), 상대적으로 강한 이론의 동력 편차 (RSI), 평균 실제 범위 (ATR) 의 변동적 축소 (volatility scaling) 및 평균 방향 지수 (average directional index) 의 트렌드 강도를 하나의 평가로 통합합니다. 이 독특한 방법은 여러 지표의 복잡성을 피하고, 초기 트렌드 검출의 정확성과 다차원 거래의 균형성을 향상시킵니다.

전략 원칙

이 전략의 핵심 원칙은 금융 시장의 도표 패턴 분석에 Shannon ?? 을 적용하는 것이다. Shannon ?? 은 정보 이론에서 유래하여, 무작위 변수의 불확실성이나 “혼란의 정도”를 정량화하기 위해 사용된다. 이 전략에서, 다음과 같은 방법으로 ?? 을 계산하고 적용한다:

  1. 비율 계산전략은 먼저 세 가지 핵심 비율을 계산합니다. 실물 비율 (관향의 강도를 반영하는), 상도선 비율 (상도선 비율) 및 하도선 비율 (잠재적 반전을 반영하는).
  2. 지수적 쇠퇴 가중: 쇠퇴 인자 ((0.8) 를 사용하여 역사 데이터에 무게를 더하여 최근 데이터에 더 높은 무게를 부여하고, EMA와 비슷한 작동 원리
  3. 3차원 직사각형 지도 분기: ?? 비율을 3차원 직사각형에 넣고, 차원은 개체, 상조선, 하조선에 대응한다.
  4. 계산: 논 공식을 사용하여 직사각형의 값을 계산하고, 낮은 은 강한 패턴이 있음을 나타냅니다.
  5. 동력 편차 통합RSI와 비슷한 계산 방법을 사용하여 가격 움직임을 파악하고 점수를 조정합니다.
  6. 동향 강도 조정: ADX와 비슷한 계산 방법은 트렌드 방향과 강도를 감지하여 점수를 더 조정합니다.
  7. 변동성 조정ATR을 사용하여 변동성 축소하여 다양한 변동 환경에서 신호가 일치하도록 한다.

최종 CETP 스코어는 이러한 요소들의 복합적인 산물이며,正值은 부진을 경향이 있고,負值은 부진을 경향이 있다. 거래 논리는 간단하고 직접적이다: CETP 스코어가 설정된正값을 초과할 때 더하고,負값을 초과할 때 공백한다. 미세한 거래를 피하기 위해, 전략에는 최소 가격 이동 필터가 추가되어, 현재 필터 그래프가 거래를 촉발하기에 충분한 범위가 있음을 보장한다. 위험 관리는 퍼센트 스톱, ATR 배수 및 추적 스톱으로 구현된다.

전략적 이점

  1. 통합 신호CETP-Plus 지표는 여러 전통적인 지표 (EMA, RSI, ATR, ADX) 의 장점을 결합하여 단일하고 명확한 거래 신호를 제공하며 지표 충돌과 과다 적합성의 위험을 피합니다.

  2. 적응력전략: 전략은 시장 조건에 따라 자동으로 조정할 수 있으며, 다양한 변동 환경과 트렌드 강도에 적응할 수 있으며, 수동 개입이 필요하지 않고 여러 시장 상태에서 잘 작동합니다.

  3. 대칭 다공공 처리이 전략은 다단계 기회와 빈단계 기회에 동등한 무게를 부여하여 투기 시장과 투기 시장에서 효율적으로 작동할 수 있도록 하며, 방향성 편견에 영향을 받지 않습니다.

  4. 초기 트렌드 파악의 개념으로 시장 구조의 변화를 포착하여, 전통적인 지표보다 트렌드의 조기에 형성되는 것을 식별할 수 있으며, 더 나은 진입 시점을 제공합니다.

  5. 소음의 영향을 줄여라 분석과 직사각형 도표 분기 기술을 통해, 전략은 실제 신호와 시장 잡음을 구분할 수 있고, 가짜 신호의 발생을 줄일 수 있다.

  6. 사용자 정의많은 변수들이 서로 다른 거래 종류와 시간 프레임에 따라 최적화될 수 있어 전략은 매우 유연하고 적응할 수 있다.

  7. 전체적인 위험 관리: 퍼센티지 스톱, ATR 기반의 동적 스톱 및 추적 스톱, 그리고 최소 거래 필터와 효과적으로 통제된 철회 등의 다단계 위험 제어 메커니즘을 통합한다.

전략적 위험

  1. 매개변수 민감도: 전략에는 여러 가지 조정 가능한 매개 변수가 포함되어 있으며, 과도한 최적화는 실판 거래에서 좋지 않은 성능을 초래할 수 있습니다. 다른 시장 환경에는 다른 매개 변수 설정이 필요할 수 있으며, 시스템 유지 관리를 복잡하게 만듭니다.

  2. 고주파 거래의 위험이 전략은 특히 변동성이 높은 시장에서 과도한 거래, 수수료 비용 증가 및 슬라이드 확대로 인해 많은 거래 신호를 발생시킬 수 있습니다.

  3. 계산의 복잡성: 3D 직선 도표 분기 상자 및 계산은 실시간으로 실행할 때 더 높은 컴퓨팅 자원을 필요로 할 수 있으며, 특히 더 짧은 시간 프레임에서 실행 지연을 초래할 수 있다.

  4. 알고리즘은 위험을 가정합니다이 전략은 이 시장 패턴을 효과적으로 포착할 수 있다는 가정에 기초하고 있지만, 시장 구조는 시간이 지남에 따라 변할 수 있어 이 가정은 유효하지 않다.

  5. 변동성 의존성전략: 변동성 필터와 최소 가격 이동 필터를 사용하여, 낮은 변동성 환경에서 거래 기회를 놓칠 수 있으며, 높은 변동성 환경에서 과민하게 반응 할 수 있습니다.

  6. 역사적 적합성 위험이 전략은 여러 지표의 장점을 결합하고 있지만, 역사적인 데이터에 대한 과도한 적합성의 위험이 있으며, 미래의 시장 조건의 변화는 성과 하락을 초래할 수 있습니다.

해결 방법에는: 주기적으로 매개 변수를 다시 최적화하고, 스텝 테스트를 사용하여 매개 변수의 안정성을 검증하고, 더 엄격한 필터링 조건을 적용하여 거래 빈도를 줄이고, 확인 조건을 추가하여 신호 품질을 향상시키고, 실시간 모니터링 시스템 성능을 조정하여 위험 매개 변수.

전략 최적화 방향

  1. 적응 변수 메커니즘역동적으로 매개 변수를 조정하여 시장의 변동성, 거래량 및 트렌드 강도에 따라 CETP 창, 하위값 및 가중치를 자동으로 최적화합니다. 이러한 최적화는 시스템을 변화하는 시장 조건에 더 잘 적응시키고 수동 개입의 필요성을 줄일 수 있습니다.

  2. 다중 시간 프레임 분석 통합: 다른 시간 프레임의 CETP 신호를 통합하여 계층 확인 시스템을 만듭니다. 예를 들어, 상위 시간 프레임의 신호와 거래 시간 프레임의 신호가 일치하는 경우에만 거래를 실행하여 승률을 높인다.

  3. 기계 학습 강화: 기계 학습 알고리즘을 도입하여 파라미터 선택 및 신호 필터링을 최적화한다. 모니터링 학습을 통해 가장 잘하는 파라미터 조합을 식별하거나, 또는 집약 알고리즘을 사용하여 다른 시장 상태를 인식하고 그에 따라 전략을 조정한다.

  4. 유동성 및 거래량 필터: 거래량과 시장의 깊이에 기반한 필터를 추가하여 유동성이 충분할 때만 거래하도록 하고, 슬라이드 포인트 및 실행 위험을 줄입니다.

  5. 다자산 연관성 분석: 관련 시장 (인덱스, 관련 주식 또는 상품과 같은) 의 정보를 통합하여 여러 관련 시장에서 일치하는 신호가 발생했을 때 거래 확신을 강화합니다.

  6. 변동성 예측 모델: 변동성 예측 컴포넌트를 개발하고, 임박한 변동성 환경에 대비하기 위해 미리 절댓값과 위험 매개 변수를 조정한다.

  7. 자동화된 응답 및 최적화 프레임워크자동화 시스템을 구축하여 새로운 데이터로 정기적으로 전략을 재검토하고 최신 시장 행동에 따라 매개 변수를 조정하여 전략이 적응성을 유지하도록하십시오.

이러한 최적화는 전략의 안정성, 적응성 및 수익성을 높이고, 인간의 개입의 필요성과 과도한 적합성의 위험을 줄이는 것을 목표로합니다. 이러한 최적화를 단계적으로 구현하면 더 지능적이고 자율적인 거래 시스템을 구축 할 수 있습니다.

요약하다

다차원 동량 트렌드 자율적 거래 시스템은 정보 이론의 개념을 금융 시장에 적용하여 가격 패턴의 질서와 예측성을 포착하는 혁신적인 양적 거래 방법을 나타냅니다. 이 전략의 핵심 장점은 여러 전통적인 기술 지표의 수학적 원리를 통합하여 단일하고 명확한 거래 신호를 생성하여 지표 충돌과 신호 혼동을 피한다는 것입니다.

이 전략은 강력한 적응력과 위험 관리 기능에도 불구하고, 파라미터 민감성, 계산 복잡성, 시장 구조 변화와 같은 과제에 직면해 있습니다. 자율적 파라미터 메커니즘, 다중 시간 프레임 분석 및 기계 학습 강화와 같은 권장 된 최적화 방향을 구현함으로써 전략의 안정성과 장기적 성능을 더욱 향상시킬 수 있습니다.

전반적으로, 이것은 이론적으로 단단하고, 정교하게 설계된, 양자 거래 시스템으로, 프로그래밍과 통계학적인 배경을 가진 거래자가 높은 변동성이 있는 시장에서 사용할 수 있습니다. 신중한 매개 변수 최적화와 지속적인 시스템 모니터링을 통해, 이 전략은 다양한 시장 환경에서 안정적인 위험 조정 수익을 창출할 잠재력을 가지고 있습니다.

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

// @version=6
strategy("Canuck Trading Traders Strategy [Candle Entropy Edition]", overlay=true, default_qty_value = 10)
// Note: Set Properties "Order size" to "100% of equity" for equity-based sizing or fixed contracts (e.g., 100).

// === CETP-Plus Settings ===
cetp_window = input.int(5, "CETP Window", minval=1, maxval=20, group="CETP-Plus Settings")
cetp_bins = input.int(3, "CETP Bins per Dimension", minval=1, maxval=10, group="CETP-Plus Settings")
long_threshold = input.float(0.1, "Long Threshold", minval=0.01, maxval=5.0, step=0.01, group="CETP-Plus Settings")
short_threshold = input.float(-0.1, "Short Threshold", minval=-0.8, maxval=-0.01, step=0.01, group="CETP-Plus Settings")
cetp_k = input.float(0.8, "CETP Momentum Weight", minval=0.1, maxval=5.0, step=0.1, group="CETP-Plus Settings")
mom_scale = input.float(6.0, "Momentum Scale", minval=1.0, maxval=20.0, step=1.0, group="CETP-Plus Settings")
body_weight = input.float(1.0, "Body Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
upper_weight = input.float(0.8, "Upper Wick Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
lower_weight = input.float(1.0, "Lower Wick Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
decay_factor = 0.8  // Hardcoded decay for exponential weighting (recent candles weighted more)

// === Trade Settings ===
min_score_strength = input.float(0.03, "Min CETP Score Strength", minval=0.0, maxval=5, step=0.01, group="Trade Settings")
stop_loss_pct = input.float(0.5, "Stop Loss (%)", minval=0.1, maxval=5.0, step=0.1, group="Trade Settings")
atr_mult = input.float(3.0, "ATR Multiplier", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
trail_mult = input.float(5.0, "Trailing ATR Mult", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
trail_offset_pct = input.float(1.0, "Trail Start Offset (%)", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
min_price_move_mult = input.float(2.0, "Min Price Move ATR Mult (to avoid tiny trades)", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")  // Filter tiny moves

// Indicators (ATR for stops/trails only)
atr = nz(ta.atr(14), 0.0)

// Volatility Filter (CV < 15% to avoid chop)
vol_threshold = ta.stdev(close, 20) / ta.sma(close, 20) * 100
trade_allowed = vol_threshold < 15.0

// Minimum Price Move Filter (candle range > ATR multiple, floored by min tick)
min_price_move = math.max(atr * min_price_move_mult, syminfo.mintick * 10)  // Avoid sub-penny moves; 10x tick for robustness
price_move_condition = (high - low) > min_price_move  // Fixed: Use high - low instead of ta.range()

// CETP-Plus Calculation (Blended EMA, RSI, ATR, ADX theses)
epsilon = 1e-5
body_ratio = (close - open) / (high - low + epsilon) * body_weight
upper_wick_ratio = (high - math.max(open, close)) / (high - low + epsilon) * upper_weight
lower_wick_ratio = (math.min(open, close) - low) / (high - low + epsilon) * lower_weight

// EMA-like weighting: Exponentially weight recent candles with fixed-size rolling arrays
var float[] body_arr = array.new_float(cetp_window, 0.0)
var float[] upper_arr = array.new_float(cetp_window, 0.0)
var float[] lower_arr = array.new_float(cetp_window, 0.0)

// Shift and decay older values, add new at the end
for i = 0 to cetp_window - 2
    array.set(body_arr, i, array.get(body_arr, i + 1) * decay_factor)
    array.set(upper_arr, i, array.get(upper_arr, i + 1) * decay_factor)
    array.set(lower_arr, i, array.get(lower_arr, i + 1) * decay_factor)

array.set(body_arr, cetp_window - 1, body_ratio)
array.set(upper_arr, cetp_window - 1, upper_wick_ratio)
array.set(lower_arr, cetp_window - 1, lower_wick_ratio)

// Volatility scaling (ATR thesis)
bin_size = 2.0 / cetp_bins * (1 + atr / ta.sma(atr, 14))
hist_size = cetp_bins * cetp_bins * cetp_bins
var int[] hist = array.new_int(hist_size, 0)
array.fill(hist, 0)

for i = 0 to cetp_window - 1
    body_val = array.get(body_arr, i)
    upper_val = array.get(upper_arr, i)
    lower_val = array.get(lower_arr, i)
    
    body_bin = math.max(0, math.min(cetp_bins - 1, math.floor((body_val + 1) / bin_size)))
    upper_bin = math.max(0, math.min(cetp_bins - 1, math.floor((upper_val + 1) / bin_size)))
    lower_bin = math.max(0, math.min(cetp_bins - 1, math.floor((lower_val + 1) / bin_size)))
    
    bin_idx = body_bin * (cetp_bins * cetp_bins) + upper_bin * cetp_bins + lower_bin
    array.set(hist, bin_idx, array.get(hist, bin_idx) + 1)

entropy = 0.0
for i = 0 to hist_size - 1
    count = array.get(hist, i)
    p = count / cetp_window
    if p > 0
        entropy := entropy - p * math.log(p)

max_entropy = math.log(hist_size)
norm_entropy = max_entropy > 0 ? entropy / max_entropy : 0.0

// RSI-like momentum bias
avg_gain = ta.rma(math.max(close - close[1], 0), cetp_window)
avg_loss = ta.rma(math.max(close[1] - close, 0), cetp_window)
rsi_bias = avg_loss > 0 ? avg_gain / avg_loss : 1.0
momentum = ta.mom(close, cetp_window) / (close[cetp_window] != 0 ? close[cetp_window] : 1e-5)
momentum_adj = momentum * (1 + rsi_bias)

// ADX-like trend strength (automated and symmetric for bull/bear)
di_plus = ta.rma(math.max(high - high[1], 0), cetp_window) / atr
di_minus = ta.rma(math.max(low[1] - low, 0), cetp_window) / atr
trend_strength = di_plus > di_minus ? 1.2 : (di_minus > di_plus ? 1.2 : 1.0)

// CETP-Plus Score (optimized: no abs on momentum_adj to preserve sign for better short detection)
avg_body = nz(array.avg(body_arr), 0.0)
raw_score = avg_body * (1 - norm_entropy) * (cetp_k + momentum_adj * mom_scale)
cetp_score = nz(raw_score * trend_strength, 0.0)

// Position State
var float entry_price = na
var int bars_held = 0

if barstate.isconfirmed
    bars_held := strategy.position_size != 0 ? bars_held + 1 : 0

// Trade Logic: Rely solely on current CETP score for entries/exits/reversals, with min price move filter
if bar_index >= cetp_window and math.abs(cetp_score) > min_score_strength and trade_allowed and price_move_condition
    if cetp_score > long_threshold
        if strategy.position_size < 0
            strategy.close("Short", comment="Reverse to Long")
        if strategy.position_size <= 0
            strategy.entry("Long", strategy.long)
            entry_price := close
            sl = entry_price * (1 - stop_loss_pct / 100) - atr * atr_mult
            strategy.exit("Long Exit", "Long", stop=sl, trail_points=atr * trail_mult * syminfo.pointvalue, trail_offset=entry_price * (trail_offset_pct / 100))
            bars_held := 1
    else if cetp_score < short_threshold
        if strategy.position_size > 0
            strategy.close("Long", comment="Reverse to Short")
        if strategy.position_size >= 0
            strategy.entry("Short", strategy.short)
            entry_price := close
            sl = entry_price * (1 + stop_loss_pct / 100) + atr * atr_mult
            strategy.exit("Short Exit", "Short", stop=sl, trail_points=atr * trail_mult * syminfo.pointvalue, trail_offset=entry_price * (trail_offset_pct / 100))
            bars_held := 1