Stratégie de négociation quantitative basée sur le croisement de la moyenne mobile double

Auteur:ChaoZhang est là., Date: le 21 février 2024
Les étiquettes:

img

Résumé

Cette stratégie est appelée Quantitative Trading Strategy Based on Double Moving Average Crossover. L'idée principale de cette stratégie est d'utiliser les signaux croisés entre les lignes moyennes mobiles rapides et lentes pour déterminer les tendances des prix et prendre des décisions d'achat et de vente en conséquence.

Principe de stratégie

Les indicateurs de base de cette stratégie sont les lignes moyennes mobiles rapides et lentes.

Plus précisément, le paramètre de la ligne moyenne mobile rapide est défini à 24 périodes, et le paramètre de la ligne moyenne mobile lente est défini à 100 périodes. Lorsque la ligne moyenne mobile rapide traverse au-dessus de la ligne moyenne mobile lente en bas, cela indique que les prix entrent dans une tendance à la hausse, et la stratégie émettra un signal d'achat à ce moment-là. Lorsque la ligne moyenne mobile rapide traverse en dessous de la ligne moyenne mobile lente en haut, cela indique que les prix entrent dans une tendance à la baisse, et la stratégie émettra un signal de vente à ce moment-là.

En jugeant de la direction croisée des lignes moyennes mobiles rapides et lentes, les changements de tendance des prix peuvent être capturés efficacement pour aider à prendre des décisions d'achat et de vente.

Les avantages de la stratégie

Cette stratégie présente les avantages suivants:

  1. Le principe est simple et facile à comprendre, facile à mettre en œuvre.

  2. Les paramètres des moyennes mobiles rapides et lentes peuvent être ajustés en fonction des conditions réelles, ce qui rend la stratégie plus flexible.

  3. Une forte capacité à capturer les changements de tendance. Les doubles croisements de moyennes mobiles sont souvent utilisés pour capturer les points tournants lorsque les prix passent de la consolidation à la tendance.

  4. Les doubles moyennes mobiles peuvent être utilisées pour identifier les fourchettes de consolidation et éviter l'ouverture répétée de positions pendant les consolidations.

Risques liés à la stratégie

Cette stratégie comporte également certains risques:

  1. Les signaux de croisement des moyennes mobiles doubles peuvent être retardés.

  2. Il est facile de produire de faux signaux dans les marchés oscillants. Les moyennes mobiles doubles fonctionnent mieux lorsque les prix montrent une tendance claire. Mais dans les marchés oscillants, ils ont tendance à produire des faux signaux fréquents.

  3. Si les paramètres des moyennes mobiles rapides et lentes sont définis de manière incorrecte, cela affectera la sensibilité à la capture des croisements de tendance.

Solution correspondante:

  1. Réduire de manière appropriée la période de moyenne mobile pour augmenter la sensibilité des signaux croisés.

  2. Ajouter des indicateurs de volatilité ou de volume pour la filtration afin de réduire les transactions invalides sur les marchés oscillants.

  3. Optimisation des paramètres pour trouver les meilleures combinaisons de paramètres. Ajouter l'apprentissage automatique et d'autres méthodes pour optimiser automatiquement.

Directions pour l'optimisation de la stratégie

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

  1. Utiliser des indicateurs techniques de moyenne mobile plus avancés tels que la moyenne mobile pondérée linéaire pour remplacer la moyenne mobile simple afin d'améliorer la capacité de suivi et de prédiction des indicateurs.

  2. Ajouter plus d'indicateurs auxiliaires tels que des indicateurs de volume et de volatilité pour le filtrage conjoint afin de réduire les signaux non valides.

  3. Optimiser les paramètres de moyenne mobile rapide et lente pour améliorer l'adaptabilité des paramètres.

  4. Une fois que la stratégie est entrée sur le marché, les points de stop-loss et les points de stop-loss peuvent être conçus pour contrôler une seule perte.

  5. Les nouvelles technologies telles que l'apprentissage en profondeur peuvent être utilisées pour identifier des modèles de prix plus complexes afin d'aider les moyennes mobiles croisées à prendre des décisions d'achat et de vente, afin d'obtenir de meilleurs résultats.

Résumé

En général, cette stratégie est relativement classique et simple. Elle détermine les tendances des prix basées sur des indicateurs de moyenne mobile double pour découvrir les opportunités lorsque les prix passent de la consolidation à la tendance. Les avantages sont la logique claire et la simplicité, adaptée au suivi des marchés en tendance. Mais il y a aussi des défauts comme le décalage du signal qui doivent être améliorés grâce à l'ajustement et à l'optimisation des paramètres pour augmenter la stabilité et l'efficacité de la stratégie. Dans l'ensemble, en tant que stratégie de base, cela est tout à fait approprié, mais nécessite une optimisation continue pour s'adapter à des environnements de marché plus complexes.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)

//OBV
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 20, minval = 1, maxval = 100, group="Smoothing")
Limit = input.float(title = "Limit", defval = 1, minval = 0.1, maxval = 10, group="Smoothing")
smoothingLine_ma = ma(obv,smoothingLength, typeMA)
obv_diff = (obv-smoothingLine_ma)*100/obv

//PVT
var cumVolp = 0.
cumVolp += nz(volume)
if barstate.islast and cumVolp == 0
    runtime.error("No volume is provided by the data vendor.")
srcp = close
vt = ta.cum(ta.change(srcp)/srcp[1]*volume)
smoothingLine_map = ma(vt,smoothingLength, typeMA)
pvt_diff = (vt-smoothingLine_map)*100/vt

// plot(obv_diff+close+100 ,title="OBV_DIFF", color = color.rgb(255, 118, 54))
// plot(pvt_diff+close+80 ,title="PVT_DIFF", color = color.rgb(223, 61, 255))

indicator = (pvt_diff+obv_diff)/2
goLongCondition1 = ta.crossover(indicator,Limit)
timePeriod = time >= timestamp(syminfo.timezone, 2023,1, 1, 0, 0)  // Backtesting Time
notInTrade = strategy.position_size <= 0
if goLongCondition1 and timePeriod and notInTrade
    stopLoss = low * 0.99 // -2%
    takeProfit = high * 1.05 // +5%
    strategy.entry('long', strategy.long )
    strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)






// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 100)
// goLongCondition1 = ta.crossover(fastEMA, slowEMA)
// timePeriod = time >= timestamp(syminfo.timezone, 2018, 12, 15, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low * 0.97
//     takeProfit = high * 1.12
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// plot(fastEMA, color=color.new(color.blue, 0))
// plot(slowEMA, color=color.new(color.yellow, 0))

Plus de