Stratégie de rupture de la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-28 13:50:49 Je vous en prie.
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading de rupture basée sur des moyennes mobiles. Il calcule le prix moyen sur une certaine période comme la moyenne mobile. Lorsque le prix dépasse la moyenne mobile, des signaux de trading sont générés.

La logique de la stratégie

La stratégie est principalement basée sur l'indicateur de moyenne mobile. Elle utilise la fonction sma pour calculer le prix de clôture moyen sur une période pour obtenir la moyenne mobile. Lorsque le dernier prix de clôture dépasse la moyenne mobile vers le haut, un signal d'achat est généré. Lorsque le dernier prix de clôture dépasse la moyenne mobile vers le bas, un signal de vente est généré.

Plus précisément, il définit la source (prix de clôture récent) et la longueur de la moyenne mobile dans la stratégie pour obtenir la séquence de données de moyenne mobile. Ensuite, il définit deux conditions: créer un ordre long lorsque le prix dépasse la moyenne mobile; créer un ordre court lorsque le prix dépasse la moyenne mobile. Après avoir créé les ordres, il définit également la prise de profit et le stop loss: il ferme une partie de la position lorsque l'ordre atteint un taux de profit fixé et ferme toute la position lorsque l'ordre atteint le prix prédéfini de prise de profit ou de stop loss.

Analyse des avantages

Il s'agit d'une stratégie simple et pratique, qui présente les avantages suivants:

  1. La logique est claire et facile à comprendre et les paramètres sont ajustés.
  2. La moyenne mobile est un indicateur technique couramment utilisé et fiable qui permet de filtrer le bruit du marché et d'identifier les tendances.
  3. Le fait de fixer la prise de profit et l'arrêt de perte en même temps peut garantir certains bénéfices et contrôler les risques.
  4. Il ne peut fonctionner qu'avec des paramètres simples, adaptés au niveau d'entrée quant.

Analyse des risques

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

  1. Les moyennes mobiles ont tendance à être en retard et peuvent manquer des revers à court terme.
  2. Elle ne tient pas compte de l'environnement global du marché et est sujette à être piégée.
  3. Aucune optimisation des paramètres ne peut affecter les performances de la stratégie.
  4. Il peut y avoir de faux signaux car aucun autre indicateur n'est utilisé pour la filtration.

Pour contrôler ces risques, nous pouvons optimiser en combinant d'autres indicateurs pour la filtration, introduire un jugement de tendance de marché à court terme ou utiliser des méthodes d'apprentissage automatique pour trouver les combinaisons optimales de paramètres.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Ajouter d'autres indicateurs techniques pour le jugement pour construire un système de trading et améliorer le taux de gain.

  2. Ajouter des mécanismes de stop-loss. Utilisez un stop-loss de trailing ou un stop-loss basé sur le temps pour verrouiller les profits et éviter des pertes plus importantes.

  3. Optimisation des paramètres. Modifier le paramètre de la moyenne mobile pour trouver la meilleure combinaison. Différents types de moyennes mobiles peuvent également être testés.

  4. Utilisez des algorithmes comme les forêts aléatoires et LSTM combinés à plusieurs facteurs pour déterminer la direction de la tendance.

  5. Optimiser la logique d'entrée et de sortie. Définir des conditions de filtrage de tendance pour éviter les transactions contre la tendance à la fin.

Résumé

Dans l'ensemble, cette stratégie de rupture de moyenne mobile est très appropriée comme stratégie de trading quantitatif débutante. Elle a une logique simple, facile à comprendre et à utiliser, avec quelques effets pratiques. En même temps, elle laisse beaucoup de place pour des tests et une optimisation supplémentaires. Nous pouvons introduire plus d'indicateurs et de modèles techniques sur cette base pour développer de meilleures stratégies quantitatives.


/*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)


Plus de