Cette stratégie combine l'indicateur MACD avec des moyennes mobiles, et va long lorsque les deux donnent des signaux alignés.
La logique est la suivante:
Calcul du MACD FAST, généralement EMA sur 12 jours
Comptez le MACD lent, généralement l'EMA de 26 jours
Le MACD est FAST moins SLOW
La ligne de signal est typiquement une MA de 9 jours du MACD
Calcul des MAs de 9 et 26 jours
Considérez long lorsque le MACD franchit la ligne de signal
Passer à long lorsque l'AM de 9 jours dépasse l'AM de 26 jours
Fermer long lorsque le MACD franchit la ligne de signal et que le MA à 9 jours franchit la ligne de MA à 26 jours
La stratégie tire parti de l'indicateur MACD suracheté-survendu et de la capacité de suivi de tendance de MA, en combinant les deux pour des transactions à cotes plus élevées.
Le MACD estime que les prix ont été surachetés/survendus, la MA détermine la tendance
La combinaison fournit des opportunités à long terme à forte probabilité
Des règles claires et faciles à appliquer
Requiert une optimisation pour déterminer les meilleurs paramètres
LONGue incapacité à utiliser les opportunités de courte durée
Les transactions contre tendance peuvent accroître les pertes
Cette stratégie utilise les forces du MACD et du MA
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD Cross+MA", overlay=true) //@version=4 // 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) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2019, title = "From Year", minval = 2009) 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() => time >= start and time <= finish ? true : false // create function "within window of time" // 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 plot(sma(close,9),color=color.red) plot(sma(close,26),color=color.green) //Condition BMacdcondition= (macd>signal) SMacdcondition= (macd<signal) longCondition = crossover(sma(close, 9), sma(close, 26)) shortCondition = crossunder(sma(close, 9), sma(close, 26)) //entry if (BMacdcondition) and window() (longCondition) strategy.entry("LONG", strategy.long) if (shortCondition) and window() (SMacdcondition) strategy.close("LONG", qty_percent=100 , comment="หนีตาย")