Les ressources ont été chargées... Je charge...

Stratégie de conversion des moyennes mobiles MACD

Auteur:ChaoZhang est là., Date: 2023-12-08 15h29h41
Les étiquettes:

img

Résumé

La stratégie de conversion de la moyenne dynamique MACD (Moving Average Bull Bear Conversion Strategy) calcule les lignes DIFF et DEA de l'indicateur MACD pour déterminer si la tendance du marché s'est inversée, générant ainsi des signaux de trading.

La logique de la stratégie

La stratégie est principalement basée sur les lignes DIFF et DEA de l'indicateur MACD. MACD signifie Divergence de convergence moyenne mobile, composée des lignes DIFF, DEA et MACD. Parmi elles, DIFF représente la différence entre EMA à court terme et EMA à long terme, DEA est l'EMA de DIFF utilisé pour vérifier les signaux DIFF, et MACD représente la différence entre DIFF et DEA, utilisé pour identifier les divergences.

Lorsque le DIFF dépasse la DEA, cela signifie que la moyenne mobile à court terme commence à se renforcer et que le marché devient haussier. Lorsque le DIFF dépasse la DEA, cela suggère que la moyenne mobile à court terme devient faible et que le marché devient baissier. Par conséquent, cette stratégie est longue lorsque le DIFF dépasse la DEA et court lorsqu'il dépasse la DEA.

En outre, la stratégie intègre des filtres EMA de prix pour éviter de fausses ruptures. Elle ne va long que lorsque le DIFF dépasse la DEA et que le prix est inférieur au prix long précédent, et ne va court que lorsque le DIFF dépasse la DEA et que le prix est supérieur au prix court précédent.

Analyse des avantages

La stratégie de conversion de la moyenne mobile MACD est une combinaison de l'indicateur MACD et des filtres de l'EMA des prix pour éviter les faux signaux générés uniquement par le MACD, améliorant ainsi les performances des transactions.

Les principaux avantages sont les suivants:

  1. Utilisation du MACD pour identifier les points d'inversion de tendance et capturer les points tournants
  2. Incorporation de filtres EMA pour réduire les fausses opportunités de rupture
  3. Génération rapide de signaux adaptés au trading à court terme
  4. Tendance de mise en œuvre à la suite de la capture des bénéfices de tendance à moyen terme
  5. S'aligne sur la plupart des traders mode de réflexion des transactions aux points de conversion

Analyse des risques

La stratégie de conversion des moyennes mobiles MACD est également sujette à certains risques:

  1. Le MACD est enclin à générer de faux signaux, ce qui nécessite des filtres de prix EMA, mais manquera également certains mouvements
  2. Besoin de surveiller de près les lignes DIFF et DEA, un réglage incorrect des paramètres augmente les faux signaux
  3. Les signaux de rupture ne prennent en compte que 1 bar, avec le risque d'être fouettés.
  4. La stratégie repose principalement sur le croisement DIFF/DEA pour les signaux, peut augmenter la fréquence des échanges si les signaux sont trop fréquents

Les principales façons d'optimiser les risques sont les suivantes:

  1. Ajuster les paramètres MACD pour réduire les faux signaux
  2. Améliorer la résistance du filtre pour réduire l'apparition de la scie
  3. Ajouter des filtres sur la position détenue pour limiter la fréquence des transactions

Directions d'optimisation

La stratégie de conversion des moyennes mobiles MACD à la hausse peut être encore optimisée dans les dimensions suivantes:

  1. Optimiser les paramètres MACD des périodes DIFF/DEA
  2. Ajouter des filtres de synchronisation à une fréquence de négociation inférieure
  3. Incorporer des stratégies stop loss/profit take pour contrôler les objectifs de profit
  4. Ajouter d'autres filtres d'indicateur comme les bandes BOLL et KD
  5. Incorporer un biais de tendance pour éviter les opérations contre tendance
  6. Élaborer des stratégies de sortie ou des modèles de prise de bénéfices basés sur ce cadre stratégique

Conclusion

La stratégie de conversion de la moyenne mobile taureau-ours MACD identifie l'entrée de marché haussière/baissière par les signaux croisés DIFF et DEA, et utilise des filtres EMA de prix pour éliminer les faux signaux, déterminant efficacement les points d'inversion de la tendance du marché.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("macd_strategy", 
          shorttitle="macd", 
          overlay=true, 
          pyramiding=1, 
          max_bars_back=5000, 
          calc_on_order_fills = false, 
          calc_on_every_tick=true, 
          default_qty_type=strategy.percent_of_equity, 
          default_qty_value=100, 
          commission_type =strategy.commission.percent, 
          commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]

cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
    cross_over_price := price[1]
    cross_over_signal := diff
if (crossunder(diff,dea))
    cross_under_price := price[1]
    cross_under_signal := diff
if dea > 0
    cross_over_price = na
    cross_over_signal = na
else
    cross_under_price = na
    cross_under_signal = na
if diff > 0
    if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
        strategy.entry("S", strategy.short,  comment="S")
else
    if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
        strategy.entry("B", strategy.long,  comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))

Plus de