Stratégie de croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2023-12-08 15h23 et 33 min
Les étiquettes:

img

Cette stratégie adopte le croisement de la moyenne mobile de 20 jours et de la moyenne mobile de 60 jours pour générer des signaux de trading. Elle va long lorsque le prix dépasse la moyenne mobile de 20 jours et ferme la position lorsque le prix dépasse la moyenne mobile de 20 jours. De même, elle forme des signaux de trading lorsque le prix dépasse la moyenne mobile de 60 jours. Cette stratégie appartient à un système typique de suivi de tendance.

La logique de la stratégie

  1. Calculer la moyenne mobile simple de 20 jours et la moyenne mobile simple de 60 jours
  2. Passer long lorsque le prix de clôture dépasse la moyenne de 20 jours
  3. Positions fermées lorsque le prix de clôture tombe en dessous de 20 jours d'AM
  4. Passer long lorsque le prix de clôture dépasse l'AM de 60 jours
  5. Position fermée lorsque le prix de clôture dépasse le MA de 60 jours

Les règles ci-dessus définissent les signaux de trading et la logique de cette stratégie. Lorsque le prix traverse la ligne MA, cela montre qu'une nouvelle tendance émerge et que nous pouvons suivre la tendance pour aller long. Lorsque le prix tombe en dessous de la ligne MA, cela montre que la tendance se termine, nous fermons donc la position.

Les avantages

  1. L'adoption d'un double MA rend la stratégie plus stable. L'AM de 20 jours capte plus rapidement les opportunités à court terme tandis que l'AM de 60 jours filtre certains bruits du marché et bloque la tendance à moyen et long terme.
  2. Le backtest commence en 2018 et sélectionne le marché boursier de Taiwan, qui a un système de négociation plus développé que le marché des actions A de la Chine, reflétant mieux l'efficacité de la stratégie.
  3. Il définit un stop loss et une position de taille appropriés, contrôlant au maximum le risque.

Les risques

  1. La stratégie repose uniquement sur l'indicateur MA. Elle peut générer plus de fléchettes lorsqu'il n'y a pas de tendance évidente sur le marché.
  2. La stratégie n'optimise pas la taille et la position d'achat/vente, ne permettant pas de maximiser l'utilisation du capital.
  3. La stratégie réagit symétriquement aux hausses et aux baisses de prix, incapable de s'adapter aux différentes conditions du marché.

Solution au risque:

  1. Ajoutez d'autres indicateurs comme KDJ, MACD pour former une confirmation multiple, évitant les mauvais métiers.
  2. Optimiser la taille des positions et l'efficacité de l'utilisation du capital en fonction de la capitalisation boursière, de la volatilité, etc.
  3. Adopter des mouvements asymétriques basés sur les étapes du marché, réduire les transactions pendant le marché à fourchette et augmenter la taille de la position pendant une tendance évidente.

Directions d'optimisation

  1. Optimiser la quantité d'achat/vente. Ajuster dynamiquement la taille de la position en fonction du stop loss.
  2. Optimisez les paramètres MA. Trouvez de meilleurs paramètres par l'optimisation progressive et l'optimisation aléatoire.
  3. Ajouter une stratégie de stop-loss.
  4. Ajoutez la gestion de la taille des positions. Ajustez dynamiquement la taille des positions par transaction en fonction de la taille du capital, de la capitalisation boursière, etc.

Résumé

Il s'agit d'une stratégie de croisement de moyenne mobile double typique. L'idée principale est de suivre les tendances en établissant une position lorsque le prix franchit la ligne MA. La stratégie est simple et pratique à mettre en œuvre.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60 TW", overlay=true, margin_long=100, margin_short=100)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) and time >= start_time
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) and time >= start_time
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     

Plus de