Fin de mois Dépassement de la stratégie de la moyenne mobile de 200 jours

Auteur:ChaoZhang est là., Date: 2023-12-08 16:02:08 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'éclatement des prix de la moyenne mobile de 200 jours à la fin du mois pour capturer la direction de tendance des cours des actions.

Principe de stratégie

  1. Utiliser la moyenne mobile simple de 200 jours dma200 comme indicateur pour juger de l'évolution des prix
  2. Au dernier jour de négociation de chaque mois, jugez si le prix de clôture est supérieur à dma200
  3. Si le prix de clôture dépasse le MA de 200 jours, établir une position longue complète à l'ouverture du jour de négociation suivant
  4. Si le prix de clôture dépasse le MA de 200 jours, effacer toutes les positions à l'ouverture du jour de négociation suivant
  5. Cela peut avoir pour effet de suivre la tendance, d'établir des positions lorsque les cours des actions entrent dans une tendance à la hausse et d'éviter les tendances à la baisse.

Analyse des avantages

  1. L'avantage de la stratégie est qu'elle est simple et efficace, facile à comprendre et à mettre en œuvre
  2. L'adoption de positions à la fin du mois peut réduire la fréquence des transactions et minimiser les coûts de négociation et les effets du glissement
  3. L'AM de 200 jours est un indicateur de jugement de tendance à moyen et long terme très couramment utilisé, efficace pour la plupart des stocks.
  4. La stratégie présente un recours relativement faible et une baisse maximale, avec des risques contrôlables

Analyse des risques

  1. L'AM de 200 jours peut ne pas être suffisamment sensible pour que certains stocks puissent détecter à temps les renversements de prix
  2. Il n'y a qu'un seul point de négociation par mois pour la prise de positions, ce qui peut entraîner un manque d'opportunités de hausse/baisse.
  3. La stratégie peut échouer à juger correctement lorsque l'évolution globale du marché est incertaine
  4. D'autres indicateurs devraient être combinés pour réduire ces risques

Directions d'optimisation

  1. Considérez l'augmentation des points de négociation au début ou au milieu du mois pour améliorer la fréquence de la stratégie
  2. Ajoutez des indicateurs tels que les bandes de Bollinger pour juger des fluctuations de prix et éviter les mauvaises transactions
  3. Évaluer les effets d'adaptation de différents paramètres d'AM sur différents stocks afin de trouver des combinaisons optimales de paramètres
  4. Mettre en place des mécanismes de dimensionnement dynamique des positions pour arrêter activement les pertes lorsque le tirage devient trop élevé

Résumé

La stratégie est relativement simple et pratique dans l'ensemble, capturant efficacement les tendances à moyen et à long terme des prix des actions grâce à la rupture de fin de mois de l'AM de 200 jours, avec un retrait et des risques relativement faibles.


/*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/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")

Plus de