Stratégie de trading quantitatif à grille de moyenne mobile adaptative

SMA MA GRID ATR volatility MEAN REVERSION
Date de création: 2025-07-02 14:08:13 Dernière modification: 2025-07-02 14:08:13
Copier: 0 Nombre de clics: 584
2
Suivre
319
Abonnés

Stratégie de trading quantitatif à grille de moyenne mobile adaptative Stratégie de trading quantitatif à grille de moyenne mobile adaptative

Aperçu

Une stratégie de trading quantifiée à grille auto-adaptative est une stratégie de trading quantifiée basée sur la notion de grille et de grille. La stratégie consiste à calculer une moyenne mobile simple (SMA) du prix comme ligne centrale de la tendance du marché, puis à placer une grille proportionnelle sous la ligne centrale.

Principe de stratégie

Le principe central de la stratégie de trading quantifié en grille linéaire auto-adaptative est basé sur la propriété de la régression de la valeur moyenne des prix du marché. La stratégie est réalisée par les étapes suivantes:

  1. Le code utilise une moyenne mobile de 300 heures, une période suffisamment longue pour filtrer les fluctuations à court terme.
  2. Sur la base d’une moyenne mobile, un taux de variation ascendante et descendante (de 3% dans le cas présent) est défini pour déterminer les limites supérieures et inférieures des transactions de la grille.
  3. Selon le nombre de lignes de grille défini par l’utilisateur (maximum 15 lignes), les lignes de grille sont réparties uniformément entre les limites supérieure et inférieure.
  4. L’utilisation d’un tableau Boolean pour enregistrer les positions de chaque grille permet d’assurer une exécution précise des transactions.
  5. Logique de la transaction:
    • Lorsque le prix est inférieur à une ligne de la grille et que la position n’est pas détenue, acheter à cette position de la grille.
    • Lorsque le prix est supérieur à une ligne de grille et que la position la plus basse de la grille suivante est déjà détenue, la position la plus basse de la grille est levée.

L’essence de la stratégie est de capturer les fluctuations de prix à haute fréquence dans une certaine plage, pour réaliser un “achat bas et vente haute”. La stratégie permet de détenir plusieurs positions simultanément (jusqu’à 15), chacune correspondant à une ligne de grille différente. Cette conception permet à la stratégie de tirer le meilleur parti des fluctuations de prix.

Avantages stratégiques

Les stratégies de trading quantifié à grille linéaire adaptative présentent les avantages notables suivants:

  1. Une grande capacité d’adaptationLa stratégie consiste à ajuster automatiquement la position de la grille en fonction des moyennes mobiles pour s’adapter aux différents environnements de marché et aux variations des niveaux de prix.
  2. Dispersion du risqueLes investisseurs peuvent ainsi diversifier leurs investissements et réduire les risques liés à une seule transaction.
  3. Des opportunités de profit fréquentesLes stratégies peuvent souvent saisir les opportunités de profit qui résultent de fluctuations mineures dans un marché instable.
  4. Un signal clair pour entrer et sortir.Les signaux de négociation sont basés sur des conditions de grille de prix claires, réduisant les jugements subjectifs et améliorant la cohérence de l’exécution de la stratégie.
  5. Paramètres concis et faciles à réglerLa stratégie consiste à ajuster les trois paramètres principaux de la longueur de la moyenne mobile, de l’écart de grille et du nombre de grilles pour faciliter l’optimisation et la rétroanalyse.
  6. La logique est claire.: utilisation d’une structure d’arrayons pour stocker les prix de la grille et l’état des commandes, logique de code claire, facile à comprendre et à maintenir.
  7. Aide visuelleLa stratégie fournit une visualisation de la grille, permettant aux traders d’observer intuitivement les zones de négociation et les points de négociation potentiels.

Risque stratégique

Malgré la bonne conception de la stratégie, les risques potentiels sont les suivants:

  1. Risques liés à la tendance: Dans un marché en forte tendance, les prix peuvent continuer à évoluer dans une direction, ce qui entraîne une stratégie de position persistante et une absence d’opportunités de position, ce qui augmente l’occupation des fonds et peut entraîner des pertes importantes. La solution consiste à ajouter des conditions de filtrage de tendance ou à définir des limites de position maximales.
  2. Paramètre SensibilitéLes paramètres inappropriés peuvent entraîner une grille trop large (faible fréquence des transactions) ou trop étroite (augmentation des faux signaux). Il est recommandé de déterminer la combinaison optimale de paramètres par un retour complet.
  3. Risques liés à la gestion des fonds: la stratégie autorise jusqu’à 15 positions simultanées. Un contrôle déraisonnable du pourcentage de fonds par transaction peut entraîner une concentration excessive de fonds. Le pourcentage de fonds fixes par transaction ou la taille de la position à ajustement dynamique doivent être définis.
  4. Les points de glissement et les frais de traitement: Les stratégies de trading à haute fréquence sont plus sensibles aux points de glissement et aux frais de traitement, en particulier lorsque la grille est plus étroite. Il est recommandé de prendre en compte ces facteurs de coût dans le backtest et d’ajuster la largeur de la grille en conséquence.
  5. Risques liés à la liquidité: Dans un marché à faible liquidité ou en période de forte volatilité, il peut être difficile d’exécuter des transactions selon le prix idéal, ce qui affecte la performance de la stratégie. Choisissez des variétés de transactions suffisamment liquides et envisagez de mettre en place une protection contre les glissements.

Orientation de l’optimisation de la stratégie

Sur la base de l’analyse du code, la stratégie peut être optimisée dans les directions suivantes:

  1. Ajouter un filtre de tendance: en combinaison avec d’autres indicateurs techniques (comme le MACD, le RSI ou l’indicateur directionnel DMI) pour juger de la tendance du marché, suspendre ou ajuster la stratégie de négociation de la grille dans un marché à tendance évidente pour éviter les pertes causées par la négociation de contre-courant.
  2. Largeur de la grille dynamique: Adaptez dynamiquement le taux d’écart de la grille en fonction de la volatilité du marché (comme l’indicateur ATR), agrandissez l’espace de la grille lorsque la volatilité augmente, réduisez l’espace de la grille lorsque la volatilité diminue, pour mieux s’adapter aux différentes conditions du marché.
  3. Présentation d’un mécanisme de stop loss: définir des conditions de stop-loss pour chaque position de la grille, protéger la sécurité des fonds en cas de fluctuation anormale du marché. Des stop-loss dynamiques ou des stop-loss à taux fixe basés sur l’ATR peuvent être envisagés.
  4. Optimisation de la gestion des fonds: réaliser une gestion dynamique des positions, en ajustant dynamiquement le pourcentage de fonds pour chaque transaction en fonction des fonds du compte, de la volatilité du marché et de la situation des positions déjà détenues, améliorer l’efficacité de l’utilisation des fonds et la capacité de contrôle des risques.
  5. Ajouter un filtrage de temps: analyser les caractéristiques du marché à différentes périodes, activer les stratégies dans les périodes appropriées pour le trading sur la grille, réduire la fréquence des transactions ou suspendre les transactions dans les périodes inappropriées.
  6. Confirmation de plusieurs périodesLes transactions sont confirmées à des périodes plus longues et plus courtes, ce qui réduit les faux signaux et les transactions invalides.
  7. Optimiser l’efficacité du code: La partie de visualisation des lignes de grille dans le code actuel utilise des phrases de plot répétitives, qui peuvent être utilisées pour optimiser la structure de la boucle, améliorer la concision et la maintenabilité du code.

Résumer

La stratégie de négociation quantifiée en grille auto-adaptative est un système de négociation en grille basé sur le principe de la rétrogradation de la valeur, qui capture les opportunités de négociation liées aux fluctuations de prix en plaçant la grille autour de la moyenne mobile. La stratégie est conçue de manière concise, avec peu de paramètres et facile à ajuster, particulièrement adaptée aux marchés en turbulence.

Cependant, la stratégie peut être exposée à des risques dans des marchés à forte tendance, nécessitant l’ajout de filtres de tendance et de mécanismes de stop-loss pour l’optimisation. En outre, des orientations d’optimisation telles que l’ajustement dynamique de la largeur de la grille, l’amélioration de la gestion des fonds et l’ajout d’une confirmation de plusieurs cycles de temps méritent également d’être explorées. Grâce à ces optimisations, la stratégie est susceptible d’obtenir une performance plus stable et plus excellente dans différents environnements de marché.

Pour les traders quantifiés expérimentés, cette stratégie fournit un bon cadre de base qui peut être personnalisé et optimisé davantage en fonction du style de négociation et des préférences de risque individuels, en tirant parti de l’avantage de la grille de négociation pour capturer les fluctuations du marché.

Code source de la stratégie
/*backtest
start: 2025-04-01 00:00:00
end: 2025-06-22 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Grid Trading Strategy', overlay=true, pyramiding=15)

// 输入参数设置
ma_length = input.int(300, '移动平均线长度', group='移动平均线条件', step=10)
std = input.float(0.03, title='网格上下偏差率', group='网格条件', step=0.01)
grid = input.int(15, maxval=15, title='网格线数量', group='网格条件')

// 计算移动平均线及网格边界
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)

// 创建网格价格数组
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
    array.push(grid_array, lower_bound + grid_width * i)

// 创建订单状态布尔数组(只初始化一次)
var order_array = array.new_bool(grid, false)

// 执行交易逻辑
for i = 0 to grid - 1 by 1
    // 买入逻辑:价格低于网格线且该位置未持仓
    if close < array.get(grid_array, i) and not array.get(order_array, i)
        buy_id = i
        array.set(order_array, buy_id, true)
        strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
    
    // 卖出逻辑:价格高于网格线且下一个网格位置持仓
    if close > array.get(grid_array, i) and i != 0
        if array.get(order_array, i - 1)
            sell_id = i - 1
            array.set(order_array, sell_id, false)
            strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))

// 可视化网格线
plot(grid > 0 ? array.get(grid_array, 0) : na, color=color.yellow, transp=10)
plot(grid > 1 ? array.get(grid_array, 1) : na, color=color.yellow, transp=10)
plot(grid > 2 ? array.get(grid_array, 2) : na, color=color.yellow, transp=10)
plot(grid > 3 ? array.get(grid_array, 3) : na, color=color.yellow, transp=10)
plot(grid > 4 ? array.get(grid_array, 4) : na, color=color.yellow, transp=10)
plot(grid > 5 ? array.get(grid_array, 5) : na, color=color.yellow, transp=10)
plot(grid > 6 ? array.get(grid_array, 6) : na, color=color.yellow, transp=10)
plot(grid > 7 ? array.get(grid_array, 7) : na, color=color.yellow, transp=10)
plot(grid > 8 ? array.get(grid_array, 8) : na, color=color.yellow, transp=10)
plot(grid > 9 ? array.get(grid_array, 9) : na, color=color.yellow, transp=10)
plot(grid > 10 ? array.get(grid_array, 10) : na, color=color.yellow, transp=10)
plot(grid > 11 ? array.get(grid_array, 11) : na, color=color.yellow, transp=10)
plot(grid > 12 ? array.get(grid_array, 12) : na, color=color.yellow, transp=10)
plot(grid > 13 ? array.get(grid_array, 13) : na, color=color.yellow, transp=10)
plot(grid > 14 ? array.get(grid_array, 14) : na, color=color.yellow, transp=10)