Stratégie de trading quantitative basée sur le croisement de double EMA


Date de création: 2023-11-21 11:41:40 Dernière modification: 2023-11-21 11:41:40
Copier: 0 Nombre de clics: 620
1
Suivre
1617
Abonnés

Stratégie de trading quantitative basée sur le croisement de double EMA

Aperçu

La stratégie détermine la tendance du marché en calculant le croisement de la moyenne des EMA de deux périodes différentes et en génère un signal de négociation. Lorsque le marché entre dans une tendance à la hausse sur les EMA de la courte période, la stratégie prend une position plus élevée; lorsque le marché entre dans une tendance à la baisse sur les EMA de la longue période, la stratégie se retire de la position.

Principe de stratégie

La stratégie utilise principalement la théorie de la jonction des deux lignes moyennes de l’EMA. La ligne moyenne de l’EMA est divisée en lignes longues et courtes. Le paramètre de l’EMA court est défini sur 10 jours et le paramètre de l’EMA long sur 21 jours.

Lorsque la courte EMA traverse la longue EMA, un signal d’achat est généré; lorsque la courte EMA traverse la longue EMA, un signal de vente est généré. La stratégie définit en même temps un seuil de croissance, ouvrant des positions supplémentaires uniquement lorsque la croissance dépasse le seuil de dépréciation et se stabilisant lorsque la baisse dépasse le seuil de dépréciation.

Plus précisément, les conditions d’achat sont les suivantes: l’EMA courte est supérieure à l’EMA longue et le taux de croissance du cours de l’action est supérieur au seuil positif fixé; les conditions d’offre sont les suivantes: l’EMA courte est inférieure à l’EMA longue et le taux de croissance du cours de l’action est inférieur au seuil négatif fixé.

Avantages stratégiques

  • La théorie de la fourchette dorée, utilisant une double ligne égale EMA, est relativement simple et fiable.
  • Augmenter le seuil de croissance pour éviter les erreurs de négociation en cas de faiblesse de la croissance
  • Le taux de perte maximale est strictement contrôlable
  • Ajustez les paramètres de la ligne moyenne EMA de manière flexible pour différents cycles

Analyse des risques

  • L’EMA moyenne est en retard et risque de manquer le point de basculement
  • Le croisement de la ligne moyenne a une certaine latence qui peut entraîner la perte du meilleur moment pour ouvrir une position.
  • Optimisation dépendante des paramètres, une mauvaise définition des paramètres peut entraîner une fréquence de transaction ou un manque de signal

Direction d’optimisation

  • Optimisation en combinaison avec d’autres indicateurs, tels que MACD, KD, etc., pour améliorer la précision du signal
  • Augmenter les stratégies de stop loss, comme le suivi des stop loss, pour maximiser les profits
  • Optimiser les paramètres du cycle EMA, en définissant les meilleurs paramètres pour les différentes variétés
  • Optimisation de l’ajustement dynamique des paramètres en combinant des données en temps réel et des méthodes d’apprentissage automatique

Résumer

Cette stratégie est globalement simple et fiable, elle permet de juger de la tendance des prix à l’aide d’une double croisement des EMA et de définir des seuils de croissance pour émettre un signal de négociation. Par rapport à une seule croisement de la moyenne, les faux signaux peuvent être filtrés. Cependant, la moyenne EMA elle-même présente des problèmes de retard, et la combinaison avec d’autres indicateurs ou paramètres dynamiques peut encore améliorer l’efficacité de la stratégie.

Code source de la stratégie
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)

useTimeLimit    = input(defval = false, title = "Use Start Time Limiter?")
startYear       = input(defval = 2016, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

startTimeOk() => true

lenght0 = input(10)
lenght1 = input(21)

source = close

EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)

growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)

if( startTimeOk() )
    buy_condition = EmaShort > EmaLong and growth > thresholdUp
    buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
    strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
    strategy.close(id='buy', when=buy_exit_condition)