La stratégie EintSimple Pullback est une stratégie de réversion moyenne basée sur un double croisement des moyennes mobiles. Elle utilise d'abord une ligne moyenne mobile à long terme et une ligne moyenne mobile à court terme. Lorsque la ligne moyenne mobile à court terme traverse la ligne moyenne mobile à long terme depuis le bas, un signal d'achat est généré.
Après être entré sur le marché, si le prix tombe à nouveau en dessous de la ligne moyenne mobile à court terme, il déclenchera un signal de sortie.
La stratégie repose principalement sur la croix d'or des moyennes mobiles doubles pour déterminer le moment de l'entrée.
Une fois les conditions ci-dessus remplies, cette stratégie prendra une position longue complète.
Le jugement du signal de sortie est basé sur deux conditions. L'une est que le prix tombe à nouveau en dessous de la moyenne mobile à court terme. L'autre est que le retracement du point le plus élevé atteint le pourcentage de stop loss défini. Les conditions spécifiques de sortie sont les suivantes:
Lorsque l'une ou l'autre des conditions de sortie est remplie, cette stratégie clôt toutes les positions longues.
L'utilisation d'un double croisement des moyennes mobiles combiné à des prix de clôture solides pour juger peut filtrer efficacement les fausses ruptures.
L'adoption de l'entrée de recul peut intervenir après que le prix forme des points d'inflexion à court terme.
Avec le paramètre stop loss, il peut limiter le tirage maximum.
Les stratégies de croisement des moyennes mobiles doubles ont tendance à produire des signaux commerciaux fréquents et peuvent poursuivre les pics et tuer les fonds.
Les paramètres des moyennes mobiles ne sont pas réglés correctement et peuvent entraîner des courbes trop lisses ou trop sensibles.
Les paramètres d'arrêt des pertes trop lâches entraîneront des pertes accrues.
Testez différentes combinaisons de longueur de moyennes mobiles à long terme et à court terme pour trouver les paramètres optimaux.
Comparez les effets de l'utilisation du prix de clôture et du prix typique pour déterminer les croisements de la moyenne mobile.
Testez l'ajout de filtres tels que des indicateurs de volume ou de volatilité.
Le backtest optimise le pourcentage de stop loss pour trouver le meilleur réglage.
La stratégie EintSimple Pullback est une stratégie simple et pratique de pullback de moyenne mobile double. Elle utilise efficacement la fonctionnalité directionnelle des moyennes mobiles tout en combinant des prix de clôture solides pour filtrer les faux signaux. Bien que cette stratégie soit sujette à des transactions fréquentes et à la poursuite de sommets et à la destruction de fonds, elle peut être encore améliorée grâce à l'optimisation des paramètres et à l'ajout de filtres.
/*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)