Recherche et optimisation d'une stratégie de trading quantitative à double croisement de tendance moyenne mobile

SMA MA CROSSOVER momentum
Date de création: 2025-02-20 11:10:22 Dernière modification: 2025-02-27 17:48:50
Copier: 0 Nombre de clics: 263
2
Suivre
319
Abonnés

Recherche et optimisation d’une stratégie de trading quantitative à double croisement de tendance moyenne mobile Recherche et optimisation d’une stratégie de trading quantitative à double croisement de tendance moyenne mobile

Aperçu

Cette stratégie est un système de suivi des tendances basé sur la croisée de deux lignes de symétrie. Elle capture les moments de transition des tendances du marché en comparant les moyennes mobiles à court terme et à long terme (respectivement 9 et 21 jours) par rapport à la position relative. La stratégie utilise la théorie classique de l’analyse technique, combinée à des méthodes modernes de négociation quantitative, pour réaliser un processus de décision de négociation entièrement automatisé.

Principe de stratégie

La logique centrale de la stratégie est basée sur des signaux croisés de deux moyennes mobiles de différentes périodes. Lorsque la moyenne courte (le 9e jour) monte et traverse la moyenne longue (le 21e jour), le système considère que la dynamique du marché est montée et déclenche un signal multiple.

Avantages stratégiques

  1. La logique est simple, claire, facile à comprendre et à maintenir.
  2. Il s’agit d’une plateforme de données basée uniquement sur les prix, sans besoin d’indicateurs compliqués.
  3. La fonctionnalité de suivi des tendances intégrée permet de capturer efficacement les tendances à moyen et long terme.
  4. Un système complet de statistiques sur les transactions pour une évaluation stratégique
  5. L’automatisation complète réduit l’impact émotionnel des interventions humaines

Risque stratégique

  1. Des faux signaux peuvent être fréquents dans les marchés en crise
  2. Les horaires d’entrée et de sortie sont légèrement retardés.
  3. Aucun mécanisme d’arrêt des pertes n’a été mis en place, ce qui pourrait entraîner des pertes plus importantes en cas de forte volatilité.
  4. Le manque d’analyse multidimensionnelle du marché
  5. Les paramètres sont fixes et difficiles à adapter aux différentes conditions du marché

Orientation de l’optimisation de la stratégie

  1. L’introduction d’un cycle d’adaptation linéaire pour améliorer l’adaptabilité des stratégies aux conditions du marché
  2. Augmentation des filtres de volatilité pour réduire les fausses alertes dans les marchés volatiles
  3. Conception d’un mécanisme de stop-loss dynamique pour contrôler le risque de baisse
  4. En combinaison avec d’autres indicateurs techniques, tels que le RSI ou le MACD, pour améliorer la fiabilité du signal
  5. Développement d’un module de reconnaissance de l’environnement du marché permettant un ajustement intelligent des paramètres

Résumer

Il s’agit d’une stratégie classique et pratique de suivi des tendances qui capte les changements de dynamique du marché par le croisement de deux lignes de symétrie. Bien qu’il existe un certain risque de retard et de faux signaux, sa simplicité et sa stabilité en font un outil important dans le domaine du trading quantitatif. La stabilité et la rentabilité de la stratégie devraient être encore améliorées grâce à la direction d’optimisation proposée.

Code source de la stratégie
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)

// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)

// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)

// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")

// Execute trades
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0

if (strategy.opentrades > 0)
    totalTrades := totalTrades + 1

if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
    if (strategy.netprofit > 0)
        totalWins := totalWins + 1
    else
        totalLosses := totalLosses + 1

// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
    label.delete(tradeStats)

tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)