
La stratégie d’arrêt de suivi croisé des moyennes mobiles auto-adaptatives est une stratégie de trading quantitatif qui combine plusieurs indicateurs techniques. La stratégie est principalement basée sur des signaux croisés de moyennes mobiles simples rapides et lentes (SMA) pour effectuer des transactions, tout en utilisant des arrêts de suivi auto-adaptatifs pour gérer les risques. La stratégie intègre également des fonctionnalités avancées telles que le dimensionnement des positions basé sur la volatilité et des niveaux d’arrêt auto-adaptatifs pour améliorer son adaptabilité et sa robustesse dans différentes conditions de marché.
La logique centrale de cette stratégie comprend les éléments clés suivants:
La croisée des moyennes mobiles: utilise une moyenne mobile simple (SMA) de deux cycles différents, soit une moyenne mobile rapide (SMA) de 5 cycles par défaut et une moyenne moyenne lente (SMA) de 50 cycles par défaut. Lorsque la moyenne moyenne rapide traverse la moyenne moyenne lente vers le haut, un signal de multiplication est déclenché.
La stratégie utilise une méthode de dimensionnement dynamique des positions basée sur le solde du compte et le prix actuel. Un facteur de “confiance” est également introduit, permettant d’ajuster la proportion de fonds investis.
Stop-loss de suivi: mise en place d’un mécanisme de stop-loss de suivi basé sur le pourcentage. Le niveau de stop-loss est déplacé vers le haut à mesure que les prix augmentent, afin de bloquer les bénéfices et de limiter les retraits.
Caractéristique d’adaptation: si l’option “fancy_tests” est activée, la stratégie utilise un pourcentage de stop loss dynamique basé sur l’écart standard, permettant au niveau de stop loss de s’adapter à la volatilité du marché.
Logique de sortie: la stratégie repose principalement sur le suivi des arrêts-pertes pour régler la position, sans fixation d’un point de sortie fixe.
Suivi de la tendance: en utilisant des moyennes mobiles croisées, la stratégie est capable de capturer les tendances à moyen et long terme, ce qui permet d’obtenir des gains significatifs dans les tendances fortes.
Gestion des risques: l’utilisation d’un mécanisme de suivi des pertes permet de maîtriser efficacement les risques de baisse tout en permettant aux bénéfices de croître librement.
Adaptabilité: en incorporant des facteurs de volatilité pour ajuster le niveau de stop loss, la stratégie est mieux adaptée aux différentes conditions du marché.
Gestion des fonds: le dimensionnement dynamique des positions permet d’augmenter la taille des transactions au fur et à mesure que le compte augmente, tout en réduisant automatiquement l’exposition au risque lorsque le compte diminue.
Flexibilité: la stratégie offre plusieurs paramètres réglables, tels que les moyennes mobiles, les pourcentages de stop loss, etc., que l’utilisateur peut optimiser en fonction des différents marchés et des préférences de risque personnelles.
Fausse rupture: Dans les marchés à la verticale ou aux oscillations, les fausses ruptures des moyennes mobiles peuvent se produire fréquemment, entraînant de multiples arrêts de pertes.
L’arriération: les moyennes mobiles sont essentiellement des indicateurs arriérés qui peuvent ne pas réagir assez rapidement dans des marchés très volatils.
Excessive transaction: si les paramètres sont mal configurés, cela peut entraîner des entrées et des sorties fréquentes, augmentant les coûts de transaction.
Risque de retrait: malgré le suivi des pertes, il est possible de faire face à un retrait plus important dans un marché qui se retourne rapidement.
Le trading unidirectionnel: la stratégie consiste à ne faire que de la survaleur et à manquer des opportunités ou à subir des pertes dans une tendance à la baisse.
L’analyse multi-cadres temporels: l’introduction d’indicateurs de jugement de tendance à plus long terme, tels que les moyennes mobiles à plus long terme, pour réduire les faux signaux.
Adhésion à la logique du shorting: élargissement de la stratégie pour soutenir le shorting, amélioration de la globalité de la stratégie et des opportunités de profit.
Optimiser le timing de l’entrée: envisagez de combiner avec d’autres indicateurs techniques (comme le RSI, le MACD, etc.) pour filtrer les signaux de trading et améliorer l’exactitude de l’entrée.
Optimisation des paramètres dynamiques: mise en œuvre de mécanismes d’ajustement des paramètres adaptatifs, tels que l’ajustement des cycles des moyennes mobiles en fonction de la dynamique de la volatilité du marché.
Augmentation des mécanismes de plafonnement des bénéfices: en plus du suivi des arrêts de perte, il est envisageable d’ajouter des règles de plafonnement des bénéfices basées sur des indicateurs techniques ou des objectifs fixes.
Amélioration de la gestion des positions: mise en œuvre de stratégies de dimensionnement des positions plus complexes, telles que celles basées sur les règles de Kelly ou d’autres méthodes de parité de risque.
Ajout de filtres de fondamentaux: Pour les transactions en actions, il est possible d’envisager l’introduction d’indicateurs de fondamentaux comme condition supplémentaire de filtrage des transactions.
Bien qu’il existe des risques et des limites inhérents, il a le potentiel d’être un système de trading robuste grâce à une optimisation des paramètres soigneuse et à d’autres améliorations stratégiques. La conception modulaire de la stratégie offre également une bonne base pour l’expansion et l’optimisation futures.
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © chinmay.hundekari
//@version=5
//@version=5
strategy("test", overlay = true)
// Calculate two moving averages with different lengths.
SLMA = input.int(50,"SMA",minval=10,step=1)
FSMA = input.int(5,"SMA",minval=1,step=1)
fancy_tests = input.bool(true,"Enable Fancy Changes")
longLossPerc = input.float(2, title="Trailing Stop Loss (%)",
minval=0.0, step=0.1) * 0.01
stdMult = input.float(2.0, title="Standard Deviation Multiplier",
minval=0.0, step=0.01)
float fastMA = ta.sma(close, FSMA)
float slowMA = ta.sma(close, SLMA)
float closMA = ta.sma(close, 25)
confidence = 1.0
if (fancy_tests)
longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close
balance = strategy.initial_capital + strategy.netprofit
balanceInContracts = balance* confidence/close
// Enter a long position when `fastMA` crosses over `slowMA`.
if ta.crossover(fastMA, slowMA)
strategy.entry("BUY", strategy.long, qty=balanceInContracts)
//longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
//Trailing Stop loss Code
longStopPrice = 0.0
percLoss = longLossPerc
longStopPrice := if strategy.position_size > 0
//if (strategy.openprofit_percent/100.0 > longLossPerc)
// percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc)
stopValue = close * (1 - percLoss)
math.max(stopValue, longStopPrice[1])
else
0
if strategy.position_size > 0
strategy.exit("STP", stop=longStopPrice)
plot(strategy.position_size > 0 ? longStopPrice : na,
color=color.red, style=plot.style_cross,
linewidth=2, title="Long Stop Loss")
// Enter a short position when `fastMA` crosses under `slowMA`.
//if ta.crossunder(fastMA, closMA)
// strategy.close_all("SEL")//strategy.entry("sell", strategy.short)
// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)
plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)