
La stratégie consiste à former un oscillateur MACD en calculant la différence entre les EMA de la ligne rapide et les EMA de la ligne lente, puis en calculant la ligne moyenne du MACD pour former une ligne de signal, construisant ainsi un système à double filtre. Le MACD génère un signal d’achat lorsque la ligne passe du haut vers le bas et un signal de vente lorsque la ligne passe du haut vers le bas, exploitant les fluctuations à court et moyen terme du prix.
L’indicateur central de cette stratégie est l’oscillateur MACD, qui est calculé par l’EMA rapide (généralement réglée sur 12 jours) moins l’EMA lente (généralement réglée sur 26 jours). L’EMA rapide est plus sensible et capte les fluctuations à court terme des prix; l’EMA lente réagit plus lentement aux variations de prix.
Cette stratégie définit les paramètres d’entrée en fonction de la longueur de la ligne rapide, de la longueur de la ligne lente, de la source de prix et de la longueur de la ligne de signal. Le cycle de fluctuation. Les paramètres peuvent être ajustés en fonction des différents marchés pour trouver la meilleure combinaison de paramètres.
L’indicateur MACD est un indicateur classique et facile à comprendre qui permet de saisir efficacement les occasions de revers à court et moyen terme.
Un système MACD construit avec une double EMA a une meilleure fluidité par rapport à un système MA simple.
Les paramètres peuvent être ajustés et optimisés pour différents marchés.
Les indicateurs de masse de circulation combinés permettent d’identifier des signaux de haute qualité.
Le MACD est plus susceptible de produire de faux signaux en cas de choc.
Il n’y a pas d’indicateur de tendance et il peut y avoir des pertes en cas de croisement avec la tendance.
Les limites de temps de détection peuvent ignorer les cas extrêmes.
Les paramètres doivent combiner plus de données de marché pour être optimisés, sinon il est possible d’overfit un segment de marché.
Le risque peut être maîtrisé en combinant des indicateurs de jugement de tendance et en mettant en place des mécanismes de stop-loss. En même temps, l’étendue de la portée des relevés et de l’espace d’échantillonnage du marché permettent une optimisation des paramètres.
Tester différentes sources de prix, telles que le prix de clôture, le prix moyen, le prix de reprise, etc.
La recherche d’une combinaison optimale de paramètres sur la base de données historiques plus étendues
L’intégration d’autres indicateurs pour juger de la qualité du signal.
Le fait de combiner la tendance et le jugement de la vague permet d’éviter les conflits majeurs avec la tendance.
Cette stratégie est classique et pratique. Elle permet de contrôler le risque par l’optimisation des paramètres, le filtrage des signaux et les moyens de freinage. Elle est combinée à des indicateurs de jugement de tendance pour éviter de se retrouver au sommet du trou noir et obtenir des gains stables.
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="MACD Histogram Backtest", shorttitle="MACD")
// Getting inputs
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
grow = (hist[1] < hist)
fall = (hist[1] > hist) and hist >= 0
stop = (hist[1] > hist)
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)
//Strategy Testing
// Component Code Start
// Example usage:
// if testPeriod()
// strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
//Entry and Close settings
if testPeriod()
strategy.entry("grow", true, 10, when = grow, limit = close)
strategy.close("grow", when = fall)
strategy.close("grow", when = stop)
//if testPeriod()
// strategy.entry("fall", false, 1000, when = fall, limit = close)
// strategy.close("fall", when = grow)