Stratégie de négociation à double moyenne mobile basée sur un prix synthétique décentralisé

Auteur:ChaoZhang est là., Date: 19 septembre 2023 à 17h13h28
Les étiquettes:

Résumé

Il s'agit d'une stratégie de négociation de moyenne mobile double basée sur le prix synthétique décentralisé (DSP). DSP est une fonction qui est en phase avec le cycle dominant des données de prix réels, obtenue en soustrayant une EMA d'un demi-cycle de l'EMA du cycle trimestriel.

La logique de la stratégie

  1. Calculer la moyenne HL xHL2 du prix de 1/2 cycle.

  2. Calculer l'EMA de 1/4 de cycle (xEMA1) et l'EMA de 1/2 de cycle (xEMA2) de xHL2 sur la base de la longueur.

  3. Obtenir le DSP en soustrayant xEMA2 de xEMA1.

  4. Définir les paramètres de la bande supérieure et inférieure, aller long lorsque le DSP traverse au-dessus de la bande supérieure, et aller court lorsqu'il traverse au-dessous de la bande inférieure.

  5. Le paramètre inverse peut basculer entre direction longue et direction courte.

Analyse des avantages

Avantages de cette stratégie:

  1. Le DSP capte le cycle des prix dominant, évitant ainsi de se laisser induire en erreur par des cycles mineurs.

  2. La conception de la double EMA permet de suivre efficacement les variations du cycle dominant.

  3. Les bandes supérieures/inférieures simples permettent d'éviter les sur-échanges.

  4. Il est facile de basculer entre long/short en utilisant un paramètre inverse, adaptable à différents environnements de marché.

  5. Aucune optimisation de paramètres complexe n'est requise, simple et pratique.

Analyse des risques

Principaux risques:

  1. Un réglage incorrect du cycle DSP peut manquer le cycle dominant.

  2. La largeur de bande doit être optimisée, faute de quoi il peut y avoir sur-échange.

  3. La conception de cycles fixes a une faible adaptabilité aux changements violents du marché.

  4. Le trading sur DSP seul laisse la stratégie vulnérable aux coups de fouet.

  5. L'absence de stop loss peut entraîner des pertes importantes.

Directions d'optimisation

Améliorations:

  1. Optimiser les paramètres pour trouver la meilleure combinaison de cycles.

  2. Ajouter des bandes dynamiques basées sur la volatilité.

  3. Incorporer des filtres de tendance et de volatilité pour réduire les faux signaux.

  4. Ajouter des mécanismes de stop loss ou de trailing stop pour contrôler le risque.

  5. Test sur plusieurs instruments pour l'universalité.

  6. Introduire l'apprentissage automatique pour l'optimisation adaptative du cycle DSP.

Résumé

Dans l'ensemble, il s'agit d'une stratégie de trading de moyenne mobile double très simple et pratique. Elle repose sur des bases solides d'analyse de cycle, avec un DSP qui suit efficacement le cycle dominant. Avec des raffinements dans l'optimisation des paramètres, les stop-loss, les conditions de filtrage et plus encore, elle peut devenir une stratégie de trading quantitative fiable.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/03/2017
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
	     iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xEMA1_EMA2, color=blue, title="D_DSP")

Plus de