Le système de négociation de moyennes mobiles adaptatives de Donchian est une stratégie de négociation quantitative qui suit les tendances des prix.
La stratégie calcule d'abord la plage de volatilité réelle. La plage de volatilité réelle fait référence à la plage de mouvement des prix du prix de clôture du chandelier précédent aux prix les plus élevés et les plus bas du chandelier actuel. Elle calcule ensuite la moyenne mobile simple de la plage de volatilité réelle comme la bande passante du canal de Donchian. Combinée à des moyennes mobiles de deux périodes, elle juge la tendance des prix. Les règles de jugement spécifiques sont les suivantes:
Lorsque le prix dépasse la moyenne mobile à long terme plus la bande passante et la moyenne mobile à court terme plus la bande passante, passez long; lorsque le prix tombe en dessous de la moyenne mobile à long terme moins la bande passante et de la moyenne mobile à court terme moins la bande passante, passez court. Les conditions de clôture sont la fermeture de positions longues lorsque les prix tombent en dessous des moyennes mobiles longues et courtes augmentées par la bande passante; la fermeture de positions courtes lorsque les prix dépassent les moyennes mobiles longues et courtes augmentées par la bande passante.
Ainsi, en ajustant dynamiquement la bande passante du canal Donchain en fonction de la volatilité réelle et en filtrant avec des moyennes mobiles doubles, la stratégie peut suivre efficacement les tendances des prix à moyen et long terme, réduire les faux signaux et obtenir des opportunités de trading stables à long terme.
Cette stratégie présente les avantages suivants:
L'utilisation de la volatilité réelle pour ajuster dynamiquement la bande passante du canal évite les paramètres statiques et s'adapte mieux aux changements du marché.
La combinaison de deux moyennes mobiles peut filtrer efficacement le bruit et réduire les faux signaux.
Le suivi des tendances à moyen et à long terme peut réduire les opérations répétitives et réduire la fréquence des opérations afin d'obtenir des opportunités de profit à long terme.
La logique de la stratégie est simple et claire, facile à mettre en œuvre, tolérante aux erreurs et adaptée au trading algorithmique automatisé.
La stratégie comporte également certains risques:
Il est difficile de déterminer le meilleur moment d'entrée pour les transactions à long terme lors d'ajustements à court terme.
Les paramètres doivent être optimisés pour différents secteurs et stocks individuels.
Les points d'arrêt des pertes doivent être correctement assouplis face à des changements de tendance importants dus à des situations d'urgence.
En résumé, le système de négociation de moyennes mobiles adaptatives de Donchian est une stratégie quantitative globalement stable, simple et facile à mettre en œuvre. En utilisant des canaux dynamiques et un double filtrage des moyennes mobiles, il peut suivre efficacement les tendances du marché à moyen et long terme, réduire la fréquence des transactions et obtenir des bénéfices soutenus à long terme.
/*backtest start: 2023-02-14 00:00:00 end: 2024-02-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © dongyun //@version=4 strategy("唐齐安移动平均交易系统", overlay=true) longperiod = input(20,'长线') shortperiod = input(5,'短线') bandfactor = input(1.0,'') TrueHigh = 0.0 TrueLow = 0.0 TrueRange = 0.0 TrueHigh := close[1] > high ? close[1] : high TrueLow := close[1] < low ? close[1] : low TrueRange := TrueHigh - TrueLow AvgTrueRange = sma(TrueRange,longperiod) MAlong = sma(close,longperiod) MAshort = sma(close,shortperiod) band = AvgTrueRange * bandfactor if close > MAlong[1] + band[1] and close > MAshort[1] + band[1] strategy.entry("Long", strategy.long, when=strategy.position_size < 1) else if close < MAlong[1] - band[1] and close < MAshort[1] - band[1] strategy.entry("Short", strategy.short, when=strategy.position_size > -1) if close < MAlong[1] - band[1] or close < MAshort[1] - band[1] strategy.close("Long", when=strategy.position_size > 0) else if close > MAlong[1] + band[1] or close > MAshort[1] + band[1] strategy.close("Short", when=strategy.position_size < 0)