Stratégie de négociation quantitative composée basée sur le MACD

Auteur:ChaoZhang est là., Date: 2023-12-13 16:44:46 Je suis désolé
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading quantitative composée basée sur l'indicateur MACD. Il combine plusieurs indicateurs tels que MACD et KDJ pour générer des signaux de trading grâce à la combinaison d'indicateurs.

Principe de stratégie

L'indicateur de base de cette stratégie est le MACD. Le MACD est l'abréviation de Moving Average Convergence Divergence, qui est un indicateur de suivi de tendance. Il se compose d'une moyenne mobile rapide (EMA) et d'une moyenne mobile lente (EMA). Les paramètres par défaut sont 12 pour la ligne rapide et 26 pour la ligne lente. La stratégie calcule la différence entre les deux lignes EMA, appelée DIF. Ensuite, une EMA de 9 jours est calculée sur le DIF pour obtenir l'indicateur DEA. Lorsque le DIF traverse au-dessus du DEA, un signal d'achat est généré.

L'indicateur KDJ comprend également l'indicateur KDJ. L'indicateur KDJ comprend la valeur K, la valeur D et la valeur J. Parmi eux, la valeur K fait référence à la valeur aléatoire, la valeur D est la moyenne mobile de la valeur K et la valeur J fait référence à la valeur déterministe. L'indicateur KDJ reflète les niveaux de surachat et de survente sur le marché. Lorsque la valeur J est supérieure à 100, elle représente des conditions de surachat. Lorsque celle-ci est inférieure à 10, elle représente des conditions de survente.

Les avantages de la stratégie

La stratégie combine plusieurs indicateurs tels que MACD et KDJ, qui peuvent filtrer efficacement le bruit du marché et identifier les directions de tendance. L'indicateur MACD peut capturer les changements de prix à court terme en temps opportun, tandis que l'indicateur KDJ peut confirmer les tendances à moyen et long terme.

En outre, la stratégie intègre un sélecteur d'intervalle de temps, ce qui offre une plus grande souplesse dans l'évaluation du rendement de la stratégie.

Risques et solutions

  • Lorsque le marché fluctue pendant une période prolongée, le MACD aura plusieurs faux signaux.

  • Nous pouvons tester plusieurs groupes de paramètres et choisir une combinaison de paramètres plus stable.

  • Une sélection inappropriée des délais de backtest va surestimer ou sous-estimer la rentabilité de la stratégie.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Ajouter un mécanisme de stop loss. Lorsque le prix déclenche la ligne de stop loss, il forcera une sortie de position à des fins de stop loss.

  2. Incorporer plus de filtres d'indicateurs, combinant des indicateurs tels que le RSI et les bandes de Bollinger pour améliorer la précision du signal.

  3. Optimiser les paramètres de l'indicateur. Modifier la combinaison des paramètres EMA et KDJ pour trouver les paramètres optimaux.

  4. Utilisez des techniques d'apprentissage automatique pour optimiser automatiquement. Utilisez des réseaux neuronaux pour l'entraînement et l'optimisation des paramètres.

Conclusion

Il s'agit d'une stratégie quantitative typique qui suit principalement la tendance, complétée par un contrôle de la surachat et de la survente. Elle combine les avantages de plusieurs indicateurs et équilibre efficacement la stabilité et la sensibilité.


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

//@version=4
strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000)

source = close

fastlength=input(12, minval=1)
slowlength=input(26,minval=1)
signallength=input(9,minval=1)

// === Defining the MACD oscillator
fastMA=ema(source,fastlength)
slowMA=ema(source,slowlength)
MACD=fastMA-slowMA
signal=sma(MACD,signallength)
delta=MACD-signal

// === Buy and Sell Signals ===
buy=crossover(MACD, signal)
sell=crossunder(MACD, signal)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2018, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2020, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell)                   // exit long when "within window of time" AND crossunder      

Plus de