
Le système de négociation de capture et de confirmation croisée de tendances en ligne moyenne multiple est une stratégie de négociation quantifiée basée sur une combinaison de moyennes mobiles d’indices à plusieurs périodes (EMA), combinant des indicateurs de faiblesse relative (RSI), des variations de tendances en moyenne mobile (MACD) et une gamme réelle moyenne (ATR) comme indicateurs auxiliaires. Le cœur de la stratégie consiste à déterminer la direction de la tendance du marché en comparant les relations de position de la ligne moyenne à différentes périodes de temps.
Le principe central de cette stratégie est d’utiliser des moyennes mobiles indexées ((EMA) de plusieurs cycles différents pour juger de la tendance du marché et saisir les opportunités de négociation. La stratégie utilise cinq EMA: la moyenne instantanée ((14 cycles), la moyenne intermédiaire ((25 cycles), la moyenne à court terme ((50 cycles), la moyenne intermédiaire ((100 cycles) et la moyenne à long terme ((200 cycles)).
La logique principale de la stratégie est la suivante:
Le mécanisme de jugement des tendances:
Signaux d’entrée:
Signaux de sortie:
Contrôle des risques:
Suivi de la position:
Confirmation de la ligne moyenne multiple: Confirmation de la tendance par la co-confirmation de plusieurs lignes moyennes de différentes périodes, réduction des fausses percées et des faux signaux, amélioration de la qualité du signal.
Identifier les tendances avec précision: Comparativement à un système à une seule ligne, un système à plusieurs lignes permet d’identifier plus précisément les points de basculement des tendances du marché, en particulier lorsque la ligne moyenne change instantanément de position par rapport aux autres lignes.
Une gestion des risques souple: différence d’entrée et de sortie pour les lots et les lots, ce qui reflète la différenciation du traitement des risques dans les différentes directions du marché, avec un filtre de volatilité supplémentaire pour les transactions en lots.
Signaux de négociation visuelsLa stratégie consiste à afficher clairement les positions achetées, vendues et clôturées par des balises graphiques pour faciliter l’analyse des retours et la surveillance en temps réel.
Vue d’arrière-plan des tendances: Utilisez des couleurs de fond pour distinguer les tendances à la hausse et à la baisse, pour visualiser l’environnement du marché, afin de permettre aux traders de juger rapidement de l’état actuel du marché.
Évolutivité potentielle: les calculs des indicateurs RSI et MACD sont intégrés et, bien qu’ils ne soient pas actuellement utilisés dans la logique de négociation, ils fournissent une base pour l’optimisation future de la stratégie.
Ajustabilité des paramètres: Tous les paramètres clés sont réglables via des contrôles d’entrée, y compris les cycles de la moyenne, les valeurs de la marge RSI, les paramètres MACD et les réglages ATR, afin de faciliter l’optimisation en fonction des différents environnements de marché et variétés de transactions.
Décalage de la moyenne: Tous les systèmes basés sur la courbe ont un certain retard, et il peut y avoir un retrait plus important dans un marché en tremblement de terre ou un retournement rapide. La solution consiste à ajuster le cycle de la courbe ou à ajouter des conditions supplémentaires de filtrage du marché en tremblement de terre.
Risques liés à la survente: Dans les marchés en crise, les courbes de moment peuvent fréquemment traverser les courbes de courte durée, ce qui entraîne des transactions excessives. Les transactions invalides peuvent être réduites en augmentant la durée de la position minimale ou en ajoutant des filtres supplémentaires.
Différents problèmes d’adaptabilité au marché: les stratégies linéaires à paramètres fixes présentent des variations importantes de performances dans différents environnements de marché et types de transactions. Il convient d’optimiser les paramètres pour un marché particulier ou d’envisager d’utiliser des paramètres adaptatifs.
Conflit de signaux: Bien que les indicateurs RSI et MACD soient calculés dans le code, ils ne sont pas intégrés efficacement dans la logique de négociation, ce qui peut entraîner des conflits potentiels de signaux ou des opportunités d’optimisation manquées.
Préjugés à plusieurs têtesLes stratégies actuelles utilisent des critères différents pour les multi-têtes et les balises, les multi-têtes n’ont pas de filtres de volatilité et les balises doivent satisfaire aux conditions ATR minimales, ce qui peut rendre les stratégies plus radicales dans les marchés à la hausse et augmenter les marges de risque.
Mécanisme de sortie fixe: La stratégie utilise un croisement d’indicateurs techniques fixes comme point de départ et le manque d’un mécanisme de stop-loss adapté aux conditions dynamiques du marché peut ne pas être en mesure de verrouiller efficacement les bénéfices ou de contrôler les risques.
Paramètre Sensibilité: la stratégie repose sur plusieurs paramètres de périodes de moyenne, dont de légères variations peuvent entraîner des variations significatives dans les résultats de la transaction, augmentant le risque de suradaptation.
Indicateurs calculés intégrés: la stratégie a calculé les indicateurs RSI et MACD mais n’en a pas pleinement profité. Le RSI peut être utilisé pour filtrer les conditions de marché extrêmes, le MACD pour confirmer la direction de la tendance et améliorer la qualité du signal. Par exemple, il peut être demandé que le RSI ne soit pas dans la zone de surachat lors d’une entrée à plusieurs têtes et que le RSI ne soit pas dans la zone de survente lors d’une entrée à vide.
Système d’arrêt dynamique: Introduction d’un mécanisme de stop-loss dynamique basé sur l’ATR, qui ajuste automatiquement la distance de stop-loss en fonction de la volatilité du marché, améliorant la capacité de gestion du risque. Cela peut être réalisé en calculant le point d’entrée plus ou moins un certain nombre de multiples de la valeur ATR.
Catégorie des états du marché: ajouter un mécanisme de jugement sur l’état du marché (marché tendanciel vs marché oscillant), en utilisant différentes stratégies de négociation dans différents états du marché. Par exemple, la force de la tendance du marché peut être jugée à partir de la pente de la moyenne à long terme ou de l’indicateur ADX.
Analyse de plusieurs périodes: intégrer les informations de tendance des périodes de temps plus élevées, effectuer des transactions uniquement lorsque la tendance des périodes de temps plus élevées est cohérente, améliorer le taux de victoire.
Optimiser le paramètre de la moyenne: La stratégie actuelle utilise des périodes moyennes fixes ((14, 25, 50, 100, 200), permettant de trouver les paramètres optimaux qui conviennent le mieux à un marché particulier en relançant différentes combinaisons de paramètres.
Ajouter une confirmation de transaction: la combinaison d’indicateurs de volume de transaction pour confirmer la force de la tendance, la négociation uniquement dans une tendance soutenue par le volume de transaction, la réduction des pertes causées par les fausses ruptures.
Modification des conditions d’entrée: optimiser la logique d’entrée des entrées multiples et vides pour les rendre plus symétriques, ou effectuer des ajustements plus précis pour les différentes caractéristiques de la direction du marché. Par exemple, il est possible d’envisager d’augmenter le filtrage des taux de volatilité lors des entrées multiples, ou d’ajuster la rigueur de la confirmation de la tendance.
Ajouter un filtrage de tempsAjouter un filtrage des heures de négociation pour éviter les périodes de volatilité ou de liquidité plus faible, comme les dates de publication des données importantes ou les heures de clôture des marchés.
Le système de négociation de capture de tendance de multiples courbes et de confirmation croisée est une stratégie de négociation quantitative basée sur l’analyse technique, qui juge la tendance du marché à travers une combinaison de courbes de différentes périodes, et ouvre des positions lorsque la tendance est claire et ferme les positions lorsque la tendance s’affaiblit. Le principal avantage de la stratégie réside dans l’utilisation de tendances de confirmation croisée de multiples courbes, réduisant les signaux erronés et améliorant la qualité des transactions.
La stratégie fonctionne bien dans les marchés où la tendance est claire, mais peut être exposée à des risques de sur-transaction dans les marchés instables. La stabilité et l’adaptabilité de la stratégie peuvent être encore améliorées par l’intégration des indicateurs RSI et MACD calculés, l’introduction d’un mécanisme de stop-loss dynamique, l’optimisation de la combinaison de paramètres de la moyenne et l’augmentation de la classification des états du marché.
Pour une application pratique, il est recommandé de faire un retour d’expérience suffisant sur différents environnements de marché et types de transactions, d’ajuster les paramètres pour s’adapter aux caractéristiques spécifiques du marché et de contrôler le risque de transaction unique en combinaison avec une stratégie de gestion de fonds. En outre, il peut être envisagé de l’utiliser dans le cadre d’un portefeuille d’investissement, en combinaison avec d’autres stratégies complémentaires, pour diversifier le risque de transaction et améliorer la stabilité de l’ensemble du portefeuille.
/*backtest
start: 2025-02-23 00:00:00
end: 2025-03-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("etude9", shorttitle="etude 9", overlay=true)
//on tente de comlbiner avec le RSi un stratégie pas si mauvaise sur les longs
// un d7 r rsi qui donne des indiciataions pas mal pour les short pour les long pas très concluant
// === Paramètres d'entrée ===
// Source de prix
// et merde rendement sur long est plus efficace sans condition sur ATR !!
// par contre j'ai l'imression que le rsi ça va être bien pour les shorts
// bon avec le RSi ça donne rien, et avec le macd, ç ce stade c'est foireux mmm
pricetype = input(close, title="Source de prix pour les moyennes mobiles")
// Périodes des moyennes mobiles
instant = input(14, title="Période de la moyenne instantanée (10)")
interm = input(25, title="Perdiode intermediaire (25)")
shortperiod = input(50, title="Période de la moyenne mobile courte (20)")
mediumperiod = input(100, title="Période de la moyenne mobile moyenne (50)")
longperiod = input(200, title="Période de la moyenne mobile longue (100)")
// Paramètres du RSI
rsi_length = input.int(14, title="Période RSI")
rsi_overbought = input.int(78, title="Niveau de surachat (RSI)")
rsi_oversold = input.int(30, title="Niveau de survente (RSI)")
// Paramètres pour le MACD
fast_length = input.int(12, title="Longueur Rapide MACD")
slow_length = input.int(26, title="Longueur Lente MACD")
signal_length = input.int(9, title="Longueur du Signal MACD")
// Paramètres de l'ATR
atr_length = input.int(14, title="Période ATR")
atr_multiplier = input.float(1.5, title="Multiplicateur ATR pour le Stop-Loss")
// Calcul de l'ATR
atr = ta.atr(atr_length)
// === Calcul des moyennes mobiles (EMA uniquement) ===
instant_ma = ta.ema(pricetype, instant) // Moyenne mobile instantanée
short_ma = ta.ema(pricetype, shortperiod) // Moyenne mobile courte (20)
medium_ma = ta.ema(pricetype, mediumperiod) // Moyenne mobile moyenne (50)
long_ma = ta.ema(pricetype, longperiod) // Moyenne mobile longue (100)
interm_ma = ta.ema(pricetype, interm)
// Calcul du RSI
rsi = ta.rsi(close, rsi_length)
// Calcul du MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_length)
// Stocker les résultats de crossover et crossunder dans des variables globales
is_crossover = ta.crossover(macd_line, signal_line)
is_crossunder = ta.crossunder(macd_line, signal_line)
// Filtre ATR : on ne trade que si la volatilité est suffisante
min_atr = atr > ta.sma(atr, atr_length) // ATR supérieur à sa moyenne
// === Conditions de tendance ===
trending_up = instant_ma > short_ma and instant_ma > medium_ma and instant_ma > long_ma and short_ma > medium_ma // Tendance haussière
trending_down = instant_ma< short_ma and instant_ma<medium_ma and instant_ma<long_ma and short_ma<long_ma // Tendance baissière
// Filtre RSI
rsi_filter_buy = rsi < rsi_overbought // RSI n'est pas en surachat pour un achat
rsi_filter_sell = rsi > rsi_oversold // RSI n'est pas en survente pour une vente
// === Gestion des positions ===
var bool in_position = false // Variable pour suivre si une position est ouverte
var bool is_long = false // Variable pour suivre si la position est longue ou courte
// === Signaux d'ouverture et de fermeture ===
bool buy_signal = false // Signal d'ouverture d'une position longue
bool close_signal = false // Signal de fermeture d'une position longue
bool sell_signal = false // Signal d'ouverture d'une position courte
bool close_short_signal = false // Signal de fermeture d'une position courte
// Ouvrir une position longue
if (trending_up and not in_position)
strategy.entry("Long", strategy.long)
in_position := true
is_long := true
buy_signal := true // Signal d'ouverture
else
buy_signal := false
// Fermer la position longue si instant_ma < medium_ma
if (in_position and is_long and instant_ma < short_ma)
strategy.close("Long")
in_position := false
is_long := false
close_signal := true // Signal de fermeture
else
close_signal := false
// Ouvrir une position courte
if (trending_down and not in_position and min_atr)
strategy.entry("Short", strategy.short)
in_position := true
is_long := false
sell_signal := true // Signal d'ouverture
else
sell_signal := false
// Fermer la position courte si instant_ma > medium_ma
if (in_position and not is_long and instant_ma > medium_ma)
strategy.close("Short")
in_position := false
close_short_signal := true // Signal de fermeture
else
close_short_signal := false
// === Affichage des signaux sur le graphique ===
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", size=size.small)
plotshape(series=close_signal, title="Close Long Signal", location=location.abovebar, color=color.orange, style=shape.labeldown, text="Close Long", size=size.small)
plotshape(series=close_short_signal, title="Close Short Signal", location=location.belowbar, color=color.blue, style=shape.labelup, text="Close Short", size=size.small)
// === Affichage des moyennes mobiles sur le graphique ===
plot(short_ma, color=color.blue, title="Moyenne mobile courte (20)", linewidth=2)
plot(medium_ma, color=color.orange, title="Moyenne mobile moyenne (50)", linewidth=2)
plot(long_ma, color=color.red, title="Moyenne mobile longue (100)", linewidth=2)
plot(instant_ma, color=color.rgb(43, 14, 111), title="Moyenne mobile instantanée (10)", linewidth=2)
plot(interm_ma, color=color.rgb(26, 192, 34), title="Moyenne mobile instantanée (10)", linewidth=2)
// Coloration de fond pour les tendances
bgcolor(color=trending_up ? color.new(color.green, 90) : trending_down ? color.new(color.red, 90) : na, title="Coloration de fond")