Stratégie de croisement des moyennes mobiles adaptatives basée sur l'Uhl MA

Auteur:ChaoZhang est là., Date: 2023-09-19 22:06:42
Les étiquettes:

Résumé

Le système Uhl MA est un système de croisement de moyenne mobile adaptative conçu pour surmonter les lacunes des systèmes traditionnels de MA. Il utilise des moyennes mobiles rapides et lentes pour générer des signaux de trading, le MA lent étant le MA corrigé (CMA) proposé à l'origine par Andreas Uhl et le MA rapide étant l'étape de tendance corrigée (CTS) qui est également basée sur le MA corrigé. Le système ajuste adaptivement les paramètres de MA pour obtenir des signaux de trading plus fiables.

Analyse des principes

Le noyau de cette stratégie réside dans le calcul des lignes Uhl MA et CTS. La ligne Uhl MA est une amélioration par rapport à la SMA traditionnelle, en utilisant la variance (VAR) et l'écart carré historique (SECMA) pour ajuster adaptivement les poids entre SMA et la CMA précédente. Lorsque le VAR est inférieur à SECMA, plus de poids est mis sur SMA, sinon plus de poids est mis sur CMA. Cela aide à filtrer un peu de bruit et génère une MA plus lisse.

La logique de croisement est la même que celle des systèmes traditionnels de MA. Un signal d'achat est généré lorsque CTS traverse au-dessus de Uhl MA, et un signal de vente lorsqu'il traverse en dessous.

Analyse des avantages

Comparé aux systèmes de croisement MA traditionnels, le plus grand avantage de cette stratégie est l'utilisation de MA adaptatifs, qui peuvent filtrer un peu de bruit et générer des signaux plus fiables sur les marchés à plage. Le croisement adaptatif réduit les faux signaux par rapport à la croix morte et à la croix dorée.

Analyse des risques

Le risque majeur de cette stratégie provient de l'augmentation des faux signaux dans les marchés de gamme, car les MAs sont des indicateurs de tendance de nature. Cela est en grande partie dû au calcul adaptatif de la CMA, qui converge vers les gammes de prix dans la consolidation, générant des signaux inutiles.

Suggestions d'optimisation

Les optimisations potentielles comprennent:

  1. Améliorer le calcul de l'AMC afin d'éviter la convergence dans des marchés variés, par exemple en utilisant d'autres indicateurs.

  2. Optimiser les paramètres grâce à des algorithmes d'optimisation multi-variants comme les algorithmes génétiques.

  3. Mettre en place un stop loss pour contrôler les pertes d'une seule transaction.

  4. Ajoutez des filtres utilisant d'autres indicateurs pour éviter une sur-consolidation, tels que les mesures de volatilité, l'indice RFM, etc.

  5. Optimiser la gestion des risques, y compris la taille des positions, les indicateurs de risque pour mieux contrôler le risque global.

Conclusion

Le système Uhl MA est une stratégie de croisement de MA adaptative très innovante. Par rapport aux stratégies traditionnelles, les MA dynamiques aident à réduire les faux signaux et à mieux capturer les tendances. Mais des limitations existent dans les marchés variés. D'autres améliorations de la méthodologie de calcul et l'ajout de filtres détiennent un grand potentiel.

Je ne sais pas.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-25 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/
// © alexgrover

//@version=4
strategy("Uhl MA System - Strategy Analysis")
length = input(100),mult = input(1.),src = input(close)
//----
out = 0., cma = 0., cts = 0.
Var = variance(src,length)           ,sma = sma(src,length)
secma = pow(nz(sma - cma[1]),2)      ,sects = pow(nz(src - cts[1]),2) 
ka = Var < secma ? 1 - Var/secma : 0 ,kb = Var < sects ? 1 - Var/sects : 0
cma := ka*sma+(1-ka)*nz(cma[1],src)  ,cts := kb*src+(1-kb)*nz(cts[1],src)
//----
if crossover(cts,cma)
    strategy.entry("Buy", strategy.long)
if crossunder(cts,cma)
    strategy.entry("Sell", strategy.short)
//----
cap = 50000
eq = strategy.equity
rmax = 0.
rmax := max(eq,nz(rmax[1]))
//----
css = eq > cap ? #0cb51a : #e65100
a = plot(eq,"Equity",#2196f3,2,transp=0)
b = plot(rmax,"Maximum",css,2,transp=0)
fill(a,b,css,80)

Plus de