Stratégie de trading quantitatif à tendance croisée avec filtre Butterworth tripolaire d'Ehlers

Butterworth Filter TREND FOLLOWING Crossover Signals Divergence Detection TPF TA
Date de création: 2025-06-13 14:54:24 Dernière modification: 2025-06-13 14:54:24
Copier: 0 Nombre de clics: 328
2
Suivre
319
Abonnés

Stratégie de trading quantitatif à tendance croisée avec filtre Butterworth tripolaire d’Ehlers Stratégie de trading quantitatif à tendance croisée avec filtre Butterworth tripolaire d’Ehlers

Aperçu

La stratégie de négociation quantifiant les tendances croisées des filtres à trois pôles de Bartwater d’Ehlers est une méthode d’analyse technique basée sur la théorie du traitement des signaux qui applique l’algorithme de tendances à trois pôles de Bartwater de John Ehlers aux données des marchés financiers. La stratégie génère des signaux de négociation en aplatissant les fluctuations de prix des filtres, en identifiant les tendances potentielles du marché et en utilisant les points de croisement entre les valeurs d’onde et les valeurs de déclenchement.

Principe de stratégie

Le filtre à trois pôles de Barth-Whorst d’Ehlers est au cœur de la stratégie de négociation quantifiant les tendances croisées grâce à son modèle mathématique unique. Le filtre à Barth-Whorst est un filtre à faible perméabilité largement utilisé dans le domaine du traitement des signaux, dont la principale caractéristique est la réponse en fréquence qui a la plus grande planéité dans la bande passante.

La mise en œuvre de cette stratégie repose principalement sur les étapes suivantes:

  1. Calcul du filtrePar le passé:calculateButterworthFilterLa fonction calcule les valeurs du filtre de Bartworsch à trois pôles. Cette fonction utilise une formule mathématique pour convertir les données de prix initiales en valeurs de filtre lisse et en valeurs de déclenchement correspondantes. Le calcul de l’onde de filtre implique des opérations mathématiques complexes, notamment des fonctions d’indicateur, des fonctions triangulaires et des calculs récursifs.

  2. Génération du signalLa stratégie génère des signaux de trading principalement de deux manières:

    • Signal croisé: lorsque la valeur de l’onde d’aération dépasse la valeur de la déclenchement, un signal de multiplication est généré; lorsque la valeur de l’onde d’aération dépasse la valeur de la déclenchement, un signal de vide est généré.
    • Détection diffuse: identifier les situations où les mouvements des prix sont incompatibles avec ceux de l’indicateur, y compris les écarts réguliers et les écarts cachés, qui indiquent généralement que la tendance pourrait s’inverser.
  3. Exécution de la transaction: exécute les opérations correspondantes en fonction du signal généré:

    • La stratégie consiste à entrer dans une position multiple lorsque plusieurs signaux apparaissent.
    • La stratégie consiste à liquider une position sur plusieurs têtes lorsque des signaux de sortie multiples apparaissent.
    • Lorsque le signal de prise de position court apparaît, la stratégie entre en position courte.
    • Lorsque le signal de sortie de la position vide apparaît, la stratégie est de liquider la position vide.

Utilisation de stratégies dans le codestrategy.entryetstrategy.closeLes fonctions exécutent des opérations de transaction et passent parplotshapeLa fonction visualise les points de signaux de transaction sur le graphique.

Avantages stratégiques

La stratégie de négociation quantifiée de tendances croisées du filtre à trois pôles de Bart Worth d’Ehlers présente plusieurs avantages notables:

  1. Une puissante capacité de filtrage du bruitLes filtres à trois pôles de Bartholomew possèdent une excellente capacité de lissage des signaux, permettant de filtrer efficacement les fluctuations à court terme du marché et les faux signaux, ce qui permet aux traders d’identifier plus facilement les véritables tendances du marché. Ce filtre efficace est réalisé par des facteurs calculés avec précision dans le code (coefficient 1 à coefficient 4).

  2. Identifier les tendances avec précision: Le croisement des filtres et des lignes de déclenchement fournit des signaux clairs de changement de tendance, permettant aux traders de saisir en temps opportun les points de changement de tendance du marché.ta.crossoveretta.crossunderLes fonctions et les stratégies permettent d’identifier précisément ces points d’intersection clés.

  3. Intuition visuelle: La stratégie utilise des lignes et des zones de remplissage de différentes couleurs sur le graphique pour afficher de manière intuitive la relation entre les valeurs d’effet de levier et les valeurs de déclenchement, ce qui permet aux traders de juger rapidement de l’état actuel du marché. Le jaune indique une tendance haussière et le violet une tendance baissière.

  4. Flexibilité et réglage: La stratégie offre l’option de paramètres de saisie et de cycle de prix personnalisés, permettant aux traders d’ajuster les paramètres de stratégie en fonction des différents environnements de marché et des préférences personnelles.

  5. Un système complet de négociationLa stratégie comprend non seulement un mécanisme de génération de signaux, mais intègre également une logique de négociation complète, comprenant des règles d’entrée et de sortie, ce qui en fait un système de négociation indépendant.

  6. Visualisation du signalPar le passé:plotshapeLes fonctions et les stratégies marquent les points de signaux d’achat et de vente sur le graphique, permettant aux traders de comprendre intuitivement la performance des signaux historiques, facilitant l’évaluation et l’optimisation des stratégies.

Risque stratégique

Bien que la stratégie de négociation quantifiée de tendances croisées du filtre à trois pôles Batworth d’Ehlers présente de nombreux avantages, elle comporte des risques potentiels:

  1. Risque de retard: En tant qu’indicateur de filtrage, il y a inévitablement une certaine latence dans cette stratégie. Bien que les filtres à trois pôles de Bartholomew aient une latence inférieure à celle des moyennes mobiles simples, dans des marchés en évolution rapide, le signal peut toujours apparaître après le point d’entrée idéal. Pour réduire ce risque, il est possible de considérer la réduction des paramètres de cycle, mais cela peut également entraîner une sensibilité excessive au signal.

  2. Le risque de faux signaux: Dans un marché en tremblement de terre ou dans un environnement de marché sans tendance évidente, la stratégie peut produire plus de faux signaux, ce qui entraîne des transactions fréquentes et des pertes inutiles de frais de traitement. Le risque de faux signaux peut être réduit en ajoutant des conditions de filtrage supplémentaires ou en combinant la confirmation avec d’autres indicateurs.

  3. Paramètre SensibilitéLa performance de la stratégie dépend fortement du choix des paramètres cycliques. Différents environnements de marché peuvent nécessiter différents paramètres, et le mauvais choix des paramètres peut entraîner une mauvaise performance de la stratégie. Il est recommandé d’optimiser les paramètres dans différents environnements de marché en utilisant des retours historiques.

  4. Risques de l’indicateur unique: La prise de décision de trading basée sur un seul indicateur peut entraîner une mauvaise performance dans certains environnements de marché. Il est recommandé de prendre cette stratégie comme partie intégrante du système de trading, en combinaison avec d’autres indicateurs ou méthodes pour un jugement global.

  5. Risque systémique: Dans des conditions de marché extrêmes, comme une forte volatilité ou l’épuisement de la liquidité, tout indicateur technique basé sur des données historiques peut ne pas fonctionner. Il est recommandé de mettre en place des mesures de contrôle des risques appropriées, telles que des ordres de stop-loss et la gestion de la taille des positions.

Direction d’optimisation

Sur la base d’une analyse approfondie de la stratégie de négociation de la quantification des tendances croisées du filtre à trois pôles de Barthworth d’Ehlers, voici quelques pistes d’optimisation possibles:

  1. Conception de paramètres adaptés: la stratégie actuelle utilise des paramètres de cycle fixes, on peut envisager de mettre en œuvre un mécanisme de paramètres d’adaptation, en ajustant automatiquement les paramètres de cycle en fonction de la volatilité du marché. Par exemple, on peut ajuster dynamiquement les paramètres de cycle en calculant l’amplitude réelle moyenne des prix (ATR), en utilisant des cycles plus courts dans les marchés à forte volatilité et des cycles plus longs dans les marchés à faible volatilité.

  2. Confirmation à plusieurs cycles: Introduisez le calcul du filtre de plusieurs périodes de temps, demandez la confirmation de la cohérence du signal pour différentes périodes de temps, afin de réduire les faux signaux. Vous pouvez ajouter le code suivant:

   [butterLong, triggerLong] = calculateButterworthFilter(priceInput, periodInput * 2)
   longConfirmation = butter > trigger and butterLong > triggerLong
  1. Ajout d’indicateurs complémentaires: Intégrer d’autres indicateurs techniques comme filtre de signal, tels que l’indice de force relative (RSI), l’indicateur aléatoire (Stochastic) ou l’indicateur de volume de transaction, et effectuer des transactions uniquement si l’indicateur auxiliaire est confirmé.

  2. Amélioration de la gestion des risques: Ajout de mécanismes d’arrêt dynamiques et de stop-loss dans la stratégie, afin d’ajuster automatiquement la distance de stop-loss en fonction de la volatilité du marché. En même temps, le calcul de la taille de la position peut être réalisé en fonction des principes de gestion des fonds.

  3. Optimisation de la détection diffuse: Le code actuel mentionne la détection de diffusion, mais la mise en œuvre n’est pas détaillée. Les algorithmes de détection de diffusion peuvent être améliorés, en particulier l’identification des diffusions cachées, pour améliorer encore la qualité du signal.

  4. Filtrage de l’environnement du marché: Ajout d’un mécanisme d’identification de l’environnement du marché, utilisant différentes règles de négociation dans différents environnements de marché. Par exemple, il est possible d’utiliser des indicateurs de tendance à long terme pour déterminer si le marché est tendance ou turbulent et d’ajuster la stratégie de négociation en conséquence.

  5. Le renforcement de l’apprentissage automatiqueConsidérer l’introduction de méthodes d’apprentissage automatique telles que les algorithmes de classification ou l’apprentissage par renforcement, optimiser le processus de sélection des paramètres et de génération de signaux, améliorer la capacité d’adaptation des stratégies.

Résumer

La stratégie de négociation quantifiant les tendances croisées du filtre à trois pôles de Bartholomew Ehlers combine la théorie du traitement des signaux et l’analyse technique pour fournir une méthode scientifique et systématique d’identification des tendances du marché. La stratégie réduit le bruit du marché grâce à des algorithmes de fluctuation avancés, capture les points de basculement clés des tendances des prix et fournit une base objective et quantifiable pour les décisions de négociation.

Les principaux avantages de la stratégie résident dans ses puissantes capacités de filtrage du bruit et ses fonctions de reconnaissance de tendances précises, qui lui permettent de se démarquer dans des environnements de marché où la tendance est évidente. En outre, la stratégie répond aux besoins personnalisés des différents traders en fournissant des signaux de négociation visualisés et des options d’ajustement de paramètres flexibles.

Cependant, comme tous les indicateurs techniques, la stratégie est confrontée à des défis tels que le retard, les faux signaux et la sensibilité des paramètres. La robustesse et l’adaptabilité de la stratégie peuvent être encore améliorées par la mise en œuvre de mesures d’optimisation telles que la conception de paramètres adaptatifs, la confirmation à plusieurs cycles et l’intégration des indicateurs auxiliaires.

En fin de compte, la stratégie de négociation quantifiée de tendances croisées de filtres à trois pôles de Bart Worth d’Ehlers fournit aux traders quantifiés un outil de négociation basé sur une base mathématique solide qui peut être utilisé à la fois comme un système de négociation indépendant et comme un élément d’une stratégie de négociation plus complexe, fournissant des informations de référence précieuses pour les décisions de négociation. Grâce à une optimisation et à une amélioration continues, la stratégie est susceptible d’atteindre une performance de négociation stable et durable dans divers environnements de marché.

Code source de la stratégie
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-12 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Ehlers Three Pole Butterworth Filter Strategy", overlay=true)

// 输入参数
priceInput = input(hl2, title='Price')
periodInput = input(15, title='Period')

// Function to calculate Ehlers Three Pole Butterworth Filter
calculateButterworthFilter(price, period) =>
    a1 = 0.00
    b1 = 0.00
    c1 = 0.00
    coef1 = 0.00
    coef2 = 0.00
    coef3 = 0.00
    coef4 = 0.00
    butter = 0.00
    trigger = 0.00
    pi = 2 * math.asin(1)

    a1 := math.exp(-3.14159 / period)
    b1 := 2 * a1 * math.cos(1.738 * pi / period)
    c1 := a1 * a1
    coef2 := b1 + c1
    coef3 := -(c1 + b1 * c1)
    coef4 := c1 * c1
    coef1 := (1 - b1 + c1) * (1 - c1) / 8
    butter := coef1 * (price + 3 * nz(price[1]) + 3 * nz(price[2]) + nz(price[3])) + coef2 * nz(butter[1]) + coef3 * nz(butter[2]) + coef4 * nz(butter[3])
    butter := bar_index < 4 ? price : butter
    trigger := nz(butter[1])

    [butter, trigger]

// Calculate filter values
[butter, trigger] = calculateButterworthFilter(priceInput, periodInput)

// 绘制滤波器线
plotButter = plot(butter, 'Butter', color=color.new(color.yellow, 0), linewidth=3)
plotTrigger = plot(trigger, 'Butter Lag', color=color.new(color.fuchsia, 0), linewidth=3)
fill(plotButter, plotTrigger, color=butter > trigger ? color.yellow : color.fuchsia, transp=40)

// 定义交易信号
longCondition = ta.crossover(butter, trigger)
exitLongCondition = ta.crossunder(butter, trigger)
shortCondition = ta.crossunder(butter, trigger)
exitShortCondition = ta.crossover(butter, trigger)

// 执行交易
if (longCondition)
    strategy.entry("Buy", strategy.long)

if (exitLongCondition)
    strategy.close("Buy")

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (exitShortCondition)
    strategy.close("Short")

// 绘制交易信号
plotshape(longCondition, "Buy Signal", shape.triangleup, location.belowbar, color=color.green, size=size.small)
plotshape(exitLongCondition, "Exit Long Signal", shape.triangledown, location.abovebar, color=color.red, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown, location.abovebar, color=color.orange, size=size.small)
plotshape(exitShortCondition, "Exit Short Signal", shape.triangleup, location.belowbar, color=color.blue, size=size.small)