Stratégie quantitative combinée EMAS en mouvement dynamique


Date de création: 2024-01-22 12:34:33 Dernière modification: 2024-01-22 12:34:33
Copier: 1 Nombre de clics: 536
1
Suivre
1617
Abonnés

Stratégie quantitative combinée EMAS en mouvement dynamique

Aperçu

La stratégie est une stratégie de combinaison de moyennes mobiles dynamiques sur plusieurs périodes. Elle utilise des moyennes mobiles indicielles de différentes longueurs (EMA) pour les jugements de tendance et les sorties d’entrée. La courbe MAX dans le nom de la stratégie indique l’utilisation de plusieurs EMA et la courbe dynamique indique que la longueur de l’EMA est réglable.

Principe de stratégie

La stratégie utilise 7 EMA à différentes vitesses, de la plus rapide à la plus lente: 3 EMA cycliques, 15 cycles, 19 cycles, 50 cycles, 100 cycles, 150 cycles et 200 cycles. Les 7 EMA forment une hiérarchie, permettant aux prix de clôture de briser les 7 EMA une à une pour déterminer les signaux de position longue et courte, afin d’assurer la force d’entrée après le renversement de tendance.

En outre, la stratégie combine les deux conditions de confirmation d’un signal de position longue, à savoir une hausse de l’innovation et une hausse historique de la clôture, et une baisse de l’innovation et une baisse historique de la clôture pour confirmer un signal de position courte, afin d’éviter une fausse rupture.

Les conditions de clôture exigent que le prix de clôture passe de l’EMA rapide à l’EMA lente, indiquant un renversement de tendance; ou que le prix le plus bas ou le prix le plus élevé de la dernière ligne K franchisse 4 EMA, indiquant que la transaction doit être immédiatement clôturée.

Analyse des avantages

  • L’utilisation de 7 EMA à vitesse différente pour former une échelle permet de déterminer plus précisément le point de basculement de la tendance
  • Combiner les hauts innovants et les hauts historiques pour juger des positions longues, les bas innovants et les bas historiques pour juger des positions courtes, éviter les fausses percées
  • Les conditions de double placement sont plus strictes et permettent de couper les pertes en temps opportun.

Analyse des risques

  • Il n’y a pas de stop loss et il y a un risque de pertes énormes.
  • Les conditions de double parité peuvent entraîner un départ prématuré.
  • Les EMA à courte période sont plus susceptibles de générer plus de bruit, d’augmenter la fréquence des transactions et les frais de traitement.

La solution est simple:

  1. Réglage des arrêts statiques et mobiles
  2. Modifier la durée des EMA de placement pour réduire la rigueur des conditions de double placement
  3. Augmentation de la durée des EMA et réduction de la fréquence des transactions

Direction d’optimisation

  • Augmentation des stratégies de stop loss, telles que le stop loss à pourcentage fixe, le stop loss mobile, etc.
  • Ajustez les paramètres EMA pour trouver la meilleure combinaison de paramètres
  • Ajout de filtres pour d’autres indicateurs tels que MACD, ATR, KDJ, etc. pour améliorer la qualité du signal
  • La stratégie combinée avec une stratégie de bande passante pour capturer les fluctuations secondaires dans une tendance
  • Considérer l’ajout d’un module de gestion de fonds

Résumer

La stratégie est globalement bien pensée, elle utilise 7 EMA à différentes vitesses pour juger les tendances et dispose d’une double condition de placement, ce qui permet de juger plus sensiblement le renversement de tendance. Cependant, la stratégie elle-même ne met pas en place de stop-loss, il existe un risque de perte énorme, en plus de cela, elle est susceptible de causer des problèmes d’abandon prématuré.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Crypto MAX Trend", shorttitle="Crypto MAX", overlay = true  )
Length = input(3, minval=1)
Length2 = input(15, minval=1)
Length3 = input(19, minval=1)
//Length33 = input(25, minval=1)
Length4 = input(50, minval=1)
Length44 = input(100, minval=1)
Length5 = input(150, minval=1)
Length6 = input(171, minval=1)
Length66 = input(172, minval=1)

xPrice = input(close)

xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xPrice, Length2)
xEMA3 = ema(xPrice, Length3)
//xEMA33 = ema(xPrice, Length33)
xEMA4 = ema(xPrice, Length4)
xEMA44 = ema(xPrice, Length44)
xEMA5 = ema(xPrice, Length5)
xEMA6 = ema(xPrice, Length6)
xEMA66 = ema(xPrice, Length66)

// plot(xEMA1, color=color.white)
// plot(xEMA2, color=color.red)
// plot(xEMA3, color=color.green)
// plot(xEMA4, color=color.purple)
// plot(xEMA44, color=color.gray)
// plot(xEMA5, color=color.maroon)
// plot(xEMA6, color=color.blue)
// plot(xEMA66, color=color.orange)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



long = close >  xEMA1 and xEMA1 > xEMA2 and xEMA2 > xEMA3  and xEMA3 > xEMA4  and xEMA4 > xEMA44 and xEMA44 > xEMA5 and xEMA5> xEMA6  and xEMA6> xEMA66  and close > high[1] and high[1] > high[2] and close > high[3] and close > high[4] and close > high[5] and high[5] > high[6] and time_cond
short = close < xEMA1 and xEMA1 < xEMA2 and xEMA2 < xEMA3  and xEMA3 < xEMA4  and xEMA4 < xEMA44 and xEMA44 < xEMA5 and xEMA5< xEMA6 and  xEMA6< xEMA66 and close < low[1] and low[1] < low[2] and close < low[3] and close < low[4] and close< low[5] and low[5] < low[6] and time_cond

notlong = close < xEMA1
strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)


exitlong1 = xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4
exitlong2 = crossunder(low,xEMA1) and crossunder(low,xEMA2) and crossunder(low,xEMA3) and crossunder(low,xEMA4)
exitshort1 = xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4
exitshort2 = crossover(high,xEMA1) and crossover(high,xEMA2) and crossover(high,xEMA3) and crossover(high,xEMA4)

strategy.close("long", when = exitlong1 or exitlong2)
strategy.close("short", when= exitshort1 or exitshort2)