Stratégie de négociation de remise en arrière des moyennes mobiles sur plusieurs délais

Auteur:ChaoZhang est là., Date: le 29 février 2024 11:20:28
Les étiquettes:

img

Résumé

Cette stratégie adopte l'approche des moyennes mobiles sur plusieurs délais, en utilisant la moyenne mobile à long terme pour déterminer la direction de la tendance principale tandis que la moyenne mobile à court terme pour déterminer la direction de la tendance à court terme. Lorsque la tendance à long terme s'aligne sur la tendance à court terme, les positions sont prises en conséquence. Lorsque la moyenne mobile à court terme se rapproche de la moyenne mobile à long terme, cela indique une correction à court terme présentant des opportunités de trading dans la direction inverse.

La logique de la stratégie

La stratégie utilise la moyenne mobile simple de 200 jours (SMA) pour déterminer la direction de la tendance à long terme, et la SMA de 10 jours pour la direction de la tendance à court terme. Lorsque le prix se ferme au-dessus de la SMA de 200 jours et en dessous de la SMA de 10 jours, il signale une tendance à long terme à la hausse avec un recul à court terme, présentant une opportunité d'achat. Lorsque le prix se ferme en dessous de la SMA de 200 jours et au-dessus de la SMA de 10 jours, il signale une tendance à la baisse à long terme avec un rebond à court terme, présentant une opportunité de vente.

En particulier, lorsque les conditions suivantes sont remplies, une entrée longue est déclenchée: Close > 200-day SMA AND Close < 10-day SMA.

Après l'entrée, un mécanisme de stop loss de 10% est mis en œuvre. La position sera arrêtée si le retracement du prix d'entrée dépasse 10%. En outre, si l'option i_lowerClose est activée, elle attendra une fermeture inférieure avant de sortir, évitant une sensibilité excessive du stop loss.

Analyse des avantages

Cette stratégie combine des moyennes mobiles sur plusieurs délais, ce qui permet une forte probabilité de capturer la direction de la tendance à moyen et long terme. Elle fournit un bon moment d'entrée lorsque la SMA à court terme revient à la SMA à long terme.

Le risque impliqué dans cette stratégie est bien défini et plafonné. Un taux de stop loss de 10% limite la taille maximale de la perte.

Analyse des risques

Si la correction à court terme dure trop longtemps ou si l'amplitude de retrait est trop grande, le stop loss pourrait être déclenché, ce qui entraînerait une sortie forcée à des moments inopportuns.

Pour les actions présentant une forte volatilité et des périodes de correction prolongées, cette stratégie tend à atteindre un stop loss prématuré, ce qui entraîne une mauvaise performance.

Au cours de grandes corrections à l'échelle du marché, par exemple une crise financière, cette stratégie pourrait subir de grandes pertes.

Directions d'optimisation

Des systèmes de moyennes mobiles peuvent être introduits pour former un mécanisme de filtrage multiple. Par exemple, en ajoutant une SMA de 50 jours, les positions d'entrée ne sont considérées que lorsque le prix se situe entre la SMA de 50 jours et la SMA de 200 jours.

Un mécanisme de stop loss dynamique peut être mis en œuvre. Plus précisément, après l'entrée, le ratio de stop loss est ajusté en fonction de la volatilité observée au lieu d'un taux fixe de 10%.

D'autres indicateurs mesurant les conditions du marché peuvent également être incorporés. Par exemple, lorsque le MACD montre une divergence du marché, cette stratégie pourrait être temporairement désactivée pour éviter les pertes.

Conclusion

En conclusion, il s'agit d'une stratégie typique de moyenne mobile sur plusieurs délais. Elle capitalise sur la direction de la tendance à moyen et long terme indiquée par la moyenne mobile à long terme, tout en profitant des opportunités de rebond à court terme révélées par la moyenne mobile à court terme. Les facteurs de risque sont définis et bien plafonnés. D'autres améliorations telles que des filtres supplémentaires, un mécanisme de stop loss adaptatif et un mécanisme de chronométrage du marché pourraient améliorer sa stabilité.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © irfanp056
// @version=5

strategy("Simple Pullback Strategy", 
     overlay=true) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
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=false, 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.sma(close, i_ma1)
ma2 = ta.sma(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.orange)

Plus de