Stratégie de négociation quantitative basée sur les moyennes mobiles et les bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2024-04-26 11:45:05 Je vous en prie.
Les étiquettes:SMALa WMALe taux d'intérêt

img

Résumé

Cette stratégie utilise principalement des moyennes mobiles et des bandes de Bollinger pour capturer les tendances et la volatilité du marché. Elle utilise trois types différents de moyennes mobiles: moyenne mobile simple (SMA), moyenne mobile pondérée (WMA) et moyenne mobile exponentielle (EMA). En même temps, elle utilise des bandes de Bollinger pour définir les canaux de prix, les bandes supérieures et inférieures servant de signaux pour l'ouverture et la fermeture des positions. Lorsque le prix franchit la bande de Bollinger supérieure, il ouvre une position courte; lorsqu'il franchit la bande inférieure, il ouvre une position longue.

Principes de stratégie

  1. Calculer trois moyennes mobiles avec des périodes différentes: SMA lente, EMA rapide et WMA moyenne, reflétant respectivement les tendances à long terme, à court terme et à moyen terme du marché.
  2. Calculez deux ensembles de bandes de Bollinger basés sur l'écart type des prix: les bandes de Bollinger d'entrée (avec une distance plus étroite entre les bandes supérieures et inférieures) et les bandes de Bollinger de stop-loss (avec une distance plus large).
  3. Lorsque l'EMA rapide franchit le niveau supérieur de la bande de Bollinger, ouvrez une position courte; lorsque l'EMA rapide franchit le niveau inférieur de la bande de Bollinger, ouvrez une position longue.
  4. Une fois une position ouverte, si le prix dépasse encore la bande supérieure de stop-loss de Bollinger, fermez toutes les positions longues; si le prix dépasse encore la bande inférieure de stop-loss de Bollinger, fermez toutes les positions courtes.
  5. Le processus ci-dessus est répété en continu, ce qui permet à la stratégie d'ajuster de manière flexible les positions en fonction des tendances du marché et d'arrêter les pertes en temps opportun, afin d'obtenir des rendements solides.

Les avantages de la stratégie

  1. Il considère trois moyennes mobiles de vitesses différentes, qui reflètent de manière globale les tendances du marché à différents niveaux.
  2. Il introduit des bandes de Bollinger comme conditions d'ouverture et de clôture des positions, qui peuvent être ajustées dynamiquement en fonction de la volatilité du marché, en s'adaptant de manière flexible aux conditions du marché.
  3. Il définit des bandes de Bollinger à stop-loss pour contrôler les retraits et ferme de manière décisive les positions lorsque le marché fluctue de manière spectaculaire, évitant ainsi des pertes amplifiées.
  4. La logique est claire et les règles sont simples, faciles à mettre en œuvre et à optimiser.
  5. Il a un large éventail d'applications et peut être efficace pour différents marchés et périodes.

Risques stratégiques

  1. Dans un marché latéral, l'ouverture et la fermeture fréquentes de positions peuvent entraîner des coûts de transaction importants, ce qui réduit les bénéfices.
  2. Dans la phase initiale d'un renversement de tendance, la stratégie peut encore se négocier dans le sens de la tendance initiale, entraînant certaines pertes.
  3. Pour les conditions de marché extrêmes, telles que les écarts de prix rapides, les bandes de Bollinger à stop-loss peuvent ne pas contrôler efficacement les risques.
  4. Une mauvaise sélection de paramètres (comme les périodes de moyennes mobiles, les largeurs de bandes de Bollinger, etc.) peut rendre la stratégie invalide.
  5. Si le marché continue de fluctuer, il est possible que la stratégie ne soit pas en mesure de saisir des opportunités de tendance importantes pendant une période prolongée.

Directions d'optimisation de la stratégie

  1. Augmenter de manière appropriée les paramètres des périodes moyennes mobiles et de la largeur des bandes de Bollinger afin de réduire la fréquence et les coûts des transactions sur un marché latéral.
  2. Introduire plus d'indicateurs techniques ou d'indicateurs de sentiment du marché comme filtres pour améliorer la précision des signaux d'entrée et éviter de perdre des transactions qui peuvent survenir au début d'une tendance.
  3. Mettre en place des règles spéciales pour les conditions de marché extrêmes, telles que la suspension de nouvelles positions lorsque des lacunes se produisent, afin de contrôler les risques.
  4. Optimiser les paramètres pour trouver la combinaison la plus adaptée au marché actuel, renforçant ainsi la robustesse de la stratégie.
  5. Ajouter des règles de gestion des positions et de gestion des capitaux, telles que l'ajustement des positions en fonction de la force de la tendance ou de la rentabilité, la définition de lignes globales de stop-loss, etc., pour contrôler davantage les risques de la stratégie.

Résumé

Le Marina Parfenova School Project Bot est une stratégie de trading quantitative basée sur les moyennes mobiles et les bandes de Bollinger. Il tente de tirer profit en capturant les tendances du marché tout en contrôlant les retraits via les lignes de stop-loss de la bande de Bollinger. La logique de la stratégie est simple et directe, avec un large éventail d'applications, et les paramètres peuvent être ajustés de manière flexible en fonction des caractéristiques du marché.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)

sma(price, n) =>
    result = 0.0
    for i = 0 to n - 1
        result := result + price [i] / n    
    result

wma(price, n) =>
    result = 0.0
    sum_weight = 0.0
    weight = 0.0
    for i = 0 to n - 1
        weight := n - 1
        result := result + price [i]*weight
        sum_weight := sum_weight + weight
    result/sum_weight

ema(price, n) =>
    result = 0.0
    alpha = 2/(n + 1)
    prevResult = price 
    if (na(result[1]) == false)
        prevResult := result[1]
    result := alpha * price + (1 - alpha) * prevResult

/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)

// ----- Линии индикаторов -----

// Медленная скользящая 
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)

// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)

bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)

// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)

// ----- Сигналы для запуска стратегии -----

// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
    strategy.entry("short", strategy.short)

// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
    strategy.entry("long", strategy.long)

// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера 
if (high >= close_short_line)
    strategy.close("long")

// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
    strategy.close("short")

Relationnée

Plus de