Stratégie de trading quantitatif de suivi de tendance croisée à double moyenne mobile

SMA MA 趋势跟踪 均线交叉 交易信号 自动反转
Date de création: 2025-03-25 14:58:39 Dernière modification: 2025-03-25 14:58:39
Copier: 0 Nombre de clics: 353
2
Suivre
319
Abonnés

Stratégie de trading quantitatif de suivi de tendance croisée à double moyenne mobile Stratégie de trading quantitatif de suivi de tendance croisée à double moyenne mobile

Aperçu

La stratégie est un système de suivi de tendance basé sur la croisée de deux moyennes, qui utilise la croisée de deux moyennes mobiles simples (SMA) à court et à long terme pour générer un signal de négociation multi-zones clair. La stratégie est conçue de manière concise et claire, facile à comprendre et à mettre en œuvre, particulièrement adaptée aux traders qui souhaitent maîtriser les principes fondamentaux de la croisée des moyennes mobiles. L’idée centrale de la stratégie est que lorsque la moyenne à court terme traverse la moyenne à long terme de manière ascendante, le système génère des signaux multiples.

Principe de stratégie

Le cœur de la stratégie est basé sur l’interaction de deux moyennes mobiles simples (SMA):

  1. Moyenne mobile à court terme: par défaut, elle est de 9 cycles et reflète les mouvements de prix plus récents
  2. Moyenne mobile à long terme: par défaut, elle est de 21 cycles et reflète les tendances des prix à plus long terme

La logique de génération des signaux de transaction:

  • Faire plusieurs conditions: lorsque la moyenne à court terme traverse la moyenne à long terme vers le haut, le système génère plusieurs signaux
  • Condition de blanchiment: lorsque la moyenne à court terme passe en dessous de la moyenne à long terme, le système génère un signal de blanchiment

Le processus d’exécution de la transaction:

  • Lors du déclenchement d’un signal multiple, le système nettoie immédiatement tout emplacement vide existant, puis ouvre un nouvel emplacement multiple.
  • Lorsqu’un signal de vide est déclenché, le système nettoie immédiatement tout emplacement existant, puis ouvre un nouvel emplacement vide.
  • Le système marque clairement le prix d’entrée sur le graphique par des étiquettes, les étiquettes à plusieurs têtes étant affichées au-dessus de la ligne K, les étiquettes à tête vide étant affichées au-dessous de la ligne K.

Les stratégies permettent également aux utilisateurs de personnaliser la source de prix (le prix d’ouverture par défaut) et la durée du cycle de la ligne moyenne pour s’adapter à différents environnements de marché ou styles de négociation.

Avantages stratégiques

En analysant plus en profondeur le code de la stratégie, nous pouvons dégager les avantages évidents suivants:

  1. Bref et clair: la logique de la stratégie est claire, sans combinaisons d’indicateurs ou de jugements conditionnels complexes, ce qui permet aux traders de la comprendre et de l’appliquer facilement
  2. Intuition visuelle: le système trace deux lignes de moyenne sur le graphique et les distingue par la couleur (la moyenne à court terme est rouge, la moyenne à long terme est bleue), tout en affichant de manière intuitive les points d’entrée et les prix sous forme de balises
  3. Mécanisme d’inversion automatique: lorsque de nouveaux signaux apparaissent, la stratégie annule automatiquement les positions inversées et établit de nouvelles positions, assurant ainsi aux traders de toujours suivre la direction de la tendance actuelle
  4. Une forte personnalisation: les utilisateurs peuvent ajuster les sources de prix et les cycles de ligne moyenne en fonction de leurs préférences pour s’adapter à différents environnements de marché ou à des délais de négociation
  5. Calcul en temps réel: la stratégie définit le paramètre calc_on_every_tick=true pour s’assurer que le calcul est effectué à chaque variation de prix et fournit le signal le plus opportun
  6. surajustement sans paramètres: la stratégie utilise seulement deux paramètres de la ligne moyenne, réduisant le risque de surajustement et renforçant la stabilité de la stratégie dans différentes conditions de marché
  7. Indications d’étiquettes claires: en plaçant les étiquettes à l’avance à la position de la ligne K suivante, les traders peuvent voir clairement le prix d’entrée, ce qui facilite la gestion des risques

Risque stratégique

Malgré la simplicité et l’efficacité de cette stratégie, les risques potentiels sont les suivants:

  1. Fréquence des transactions sur les marchés en tremblement de terre: dans les marchés en cours de liquidation ou en tremblement de terre, les courts et les moyens à long terme peuvent se croiser fréquemment, ce qui entraîne des signaux de transaction excessifs et des coûts de transaction inutiles

    • Solution: ajouter des conditions de filtrage supplémentaires, telles que l’indicateur ADX pour confirmer la force de la tendance, ou définir une durée de conservation minimale
  2. Problème de retardation: les moyennes mobiles sont essentiellement des indicateurs de retard, et les signaux peuvent être générés lorsque la tendance a déjà évolué ou est sur le point de s’arrêter

    • Solution: combiner avec d’autres indicateurs de pointe, tels que le RSI ou le MACD, ou utiliser des cycles de moyenne plus courts pour réduire le retard
  3. Risque de fausse rupture: les prix pourraient brièvement franchir la ligne médiane, puis revenir à la tendance initiale, ce qui entraînerait un faux signal

    • Solution: ajouter un mécanisme de confirmation, comme demander à un prix de rester un certain temps ou une certaine quantité après la traversée pour déclencher une transaction
  4. Manque de mécanisme de stop-loss: la stratégie actuelle n’a pas de paramètre de stop-loss explicite, ce qui peut entraîner des pertes plus importantes dans un contexte de forte reprise

    • Solution: mettre en œuvre une stratégie de stop-loss fixe ou dynamique basée sur la volatilité
  5. Sensitivité des paramètres: les performances des stratégies sont sensibles à la sélection de la longueur moyenne des cycles, et des paramètres inappropriés peuvent entraîner une modification importante de l’efficacité des stratégies.

    • Solution: Optimiser la rétroaction en recherchant une combinaison de paramètres qui fonctionnent de manière stable dans plusieurs conditions de marché

Orientation de l’optimisation de la stratégie

Sur la base d’une analyse approfondie du code, j’ai proposé les orientations d’optimisation suivantes:

  1. Ajout d’un filtre de tendance: introduire l’ADX, un indicateur de la force de la tendance ou la position relative du prix par rapport à la moyenne, générer un signal uniquement dans un environnement de tendance confirmé, éviter les transactions fréquentes dans les marchés en crise

    • L’explication: cela réduira les faux signaux et améliorera la réussite des transactions et l’efficacité des fonds.
  2. Mise en place d’un mécanisme de stop-loss dynamique: mise en place d’un niveau de stop-loss dynamique basé sur l’ATR ou d’autres indicateurs de volatilité pour protéger les bénéfices et limiter le risque maximal d’une transaction unique

    • Explication: Une gestion efficace des risques est la clé du succès des transactions à long terme.
  3. Optimiser le timing de l’entrée: envisagez d’utiliser une confirmation à petite période après la génération du signal ou d’attendre un rappel pour une entrée à nouveau afin d’obtenir de meilleurs prix d’exécution

    • Explication: Optimiser le prix d’entrée peut améliorer considérablement les rendements à long terme.
  4. Augmentation du filtrage du volume des transactions: augmentation de la confirmation du volume des transactions sur la base des signaux croisés et exécution des transactions uniquement lorsque le volume des transactions est également favorable à un changement de direction

    • Explication: le volume de transactions est un facteur important de confirmation de l’efficacité des variations de prix.
  5. Mise en œuvre d’un cycle de ligne moyenne auto-adaptatif: Ajustez automatiquement la longueur du cycle de ligne moyenne en fonction de la volatilité du marché, en utilisant des cycles plus longs dans des environnements à forte volatilité et des cycles plus courts dans des environnements à faible volatilité

    • Explication: Cela permet à la stratégie de mieux s’adapter aux différentes conditions et cycles du marché.
  6. Ajout d’un mécanisme d’ouverture et de stockage par lots: au lieu de créer tous les emplacements en une seule fois, construire des emplacements et des emplacements par étapes pour réduire le risque de choix de points de temps

    • Cette approche permet de fluidifier les résultats des transactions et de réduire les facteurs de chance associés au choix d’un seul point d’entrée.

Résumer

La stratégie de suivi des tendances en croisement bi-linéaire est un système de trading quantitatif simple et puissant qui génère des signaux de négociation clairs par la croisement des moyennes mobiles à court et à long terme. Son principal avantage réside dans la simplicité d’utilisation, l’intuition visuelle et le mécanisme de retournement automatique qui permettent aux traders de suivre objectivement les tendances du marché. Cependant, la stratégie présente également des risques inhérents tels que la fréquence des transactions sur les marchés en choc et le retard du signal.

Cette stratégie de base peut être considérablement améliorée par l’ajout de filtres de tendance, la mise en œuvre de mécanismes de stop-loss dynamiques, l’optimisation des heures d’entrée et l’augmentation des confirmations de volume. En particulier, la combinaison d’autres indicateurs techniques pour filtrer les signaux et optimiser la gestion des risques contribuera à améliorer la performance de la stratégie dans divers environnements de marché.

Il s’agit d’un point de départ idéal pour les débutants qui souhaitent commencer à quantifier leurs transactions; pour les traders expérimentés, il fournit une base solide sur laquelle ils peuvent personnaliser et optimiser davantage. Il est important de noter que toutes les améliorations adoptées doivent être évaluées par un rigoureux retour d’expérience et une vérification à l’avance pour s’assurer que les améliorations stratégiques ajoutent vraiment de la valeur à long terme.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//@version=6
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @author = Da_mENIZ
// © denis_zvegelj
// last change	20.Mar.2025
//
// Simple MA Crossover strategy that shows on the chart with Long/Short indicators. Feel free to use it to suit 
// your needs
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy("DZ Simple MA Crossover Strategy", shorttitle="DZ_MACross", overlay=true, calc_on_every_tick=true)

// Define the moving average lengths
i_src_price = input.source  (open, "Price source",                                                                                                                     group="Main Settings")
i_shMA_len  = input.int		(9, 	"Short MA Length", 		minval=1,																									group="Main Settings")
i_loMA_len  = input.int		(21,	"Long MA Length", 		minval=6,																									group="Main Settings")

// Calculate the moving averages
short_MA = ta.sma(i_src_price, i_shMA_len)
long_MA = ta.sma(i_src_price, i_loMA_len)

// Plot the moving averages on the chart
plot(short_MA, color=color.red, linewidth=2, title="Short MA")
plot(long_MA, color=color.blue, linewidth=2, title="Long MA")

// Generate the buy and sell signals
long_Cond = ta.crossover(short_MA, long_MA)
short_Cond = ta.crossunder(short_MA, long_MA)

// Place the orders based on conditions
if (long_Cond)
    strategy.close("Short", immediately = true, comment = "Close")
    strategy.entry("Long", strategy.long, comment = "Enter")
    label.new(bar_index+1, open, "Long\n" + str.tostring(open), style=label.style_label_down, color=color.blue, textcolor=color.white, yloc=yloc.abovebar)



if (short_Cond)
    strategy.close("Long", immediately = true, comment = "Close")
//    strategy.entry("Short", strategy.short, comment = "Short\n" + str.tostring(open))
    strategy.entry("Short", strategy.short, comment = "Enter")
    label.new(bar_index+1, open, "Short\n" + str.tostring(open), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)