Stratégie quantitative de suivi de la dynamique croisée à double moyenne mobile

MA SMA EMA SMMA RMA WMA VWMA
Date de création: 2024-11-27 15:06:57 Dernière modification: 2024-11-27 15:06:57
Copier: 1 Nombre de clics: 478
1
Suivre
1617
Abonnés

Stratégie quantitative de suivi de la dynamique croisée à double moyenne mobile

Aperçu

Il s’agit d’une stratégie de trading quantitative basée sur des signaux de croisement de deux lignes homogènes. La stratégie utilise deux moyennes mobiles, l’une comme ligne de signal principale et l’autre comme ligne de signal lisse.

Principe de stratégie

La stratégie utilise deux niveaux de calcul des moyennes mobiles: d’abord, une moyenne mobile de base est calculée (la période par défaut est de 9) et ensuite, une deuxième ligne d’équilibrage est effectuée (la période par défaut est de 5). La stratégie offre un choix de plusieurs méthodes de calcul des moyennes, y compris les moyennes mobiles simples (SMA), les moyennes mobiles indicielles (EMA), les moyennes mobiles lisse (SMMA), les moyennes mobiles pondérées (WMA) et les moyennes mobiles pondérées (VWMA).

Avantages stratégiques

  1. Les mécanismes de génération de signaux sont clairs, simples, faciles à comprendre et à mettre en œuvre.
  2. La production de faux signaux est réduite efficacement par un second traitement de lissage.
  3. Offre une variété de méthodes de calcul de la moyenne, avec une flexibilité adaptée aux caractéristiques du marché
  4. La configuration des paramètres est flexible et peut être optimisée en fonction des différentes cycles de marché
  5. La structure du code est claire, facile à entretenir et à étendre
  6. Une bonne capacité de suivi des tendances

Risque stratégique

  1. Des signaux de trading fréquents peuvent être générés dans un marché volatil, augmentant les coûts de transaction
  2. Il y a un certain retard, et il est possible que nous ayons raté le point de départ.
  3. Un retrait plus important est possible dans un contexte de reprise rapide.
  4. Une stratégie d’indicateurs techniques uniques et un manque de jugement sur le marché
  5. Une optimisation excessive des paramètres peut entraîner un risque de suradaptation

Orientation de l’optimisation de la stratégie

  1. Introduction de mécanismes de jugement des conditions du marché, utilisant différentes configurations de paramètres dans différents états du marché
  2. Ajout d’un mécanisme d’arrêt des pertes pour contrôler les risques
  3. Augmentation des filtres de volume pour éviter une transaction dans un environnement à faible liquidité
  4. Introduction d’autres indicateurs techniques comme signaux de confirmation auxiliaires
  5. Développer des mécanismes d’adaptation des paramètres en fonction de la dynamique de l’évolution du marché
  6. Ajout d’un module de gestion de position pour un contrôle de position plus flexible

Résumer

Il s’agit d’une version améliorée de la stratégie classique de suivi des tendances, qui offre une stabilité accrue tout en conservant la simplicité de la stratégie grâce à une conception à deux couches de moyennes mobiles. La stratégie a une bonne extensibilité et flexibilité, et peut s’adapter à différents environnements de marché grâce à l’optimisation des paramètres et à l’extension des fonctionnalités.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)

// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

// Calculate the Moving Average
out = ta.sma(src, len)

// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)

// Function to choose the type of moving average
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)

// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")

// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)

// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)

// Strategy Logic
if (ta.crossover(close, smoothingLine))
    strategy.entry("Buy", strategy.long)

if (ta.crossunder(close, smoothingLine))
    strategy.entry("Sell", strategy.short)