Cette stratégie combine l’indicateur MACD et l’indicateur des moyennes mobiles pour effectuer des transactions multiples lorsque les deux donnent un signal de synchronisation.
La logique de l’opération est la suivante:
Calculer la valeur du FAST MACD, généralement en prenant une moyenne mobile sur 12 jours
Calculer la valeur du SLOW MACD, généralement en prenant une moyenne mobile sur 26 jours
Le MACD est FAST moins SLOW.
Calculer la ligne MACD en prenant une moyenne mobile de 9 jours
Calcul des moyennes mobiles à 9 et 26 jours
Quand vous passez le signal sur le MACD, pensez à faire plus
Lorsque vous portez la ligne de 9 jours sur la ligne de 26 jours, faites plus.
Lorsque le MACD est en dessous de la ligne de signal et en dessous de la ligne moyenne de 9 jours et de la ligne moyenne de 26 jours, la position est à plat.
Cette stratégie exploite pleinement les capacités de suivi des tendances de la MACD sur les jugements de survente et de survente et de la ligne de parité, et les combine pour effectuer des transactions avec un taux de réussite plus élevé.
Le MACD a jugé que le cours était trop bon et le cours moyen trop bon.
La combinaison de ces deux tests offre de nombreuses opportunités
Les règles de fonctionnement sont claires et faciles à mettre en œuvre
Tests répétés pour déterminer les meilleurs paramètres
Il n’y a pas d’occasions d’être à court d’argent.
La tendance à la hausse pourrait augmenter les pertes
Cette stratégie tire pleinement parti des avantages du MACD et de l’indicateur de la moyenne, qui combinent les deux pour juger du rythme du marché. Cependant, il convient de prêter attention aux questions telles que le surtraitement et l’optimisation des paramètres.
/*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="หนีตาย")