Tendance suivant une stratégie basée sur la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-12-20 à 14h23h49
Les étiquettes:

img

Résumé

Cette stratégie utilise le modèle de sélection des actions de Mark Minervini et les indicateurs de moyenne mobile pour déterminer les tendances des prix pour l'entrée et le stop-loss automatisés. Elle juge principalement si les prix des actions sont en hausse et s'ils ont franchi les moyennes mobiles clés pour générer des signaux d'achat.

Principe de stratégie

La stratégie évalue principalement les conditions suivantes et génère un signal d'achat lorsqu'elles sont remplies en même temps:

  1. Le cours actuel des actions est supérieur à la fois aux lignes moyennes mobiles de 150 et 200 jours.
  2. La moyenne mobile de 150 jours est supérieure à la moyenne mobile de 200 jours.
  3. La moyenne mobile à 200 jours est en hausse depuis au moins un mois.
  4. La moyenne mobile de 50 jours est supérieure à la fois aux moyennes mobiles de 150 et 200 jours.
  5. Le cours actuel des actions est supérieur à la moyenne mobile de 50 jours.
  6. Le cours actuel des actions est au moins 25% au-dessus de son plus bas de 52 semaines.
  7. Le cours actuel des actions est à au moins 25% de son plus haut de 52 semaines.

Lorsque les conditions ci-dessus sont remplies, la stratégie juge que le prix de l'action est en hausse et génère un signal d'achat.

En outre, la stratégie définit également une ligne de stop-loss. Lorsque le prix de l'action baisse de 5% par rapport à son sommet ou augmente de 10%, il arrête la perte ou tire un profit.

Analyse des avantages

  1. Utilisez les idées de Mark Minervini pour améliorer la rentabilité.
  2. Utilisez plusieurs moyennes mobiles pour confirmer la tendance et éviter de manquer des points d'achat.
  3. Mettez en place un mécanisme de stop-loss pour éviter les pertes énormes.

Analyse des risques

  1. Les cours des actions peuvent s'ajuster à court terme, déclenchant un stop loss.
  2. Les moyennes mobiles ne peuvent pas déterminer pleinement les tendances, et de fausses ruptures peuvent survenir.
  3. Les ratios de stop loss et de take profit définis ne sont pas parfaits, ils peuvent prendre des profits ou augmenter les pertes prématurément.

Optimisation

  1. Test de combinaisons de moyennes mobiles avec différents paramètres.
  2. Ajouter d'autres indicateurs techniques pour déterminer le moment de l'entrée.
  3. Optimiser les paramètres de stop loss et de profit.

Résumé

La stratégie globale suit l'idée du trading de tendance, générant des signaux d'achat lorsque la tendance haussière des cours des actions est confirmée. Dans le même temps, un mécanisme de stop-loss est mis en place pour contrôler les risques. En optimisant divers paramètres détaillés, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées. Cependant, aucune stratégie ne peut éviter complètement les risques du marché, les investisseurs doivent donc la traiter avec prudence.


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

//@version=4
strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true)

ma50 = sma(close,50)
ma150 = sma(close,150)
ma200 = sma(close,200)
ma200_22 = ma200[22]

high_loopback = input(260, "High Lookback Length")
low_loopback = input(260, "Low Lookback Length")
highest_price = highest(high, high_loopback)
lowest_price = lowest(low, low_loopback)
above52lo = ((close/lowest_price)-1)*100
below52hi = (1-(close/highest_price))*100
ep = strategy.position_avg_price

trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
var label maLabel = na
if (trigger)
    yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
         yloc.abovebar :
         yloc.belowbar

    // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
    //      label.style_labeldown :
    //      label.style_labelup

buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
sell = close>ep*1.1 or close<ep*0.95

strategy.entry("TF", strategy.long, when = buy)
strategy.close("TF", when = sell)

Plus de