Stratégie de trading quantitative à moyenne glissante et à bandes de Bollinger

SMA WMA EMA
Date de création: 2024-04-26 11:45:05 Dernière modification: 2024-04-26 11:45:05
Copier: 3 Nombre de clics: 317
1
Suivre
1219
Abonnés

Stratégie de trading quantitative à moyenne glissante et à bandes de Bollinger

Aperçu

La stratégie utilise principalement les moyennes mobiles et les courbes de Brin pour capturer les tendances et les fluctuations du marché. La stratégie utilise trois types de moyennes mobiles différentes: les moyennes mobiles simples (SMA), les moyennes mobiles pondérées (WMA) et les moyennes mobiles indicielles (EMA). La stratégie utilise également les courbes de Brin pour définir des canaux de prix, les trajectoires ascendantes et descendantes respectivement comme signaux de paix pour les positions d’ouverture.

Principe de stratégie

  1. Les moyennes mobiles sont calculées sur trois périodes différentes: SMA lent, EMA rapide et WMA rapide, qui reflètent respectivement les tendances à long terme, à court terme et à moyen terme du marché.
  2. Les deux groupes de courbes de blanchiment sont calculés en fonction de l’écart de prix standard: les courbes de blanchiment d’ouverture (avec une distance de montée et de descente plus proche) et les courbes de blanchiment de fermeture (avec une distance de montée et de descente plus large). Les courbes de blanchiment d’ouverture sont utilisées pour l’ouverture des positions et les courbes de fermeture de fermeture sont utilisées pour la fermeture des positions.
  3. Lorsque la courbe de Brin s’ouvre au-dessus de l’EMA rapide, une position de tête est ouverte; lorsque la courbe de Brin s’ouvre au-dessous de l’EMA rapide, une position de tête est ouverte. Cela signifie que le prix s’écarte davantage de la moyenne et qu’une tendance peut se produire.
  4. Une fois la position ouverte, si le prix continue à monter en traversant la courbe de Bollinger, tous les positions à plusieurs têtes sont effacées. Si le prix continue à descendre en traversant la courbe de Bollinger, toutes les positions à vide sont effacées.
  5. Ce processus est cyclique, ce qui permet à la stratégie d’ajuster ses positions avec souplesse en fonction des tendances du marché et d’arrêter les pertes en temps opportun afin de réaliser des gains solides.

Avantages stratégiques

  1. Les moyennes mobiles à trois vitesses différentes sont prises en compte pour capturer les tendances du marché à tous les niveaux.
  2. L’introduction de la zone de Brin comme condition d’ouverture d’une position de clôture peut être ajustée en fonction de la dynamique de la volatilité du marché et de la flexibilité de la réponse au marché.
  3. Il faut mettre en place des bandes de stop-loss, des retraits contrôlés et des positions à zéro en cas de fortes fluctuations du marché pour éviter l’expansion des pertes.
  4. La logique est claire, les règles sont simples, faciles à mettre en œuvre et à optimiser.
  5. Il est très large et peut être utilisé sur de nombreux marchés et sur de nombreuses périodes.

Risque stratégique

  1. Dans un marché en crise, la fréquence des positions creuses peut entraîner des frais de transaction élevés, ce qui peut éroder les bénéfices.
  2. Au début d’un revirement de tendance, la stratégie peut continuer à négocier dans la direction de la tendance initiale, ce qui entraîne une certaine perte.
  3. Pour des situations extrêmes, comme une hausse rapide des prix, les pertes de la ceinture de Brin peuvent ne pas bien contrôler le risque.
  4. Une mauvaise sélection de paramètres (comme la période de la moyenne mobile, la bande passante de Brin, etc.) peut faire échouer la stratégie.
  5. Si le marché continue à être volatile, la stratégie risque de ne pas saisir les opportunités de tendance évidentes pendant une longue période.

Orientation de l’optimisation de la stratégie

  1. Augmentation appropriée de la périodicité des moyennes mobiles et des paramètres de la bande passante de Brin afin de réduire la fréquence et le coût des transactions dans les marchés instables.
  2. L’introduction de plus d’indicateurs techniques ou d’indicateurs de l’humeur du marché comme filtres pour améliorer la précision des signaux d’ouverture de position et éviter les transactions perdantes qui peuvent survenir au début d’une tendance.
  3. Pour contrôler les risques, il est nécessaire de définir des règles spéciales pour les situations extrêmes, telles que la suspension de l’ouverture de nouvelles positions lors de sauts en l’air.
  4. Optimiser les paramètres pour trouver la combinaison de paramètres la plus adaptée au marché actuel et améliorer la stabilité de la stratégie.
  5. Augmentation des règles de gestion des positions et de gestion des fonds, telles que l’ajustement des positions en fonction de la force de la tendance ou de la rentabilité, la mise en place d’une ligne de stop-loss globale, etc., afin de contrôler davantage le risque stratégique.

Résumer

Le robot du projet de l’école Marina Parfenova est une stratégie de trading quantitatif basée sur les moyennes mobiles et les bandes de Brin. Elle tente de tirer profit de la capture des tendances du marché, tout en contrôlant le repli par les lignes de stop-loss des bandes de Brin. La logique de la stratégie est simple et claire, son champ d’application est large et les paramètres peuvent être ajustés de manière flexible en fonction des caractéristiques du marché.

Code source de la stratégie
/*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")