Stratégie de suivi de tendance du canal de diffusion basée sur le MACD


Date de création: 2023-11-15 11:37:37 Dernière modification: 2023-11-15 11:37:37
Copier: 0 Nombre de clics: 839
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance du canal de diffusion basée sur le MACD

Aperçu

Cette stratégie, combinant un indicateur de diffusion et un indicateur MACD pour juger de la tendance, est une stratégie de suivi de tendance typique. Faites plus lorsque le prix franchit la trajectoire et que l’indicateur MACD apparaît sur la fourche dorée, et faites une pause lorsque le prix descend et que l’indicateur MACD apparaît sur la fourche morte.

Principe de stratégie

  1. Calculer les indicateurs MACD, y compris les lignes rapides, les lignes lentes et les histogrammes.

  2. Calculer le canal de diffusion ascendant et descendant. Le prix le plus élevé de la voie ascendante pendant N jours et le prix le plus bas de la voie descendante pendant N jours.

  3. Faites plus lorsque le prix est en hausse et que le MACD est en hausse.

  4. Lorsque le prix est descendu de la trajectoire et que la ligne rapide MACD a dépassé la ligne lente vers le bas, laissez la place.

  5. L’indicateur ATR est utilisé pour calculer le stop loss de la stratégie, qui est défini comme la valeur de la distance entre le prix et le stop loss, ATR, multipliée par un facteur .

  6. Lorsque le prix recule, il est préférable d’effacer la position actuelle.

Analyse des avantages

Cette stratégie est combinée avec un indicateur de jugement de tendance et un indicateur de canal, permettant de suivre efficacement la tendance. L’indicateur MACD permet de juger de la tendance et de l’intensité des prix, tandis que l’indicateur de canal diffusé permet de juger de la direction. Le stop ATR permet de limiter les pertes individuelles.

Les avantages sont les suivants:

  1. Les paramètres de la stratégie sont simples et faciles à mettre en œuvre.

  2. Il est possible d’ouvrir des positions en cours et de saisir les opportunités de tendance en temps opportun.

  3. L’arrêt de l’ATR permet de contrôler le risque.

  4. Le retrait peut être contrôlé.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Une mauvaise configuration des paramètres du canal de diffusion peut provoquer un faux signal.

  2. Une mauvaise configuration des paramètres du MACD peut également entraîner un retard du signal d’avertissement du système d’administration de la viticulture.

  3. Un arrêt de perte trop élevé peut entraîner une augmentation des pertes.

  4. Si la situation change radicalement, cela pourrait entraîner des pertes.

  5. Cette stratégie est susceptible d’entraîner une survente.

La réponse:

  1. Paramètres d’optimisation, sélection prudente des actions

  2. Il est donc important de suivre la tendance.

  3. Adaptation appropriée de la gestion des positions.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Optimiser les paramètres MACD et améliorer la sensibilité de l’indicateur

  2. Optimisation des algorithmes de stop loss pour les rapprocher du prix.

  3. Augmentation des mécanismes de gestion des positions et ajustement des positions en fonction de la force ou de la faiblesse de la tendance.

  4. Les conditions de filtrage ont été ajoutées pour éviter les faux signaux.

  5. Augmentation des critères de sélection pour les variétés commerciales.

  6. Pour augmenter le jugement sur la période de transaction.

Résumer

Cette stratégie est une stratégie de suivi de tendance typique. Elle combine la direction de la tendance de l’indicateur de diffusion et la force de la tendance de l’indicateur MACD.

Code source de la stratégie
/*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("Trend Following with Donchian Channels and MACD", overlay=false, margin_long=100, margin_short=100, pyramiding=3)

// MACD //
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

col_macd = input(#2962FF, "MACD Line  ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line  ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
plot(macd, title="MACD", color=col_macd)
plot(signal, title="Signal", color=col_signal)

// 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)

//ATR and Position Size //
strategy.initial_capital = 50000
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(macd, signal)
entrycondition2 = macd > signal
entrycondition3 = macd and signal > hist
sellcondition1 = ta.crossover(signal, macd)
sellcondition2 = signal > macd
sellcondition3 = macd and signal < hist

// Buy and Sell Signals //

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

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