Système de négociation de moyenne mobile adaptative de Donchian

Auteur:ChaoZhang est là., Date: le 21 février 2024
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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.

Analyse des points forts

Cette stratégie présente les avantages suivants:

  1. 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é.

  2. La combinaison de deux moyennes mobiles peut filtrer efficacement le bruit et réduire les faux signaux.

  3. 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.

  4. 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é.

Risque et optimisation

La stratégie comporte également certains risques:

  1. Il est difficile de déterminer le meilleur moment d'entrée pour les transactions à long terme lors d'ajustements à court terme.

  2. Les paramètres doivent être optimisés pour différents secteurs et stocks individuels.

  3. Les points d'arrêt des pertes doivent être correctement assouplis face à des changements de tendance importants dus à des situations d'urgence.

Résumé

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)

Plus de