Stratégie de trading Breakout basée sur les moyennes mobiles


Date de création: 2023-11-28 13:50:49 Dernière modification: 2023-11-28 13:50:49
Copier: 2 Nombre de clics: 697
1
Suivre
1617
Abonnés

Stratégie de trading Breakout basée sur les moyennes mobiles

Aperçu

Il s’agit d’une stratégie de négociation de rupture basée sur la moyenne mobile. Elle génère un signal de négociation lorsque le prix franchit la moyenne en calculant la moyenne des prix d’un certain cycle comme moyenne.

Principe de stratégie

Cette stratégie est basée sur l’indicateur de la moyenne mobile. Elle utilise la fonction sma pour calculer la moyenne des prix de clôture sur une période donnée, obtenant une moyenne mobile. Elle génère un signal d’achat lorsque le dernier prix de clôture franchit la moyenne mobile de bas en haut et un signal de vente lorsque la dernière clôture franchit la moyenne mobile de haut en bas.

Plus précisément, il définit dans la stratégie la source de calcul de la moyenne mobile (le prix de clôture le plus récent) et la longueur de la période, et obtient une séquence de données de la moyenne mobile. Ensuite, il définit deux conditions: créer un ordre d’achat lorsque le prix est au-dessus de la moyenne; créer un ordre de vente lorsque le prix est au-dessous de la moyenne.

Analyse des avantages

Il s’agit d’une stratégie de suivi de tendance simple et pratique qui présente les avantages suivants:

  1. Il est facile de comprendre et d’ajuster les paramètres.
  2. La moyenne mobile est un indicateur technique courant et fiable qui permet de filtrer le bruit du marché et d’identifier les tendances.
  3. Il est possible de bloquer une partie des bénéfices et de contrôler les risques.
  4. Il ne nécessite que des paramètres simples pour fonctionner et s’applique à l’entrée quantifiée.

Analyse des risques

Bien que cette stratégie présente de nombreux avantages, elle comporte aussi des risques:

  1. Les moyennes mobiles sont sujettes à des retards et risquent de manquer une reprise à court terme.
  2. Il est facile de se retrouver en prison sans tenir compte de l’environnement.
  3. Il n’y a pas d’optimisation des paramètres, les paramètres mal définis peuvent affecter la performance de la stratégie.
  4. Il n’y a pas de filtrage en combinaison avec d’autres indicateurs et il y a un certain taux d’erreur.

Pour maîtriser ces risques, nous pouvons optimiser le filtrage avec d’autres indicateurs, introduire des jugements de tendance à court terme à grande échelle ou utiliser des méthodes d’apprentissage automatique pour trouver la meilleure combinaison de paramètres.

Direction d’optimisation

Cette stratégie peut être optimisée principalement dans les domaines suivants:

  1. Ajouter d’autres indicateurs techniques de jugement, constituer un système de négociation, améliorer le taux de réussite de la stratégie. Par exemple, ajouter des indicateurs de jugement auxiliaires tels que MACD, KD.

  2. Adhésion à un mécanisme de stop loss. Utilisez un stop loss suivi ou un stop time pour bloquer les bénéfices et éviter l’expansion des pertes.

  3. Optimiser les paramètres. Modifier les paramètres périodiques des moyennes mobiles pour trouver la meilleure combinaison de paramètres. Tester différents types de moyennes mobiles.

  4. Augmentation du jugement de l’apprentissage automatique. L’utilisation d’algorithmes tels que forêts aléatoires, LSTM et autres pour déterminer la direction de la tendance en combinant plusieurs facteurs.

  5. Optimiser la logique d’entrée et de sortie. Définir les conditions de filtrage de la tendance et éviter les opérations inverses à la fin de la tendance. Considérer l’utilisation de la logique de liquidation par lots.

Résumer

Cette stratégie de percée de la ligne de parité mobile est généralement idéale comme stratégie d’entrée de gamme pour les transactions quantifiées. Son concept est simple, facile à comprendre et à utiliser, avec une certaine efficacité en temps réel. Il laisse également beaucoup de place pour les tests et l’optimisation ultérieurs.

Code source de la stratégie
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)