Système de suivi des tendances de rupture de la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-15 à 11h25
Les étiquettes:

img

Résumé

Il s'agit d'un système classique de suivi des tendances. Il utilise des croisements de moyennes mobiles pour déterminer la direction de la tendance et entre lorsque le prix sort des canaux de Donchian. Le paramètre du canal de Donchian est défini à 50 jours pour filtrer le bruit du marché à court terme. Les moyennes mobiles sont des moyennes mobiles exponentielles de 40 jours et 120 jours, qui peuvent mieux capturer les tendances à moyen et long terme. Le stop loss est défini à 4x ATR en dessous du prix pour contrôler efficacement les pertes sur les transactions individuelles.

La logique de la stratégie

La stratégie repose principalement sur les points suivants:

  1. Les moyennes mobiles exponentielles de 40 jours et 120 jours sont utilisées pour construire un indicateur de détermination de tendance. Lorsque la ligne rapide traverse au-dessus de la ligne lente depuis le bas, c'est un signal de croix dorée, indiquant une tendance haussière. Lorsque la ligne rapide traverse au-dessous de la ligne lente depuis le haut, c'est un signal de croix de mort, indiquant une tendance baissière.

  2. Le paramètre du canal de Donchian est réglé sur 50 jours pour filtrer le bruit du marché.

  3. Le stop loss est défini à 4x ATR en dessous du prix. ATR peut mesurer efficacement la volatilité et le risque du marché.

  4. Les moyennes mobiles exponentielles correspondent mieux aux tendances actuelles des prix, tandis que les moyennes mobiles simples sont trop lisses.

  5. La période de canal de 50 jours fonctionne bien avec les moyennes mobiles de 40 jours et de 120 jours pour filtrer efficacement les fausses ruptures.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. La combinaison de moyennes mobiles peut déterminer efficacement la direction de la tendance du marché.

  2. Le canal de Donchian filtre le bruit et évite de poursuivre les sommets et les fonds.

  3. Le paramètre de stop loss est raisonnable pour contrôler les pertes sur les transactions individuelles et éviter les sauts de compte.

  4. Les moyennes mobiles exponentielles s'adaptent mieux aux tendances de variation des prix, ce qui permet des périodes de détention plus longues qui correspondent à l'idée de négociation de tendance.

  5. Les paramètres de la moyenne mobile permettent de trouver un équilibre entre la sensibilité de la capture de tendance et la stabilité du filtre au bruit.

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Risque de longue période de détention: en tant que stratégie de suivi de tendance, des pertes importantes peuvent survenir lors de longue période de variations latérales ou d'inversions de tendance.

  2. Risque de fausse rupture: il peut y avoir un certain pourcentage de fausses ruptures lorsque le prix touche près des bandes de canaux, provoquant des transactions inutiles.

  3. Paramètre de définition du risque: les paramètres des moyennes mobiles et des canaux sont subjectifs.

  4. Risque d'arrêt de perte trop serré: le fait de régler l'arrêt de perte trop serré peut entraîner trop d'arrêt de perte, ce qui a une incidence sur la rentabilité.

Les solutions:

  1. Les périodes de détention doivent être déterminées avec prudence afin d'éviter les risques liés à de longues périodes de détention.
  2. Optimiser les paramètres pour rendre les signaux de rupture plus stables et fiables.
  3. Tester les données provenant de différents marchés et optimiser les combinaisons de paramètres.
  4. Détailler raisonnablement les arrêts pour éviter des arrêts trop fréquents.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez différentes combinaisons de moyennes mobiles pour trouver les paramètres optimaux.

  2. Optimiser la période et les paramètres des canaux pour rendre les signaux de rupture plus efficaces. Optimiser en fonction de la fréquence de fluctuation du marché.

  3. Optimiser la stratégie de stop loss. Adopter des stops de trailing pendant les périodes de tendance et des stops fixes après la fin des tendances.

  4. Ajouter des indicateurs de confirmation comme MACD, KD pour améliorer la précision du signal.

  5. Mettre en place des stratégies de dimensionnement des positions, des pyramides pendant les périodes de tendance pour optimiser les profits.

  6. Sélectionner des combinaisons de paramètres en fonction des différentes caractéristiques du produit pour rendre le système plus robuste.

Conclusion

Dans l'ensemble, il s'agit d'un système de suivi de tendance typique et simple. Le noyau réside dans l'utilisation de moyennes mobiles et de ruptures de canal. La stratégie de stop loss est également classique et pratique. La stratégie peut fonctionner comme un cadre de base pour le développement de systèmes quantiques et peut également être déployée directement pour des bénéfices relativement stables. Une optimisation supplémentaire grâce aux tests peut améliorer la stabilité et la rentabilité du système. En résumé, la stratégie présente une facilité d'utilisation et une polyvalence, ce qui la rend adaptée comme stratégie de trading quantitative fondamentale.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
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/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

Plus de