Stratégie d'entrée en retrait basée sur le croisement de la double moyenne mobile


Date de création: 2024-01-15 14:04:54 Dernière modification: 2024-01-15 14:04:54
Copier: 3 Nombre de clics: 520
1
Suivre
1617
Abonnés

Stratégie d’entrée en retrait basée sur le croisement de la double moyenne mobile

Résumé

La stratégie EintSimple Pullback est une stratégie d’entrée de rallye basée sur la croisée de deux moyennes mobiles. La stratégie utilise d’abord les moyennes mobiles à long terme et à court terme pour générer un signal d’achat lorsque la moyenne mobile à court terme franchit la moyenne mobile à long terme en dessous.

Après l’entrée, le BTC exprime un signal d’exit si le prix revient au-dessous de la moyenne mobile à court terme. De plus, la stratégie définit un stop de sortie, qui se retire de la position si le pourcentage de stop est atteint à partir du point de retrait le plus élevé.

Les principes de stratégie

Cette stratégie est principalement basée sur le croisement d’or des moyennes mobiles doubles pour déterminer le moment de l’entrée. Plus précisément, il faut satisfaire aux conditions suivantes pour ouvrir plus de positions:

  1. Le prix de clôture est supérieur à la moyenne mobile à long terme de ma1
  2. Les prix de clôture sont inférieurs à la moyenne mobile à court terme ma2
  3. Aucune position à ce jour

Si les conditions ci-dessus sont remplies, la stratégie sera pleinement opérationnelle.

Les signaux d’exit sont basés sur deux conditions, l’une est la rechute du prix au-dessous de la moyenne mobile à court terme, et l’autre est le pourcentage de stop loss atteint à partir du point de reprise le plus élevé. Les conditions d’exit spécifiques sont les suivantes:

  1. Le prix de clôture est supérieur à la moyenne mobile à court terme ma2
  2. Pourcentage de stop loss de la valeur de rétractation du point le plus élevé jusqu’à la valeur définie

La stratégie élimine tous les messages qui satisfont à l’une des conditions de retrait.

Analyse des avantages

  1. L’utilisation d’une double moyenne mobile croisée et associée à un jugement de prix de clôture réel permet de filtrer efficacement les fausses ruptures.

  2. L’entrée en bourse par retraite est une entrée qui se produit après que le cours de l’action a atteint une courte courbe.

  3. Il y a un réglage de stop-loss qui limite le maximum de retraits.

Analyse des risques

  1. Les stratégies de croisement de deux moyennes mobiles sont susceptibles de générer plusieurs signaux de négociation, qui peuvent suivre les hauts et les bas.

  2. Une mauvaise configuration des paramètres de la moyenne mobile peut rendre la courbe trop lisse ou trop sensible.

  3. Les réglages de stop-loss trop laxistes augmentent les pertes.

Optimisation de la direction

  1. Testez des combinaisons de paramètres de moyennes mobiles à long terme de différentes longueurs pour trouver le paramètre optimal.

  2. Test comparatif de l’efficacité de la croisée des moyennes mobiles en utilisant les prix de clôture et les prix typiques.

  3. Testez des filtres tels que le volume de transactions ou les indicateurs de volatilité.

  4. Optimiser la régulation de l’amplitude d’arrêt pour trouver le meilleur réglage

Résumé

La stratégie EintSimple Pullback est une stratégie de rétroaction de moyenne mobile simple et pratique. Elle utilise efficacement la fonction d’indication de la moyenne mobile, tout en combinant le jugement de prix de clôture avec des entités pour filtrer les faux signaux. Bien que la stratégie soit susceptible de générer des problèmes de négociation fréquente et de poursuite des hausses et des baisses, elle peut être améliorée par l’optimisation des paramètres et l’ajout de filtres.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100)// 100% of balance invested on each trade

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2           = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=true, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.fuchsia)