Système de trading adaptatif multidimensionnel à tendance dynamique et entropique

CETP-Plus Shannon Entropy RSI ATR ADX EMA momentum 3D Histogram Volatility Filter
Date de création: 2025-08-11 09:46:42 Dernière modification: 2025-08-20 16:26:32
Copier: 4 Nombre de clics: 353
2
Suivre
319
Abonnés

Système de trading adaptatif multidimensionnel à tendance dynamique et entropique Système de trading adaptatif multidimensionnel à tendance dynamique et entropique

Aperçu

Le système de trading auto-adaptatif à la tendance de la dynamique de la quantité d’acier multidimensionnelle est une stratégie de trading quantitative basée sur la théorie de l’acier, au cœur de laquelle se trouve l’indicateur CETP-Plus, qui mesure l’ordre dans le modèle de diagramme de la dynamique de Shannon. Le système fusionne le principe de pondération récente des moyennes mobiles de l’indicateur (EMA), la déviance dynamique des indicateurs relativement faibles (RSI), l’amplitude de la volatilité de l’indicateur moyen réel (ATR) et la force de la tendance de l’indicateur de direction moyenne (ADX) en une seule note.

Principe de stratégie

Le principe central de cette stratégie est d’appliquer le coefficient de Shannon à l’analyse des modèles de cartographie des marchés financiers. Le coefficient de Shannon est issu de l’informatique et sert à quantifier l’incertitude ou le “ degré de confusion ” des variables aléatoires. Dans cette stratégie, le coefficient de Shannon est calculé et appliqué de la manière suivante:

  1. Calcul du taux d’humiditéLa stratégie commence par calculer les trois ratios clés d’effet de levier: le ratio de l’entité (qui reflète la force de la tendance), le ratio de la ligne d’ombre supérieure et le ratio de la ligne d’ombre inférieure (qui reflète la potentielle inversion).
  2. Déclin exponentiel pondéré: utilisation d’un facteur de déclin ((0.8) pour mettre un poids sur les données historiques, donnant une plus grande importance aux données récentes, un principe similaire à celui de l’EMA.
  3. Cartographie en trois dimensions: placez le rapport de la couleur dans un rectangle tridimensionnel dont les dimensions correspondent à l’entité, à la ligne de l’ombre supérieure et à la ligne de l’ombre inférieure.
  4. Calcul des étoiles: la valeur de la courbe est calculée à l’aide de la formule de Shannon. La courbe basse indique la présence d’une forte forme.
  5. Intégration de la déviation de couple: Une méthode de calcul similaire à celle du RSI pour capturer les mouvements de prix et ajuster le score de la courbe.
  6. Amélioration de l’intensité des tendances: Une méthode de calcul similaire à l’ADX détecte la direction et l’intensité des tendances et ajuste le score.
  7. Adaptation à la volatilitéATR utilise l’échelle de volatilité pour assurer la cohérence du signal dans différents environnements de volatilité.

Le score CETP final est le résultat de ces facteurs: une valeur positive tend à être bullish et une valeur négative tend à être bearish. La logique de la transaction est simple et directe: faites plus lorsque la valeur CETP est supérieure à la valeur positive de la marge, et faites zéro lorsque la valeur est inférieure à la valeur négative de la marge. Pour éviter les transactions de petite taille, la stratégie intègre un filtre de déplacement du prix minimum, qui garantit que le graphique actuel a une portée suffisante pour déclencher une transaction.

Avantages stratégiques

  1. Signaux intégrésLes indicateurs CETP-Plus combinent les avantages de plusieurs indicateurs traditionnels (EMA, RSI, ATR, ADX) pour fournir un signal de négociation unique et clair, évitant ainsi les risques de conflits d’indicateurs et d’hyperadaptation.

  2. Une grande capacité d’adaptationLa stratégie peut s’adapter automatiquement aux conditions du marché, s’adapter à différents environnements de volatilité et à l’intensité des tendances, et fonctionner correctement dans de nombreux états de marché sans intervention manuelle.

  3. Traitement symétrique en polygoneLa stratégie donne la même importance aux opportunités à plusieurs titres et à des titres vacants, ce qui permet de fonctionner efficacement dans les marchés haussiers et baissiers, sans être affecté par les préjugés directionnels.

  4. Détection des tendances précocesLa notion de “pigeon” capture les changements de structure du marché, permettant d’identifier la formation précoce de tendances avant les indicateurs traditionnels, offrant ainsi une meilleure opportunité d’entrée.

  5. Réduire les effets du bruitLes stratégies permettent de distinguer les vrais signaux du bruit du marché et de réduire la fréquence des faux signaux grâce à l’analyse de la chaîne et à la technique de découpage des diagrammes verticaux.

  6. Personnalisation: Un grand nombre de paramètres peuvent être optimisés en fonction des différentes variétés de transactions et des différentes périodes de temps, ce qui donne une grande flexibilité et adaptabilité à la stratégie.

  7. Gestion complète des risques: un mécanisme de contrôle du risque à plusieurs niveaux intégré, comprenant des stop-loss au pourcentage, des stop-loss dynamiques et des stop-loss de suivi basés sur l’ATR, ainsi qu’un filtre de transaction minimale pour contrôler efficacement les retraits.

Risque stratégique

  1. Paramètre Sensibilité: la stratégie contient plusieurs paramètres réglables, dont l’optimisation excessive peut entraîner une mauvaise performance dans les transactions sur disque. Différents environnements de marché peuvent nécessiter des paramètres différents, ce qui complique la maintenance du système.

  2. Risques liés aux transactions à haute fréquenceLes stratégies peuvent générer de nombreux signaux de trading, en particulier dans les marchés très volatils, ce qui entraîne des transactions excessives, une augmentation des frais de commission et une amplification des points de glissement.

  3. Complicité du calculLes calculs de la section et de l’axe de l’image en 3D peuvent nécessiter des ressources de calcul plus élevées lorsqu’ils sont exécutés en temps réel, ce qui peut entraîner des retards d’exécution, en particulier sur des délais plus courts.

  4. Algorithme de risque hypothétiqueLa stratégie est basée sur l’hypothèse que le silicium capte efficacement les modèles du marché, mais que la structure du marché peut changer au fil du temps, ce qui rend cette hypothèse invalide.

  5. La dépendance à la volatilitéLa stratégie utilise un filtre de volatilité et un filtre de déplacement du prix minimum. Les opportunités de négociation peuvent être manquées dans des environnements à faible volatilité et peuvent être trop sensibles dans des environnements à forte volatilité.

  6. Risque de correspondance historiqueBien que la stratégie combine plusieurs avantages en termes d’indicateurs, il existe un risque d’hyperadaptation des données historiques, et les changements de conditions de marché à l’avenir pourraient entraîner une baisse de la performance.

Les solutions comprennent: réoptimiser régulièrement les paramètres, vérifier la stabilité des paramètres à l’aide de tests en phase, appliquer des conditions de filtrage plus strictes pour réduire la fréquence des transactions, augmenter les conditions de confirmation pour améliorer la qualité du signal et ajuster les paramètres de risque de la performance du système de surveillance en temps réel.

Orientation de l’optimisation de la stratégie

  1. Mécanisme d’adaptation des paramètres: réalisation d’ajustements dynamiques des paramètres, optimisation automatique des fenêtres, des seuils et des poids CETP en fonction de la volatilité du marché, du volume des transactions et de l’intensité des tendances. Cette optimisation permet au système de mieux s’adapter aux conditions changeantes du marché et de réduire le besoin d’interventions manuelles.

  2. Intégration de l’analyse de plusieurs périodes: Intégrer les signaux CETP de différentes périodes de temps pour créer un système de confirmation de palier. Par exemple, exécuter des transactions uniquement lorsque les signaux des périodes de temps supérieures correspondent aux signaux des périodes de temps de transaction, ce qui augmente le taux de victoire.

  3. Le renforcement de l’apprentissage automatique: Introduction d’algorithmes d’apprentissage automatique pour optimiser la sélection des paramètres et le filtrage des signaux. Identifier les combinaisons de paramètres les plus performantes grâce à l’apprentissage supervisé ou utiliser des algorithmes de regroupement pour identifier les différents états du marché et ajuster la stratégie en conséquence.

  4. Filtre de liquidité et de volume des transactions: Ajout de filtres basés sur le volume de transactions et la profondeur du marché, garantissant que les transactions sont effectuées uniquement dans des conditions de liquidité suffisante, réduisant les points de glissement et les risques d’exécution.

  5. Analyse de la corrélation entre plusieurs actifs: Intégrer des informations sur les marchés concernés (par exemple, indices, actions ou marchandises concernés) afin d’accroître la conviction des transactions lorsque plusieurs marchés concernés émettent des signaux concordants.

  6. Modèle de prévision de la volatilité: développer des composants de prévision de la volatilité, ajuster les seuils et les paramètres de risque à l’avance pour se préparer à l’environnement volatile à venir.

  7. Cadre automatisé de détection et d’optimisation: mettre en place un système automatisé pour réévaluer régulièrement la stratégie en fonction des nouvelles données et ajuster les paramètres en fonction des dernières tendances du marché, afin de s’assurer que la stratégie reste adaptée.

Les orientations d’optimisation ci-dessus visent à améliorer la stabilité, l’adaptabilité et la rentabilité des stratégies, tout en réduisant le besoin d’intervention humaine et le risque de suradaptation. En mettant en œuvre progressivement ces optimisations, un système de négociation plus intelligent et autonome peut être construit.

Résumer

Le système de trading auto-adaptatif à la dynamique de la quantité d’acier multidimensionnel représente une méthode de trading quantitatif innovante qui capture l’ordre et la prévisibilité dans les modèles de prix en appliquant le concept d’acier de la théorie de l’information aux marchés financiers. Le principal avantage de cette stratégie réside dans l’intégration des principes mathématiques de plusieurs indicateurs techniques traditionnels, créant un signal de trading unique et clair, évitant les conflits d’indicateurs et la confusion des signaux.

Bien que la stratégie possède de puissantes fonctionnalités d’adaptation et de gestion des risques, elle est confrontée à des défis tels que la sensibilité des paramètres, la complexité des calculs et les changements de la structure du marché. La robustesse et la performance à long terme de la stratégie peuvent être encore améliorées par la mise en œuvre des orientations d’optimisation recommandées, telles que les mécanismes de paramètres adaptatifs, l’analyse des cadres temporels multiples et l’amélioration de l’apprentissage automatique.

Dans l’ensemble, il s’agit d’un système de trading quantifié avec une base théorique solide et une conception sophistiquée, adapté aux traders ayant une formation en programmation et en statistique pour une utilisation dans des marchés très volatils. Grâce à une optimisation prudente des paramètres et une surveillance systématique continue, la stratégie a le potentiel de générer des rendements stables en ajustement du risque dans divers environnements de marché.

Code source de la stratégie
/*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