Stratégie de stop suiveur de Momentum Bitcoin


Date de création: 2024-03-08 16:20:16 Dernière modification: 2024-03-08 16:20:16
Copier: 0 Nombre de clics: 747
1
Suivre
1617
Abonnés

Stratégie de stop suiveur de Momentum Bitcoin

Aperçu de la stratégie

La stratégie de stop-loss de suivi dynamique de Bitcoin est une stratégie de position longue basée sur la dynamique qui vise à capturer la tendance à la hausse de Bitcoin tout en évitant le risque de baisse en ajustant dynamiquement le stop-loss. La stratégie utilise une technique simple et ingénieuse de stop-loss de suivi dynamique pour resserrer le stop-loss pour protéger les marges de profit pendant les périodes de forte volatilité baissière, tout en laissant libre cours au stop-loss pendant la dynamique persistante de la hausse.

Principe de stratégie

  1. Le prix actuel du bitcoin doit être supérieur à l’EMA du niveau supérieur (EMA de 20 semaines)
  2. Bitcoin ne peut pas être en état “ d’alerte “, c’est-à-dire le pic le plus récent de Bitcoin moins le prix le plus bas de la ligne K actuelle de plus de 1,5 fois l’ATR, ou le prix de clôture du jour inférieur à la 20 EMA du jour.
  3. Le stop-loss est réglé sur le pic le plus récent moins 1 ATR, moins 20% de l’ATR s’il est en état d’alerte (soit 0,2 ATR)
  4. Lorsque le prix se ferme en dessous du prix de stop loss, ouvrez un placement sur la ligne K suivante.

La stratégie utilise le graphique périodique et l’EMA à 20 semaines comme filtre de tendance, et n’intervient que lorsque le prix est supérieur à l’EMA à 20 semaines. L’ATR à 5 cycles est utilisé pour suivre la distance d’un arrêt dynamique, qui se ferme en état d’alerte. L’état d’alerte est défini par deux conditions: la distance entre le sommet de la vague récente et le plus bas prix actuel est supérieure à 1,5 fois l’ATR, ou le prix de clôture du jour est inférieur au 20EMA du jour.

Avantages stratégiques

  1. Simple et efficace: la logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, tout en captant efficacement les principales tendances haussières de Bitcoin.

  2. Stop-loss dynamique: une méthode de stop-loss plus équilibrée et plus robuste qui permet de contrôler les retraits tout en permettant aux bénéfices de courir.

  3. Filtrage des tendances: le filtrage des moyennes de niveau supérieur (EMA à 20 semaines) permet de jouer uniquement dans des tendances à la hausse bien définies, ce qui améliore considérablement le taux de victoires et de pertes de la stratégie.

  4. Gestion des positions: par défaut, les positions sont entières, ce qui permet de maximiser l’utilisation des fonds et d’améliorer l’efficacité de l’utilisation des fonds.

  5. Large portée: la logique de la stratégie peut être facilement transposée à d’autres normes et marchés, avec une bonne universalité.

Risque stratégique

  1. Applicabilité des paramètres: les paramètres de la stratégie sont définis en fonction des caractéristiques du marché Bitcoin. L’applicabilité à d’autres marchés est à vérifier et peut nécessiter une optimisation des paramètres pour différents standards.

  2. Identification des tendances: la stratégie repose principalement sur des indicateurs techniques de haut niveau tels que les EMA et ATR pour juger des tendances. La maîtrise de la situation n’est pas aussi complète que l’analyse fondamentale et est sujette à des erreurs lors des virages du marché.

  3. Risque d’arrêt: bien que les arrêts dynamiques puissent contrôler le risque dans une certaine mesure, il est possible de faire un retrait important dans des situations extrêmes (comme une chute ou une secousse rapide et profonde).

  4. Espace de profit: la stratégie se porte bien dans une tendance à la hausse unilatérale, mais est plus susceptible de se retrouver dans une situation de perte fréquente dans un marché en crise, et l’espace de profit global peut être limité.

  5. Performance du marché réel: la stratégie a bien fonctionné dans le test de retour, mais le marché réel est affecté par des facteurs tels que les points de glissement, les frais de traitement, etc. Il peut y avoir un certain écart par rapport aux gains théoriques, ce qui nécessite une évaluation prudente.

Direction d’optimisation

  1. Détermination des tendances: vous pouvez essayer d’introduire plus de moyennes avancées, d’indicateurs de volatilité et même de données de base pour améliorer la précision et la fiabilité de l’identification des tendances.

  2. Paramètres dynamiques: les paramètres de stop loss et d’ATR peuvent être optimisés davantage en introduisant des mécanismes d’ajustement dynamiques liés au prix ou à la volatilité pour s’adapter à différentes conditions du marché.

  3. Gestion de position: vous pouvez ajuster dynamiquement la taille de la position en fonction de la force de la tendance, de la volatilité, etc. Vous pouvez augmenter la position lorsque la tendance est forte, réduire la position lorsque la volatilité est élevée et augmenter le ratio de risque de rendement.

  4. Mécanisme de plus-value: introduction d’un mécanisme de prise de poids dans les marchés baissiers, élargissant le champ d’application de la stratégie et l’espace de gain potentiel. Cependant, il est nécessaire de redéfinir les règles d’entrée, de stop-loss et autres.

  5. Stratégie combinée: combinaison de la stratégie avec d’autres stratégies (comme l’inversion, la régression de la moyenne, etc.) pour compléter les avantages et améliorer la stabilité et la rentabilité de la stratégie.

Résumé

La stratégie de stop-loss de suivi de la dynamique du bitcoin est une stratégie de stop-loss simple et efficace qui utilise la moyenne de niveau supérieur et les indicateurs ATR pour capturer la forte tendance à la hausse du bitcoin et contrôler le risque à la baisse en ajustant dynamiquement la stop-loss. La stratégie est logiquement claire, facile à mettre en œuvre et à optimiser, et convient aux investisseurs de moyenne ligne qui recherchent des gains solides. La stratégie peut être utilisée comme un modèle de base, que l’investisseur peut améliorer en fonction de ses besoins et de son expérience, notamment en ce qui concerne le jugement des tendances, l’optimisation des paramètres, la gestion de la position, le mécanisme de la marge de manœuvre, etc., ou en combinaison avec d’autres stratégies dans le but d’obtenir un plus grand rapport de risque-rendement. Cependant, il convient de noter que la performance de la stratégie dans le monde réel peut être différente des résultats de la rétroaction, ce qui nécessite une évaluation et une maîtrise des risques soigneuses.

Code source de la stratégie
/*backtest
start: 2023-03-08 00:00:00
end: 2024-03-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/
// © ZenAndTheArtOfTrading
// ------------------------------------------------------------------------------------------------------
// System Concept: Capture as much Bitcoin upside volatility as possible while side-stepping downside volatility.
//  Entry Rule #1: Bitcoin must be trading above higher-timeframe EMA (Weekly 20 EMA)
//  Entry Rule #2: Bitcoin must not be in 'caution' condition
//      -> Caution: True if BTC's recent swing high minus its current low is > 1.5x ATR OR close < Daily EMA
//  Trailing Stop: Stop is trailed 1 ATR from recent swing high, OR 20% of ATR if in caution condition
// ------------------------------------------------------------------------------------------------------
// @version=5
strategy("Bitcoin Momentum Strategy", 
     overlay=true)

// Get user input
var const string    G_STRATEGY  = "Strategy Entry Settings"
var const string    G_EXIT      = "Strategy Exit Settings"
var const string    G_FILTER    = "Strategy Filters"
i_HigherTimeframe   = input.timeframe("W", "Higher Timeframe", group=G_STRATEGY, tooltip="Higher timeframe MA reference")
i_EmaLength         = input.int(20, "EMA Length", group=G_STRATEGY, tooltip="Moving average period length")
i_AtrLength         = input.int(5, "ATR Length", group=G_STRATEGY, tooltip="ATR period length")
i_TrailStopSource   = input.source(low, "Trail Stop Source", group=G_EXIT, tooltip="Lowest price source for trailing stop")
i_TrailStopLookback = input.int(7, "Trail Stop Lookback", group=G_EXIT, tooltip="How many bars to look back for trailing price source")
i_TrailStopMulti    = input.float(0.2, "Trailing Stop Ratchet Multiplier", group=G_EXIT, tooltip="When momentum is yellow (caution), shrink ATR distance for TS by this much")
i_StartTime         = input(timestamp("01 Jan 2000 13:30 +0000"), "Start Filter", group=G_FILTER, tooltip="Start date & time to begin searching for setups")
i_EndTime           = input(timestamp("1 Jan 2099 19:30 +0000"), "End Filter", group=G_FILTER, tooltip="End date & time to stop searching for setups")

// Define custom security function which does not repaint
RequestSecurity_NonRP(_market, _res, _exp) => request.security(_market, _res, _exp[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1]

// Define date filter check
DateFilter(int start, int end) => time >= start and time <= end

// Get indicator values
float   atrValue    = ta.atr(i_AtrLength)
float   emaValue    = ta.ema(close, i_EmaLength)
float   htfEmaValue = RequestSecurity_NonRP(syminfo.tickerid, i_HigherTimeframe, emaValue)
float   marketPrice = close

// Check for bullishness / bearish volatility caution
bool    isBullish   = marketPrice > htfEmaValue
bool    isCaution   = isBullish and (ta.highest(high, 7) - low > (atrValue * 1.5) or marketPrice < emaValue) 

// Set momentum color
color bgCol = color.red
if isBullish[1]
    bgCol := color.green
if isCaution[1]
    bgCol := color.orange

// Handle strategy entry, and reset trailing stop
var float trailStop = na
if isBullish and strategy.position_size == 0 and not isCaution
    strategy.entry(id="Buy", direction=strategy.long)
    trailStop := na

// Update trailing stop
float temp_trailStop = ta.highest(i_TrailStopSource, i_TrailStopLookback) - (isCaution[1] ? atrValue * i_TrailStopMulti : atrValue)
if strategy.position_size > 0
    if temp_trailStop > trailStop or na(trailStop)
        trailStop := temp_trailStop

// Handle strategy exit
if (close < trailStop or close < htfEmaValue) and barstate.isconfirmed
    strategy.close("Buy", comment="Sell")

// Draw trailing stop, HTF EMA and color-coded momentum indicator
plotshape(true, color=bgCol, style=shape.square, location=location.bottom, size=size.auto, title="Momentum Strength")
plot(htfEmaValue, color=close > htfEmaValue ? color.green : color.red, linewidth=2, title="HTF EMA")
plot(emaValue, color=close > emaValue ? color.green : color.red, linewidth=1, title="CTF EMA")
plot(strategy.position_size[1] > 0 ? trailStop : na, style=plot.style_linebr, color=color.red, title="Stop Loss")