
Cette stratégie est une stratégie de trading automatique basée sur l’indicateur technique MACD à double croisement de moyennes mobiles. Elle utilise le signal de croisement de ligne rapide et lente de l’indicateur MACD pour déterminer la direction de la tendance et permettre le suivi de la tendance.
La stratégie commence par calculer les trois courbes de l’indicateur MACD: la courbe rapide, la courbe lente et la courbe décalée. La courbe rapide est une moyenne mobile plus rapide sur une période donnée et la courbe lente une moyenne mobile sur une période plus longue. La décalée est la différence entre la courbe rapide et la courbe lente.
La stratégie utilise ce principe pour faire plus à la fourche dorée et être en position libre à la fourche morte; ou faire court à la fourche morte et être en position libre à la fourche dorée, pour réaliser un suivi automatique de la tendance. Dans le même temps, la stratégie juge également la valeur absolue de la ligne MACD positive ou négative, pour éviter les faux signaux et s’assurer de capturer réellement les virages de tendance.
Comment gérer les risques:
Cette stratégie peut être optimisée dans les domaines suivants:
En combinaison avec d’autres indicateurs de confirmation, tels que l’indicateur KDJ, l’indicateur Brin, etc., filtre les faux signaux
Modification des mécanismes d’accès, par exemple l’ajout de filtres de rupture, afin d’éviter les entrées anticipées ou tardives
Optimisation des paramètres, adaptation des cycles rapides et lents en fonction des cycles et des conditions du marché
Adhésion à une stratégie de stop-loss pour contrôler les pertes individuelles
Extensible à d’autres variétés, telles que les devises, les monnaies numériques, etc.
Cette stratégie de suivi de la tendance MACD croisée à deux moyennes mobiles utilise les indicateurs MACD pour déterminer la direction de la tendance, avec des signaux de filtrage de croisement de lignes rapides et lentes, permettant de capturer efficacement les virages de tendance et de suivre automatiquement la tendance. L’avantage de la stratégie réside dans la précision de la tendance, la flexibilité d’ajustement des paramètres et l’optimisation en fonction de l’environnement du marché.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © DeMindSET
//@version=4
strategy("MACD Trend Follow Strategy", overlay=false)
// Getting inputs
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : 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) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
//
Bull= macd > signal
Bear= macd < signal
ConBull=macd>0
ConBear=macd<0
//
Green= Bull and ConBull
Red= Bear and ConBear
Yellow= Bull and ConBear
Blue= Bear and ConBull
//
bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2019, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
if LSB == "Long only" and Green
strategy.entry("L",true)
if LSB == "Long only" and Red
strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Green
strategy.entry("L",true)
if LSB == "Both" and Red
strategy.entry("S",false)
if LSB == "Short only" and Red
strategy.entry("S",false)
if LSB == "Short only" and Green
strategy.close("S",qty_percent=100,comment="TP Short")