La estrategia combina el MACD con el indicador de las medias móviles, para realizar múltiples operaciones cuando ambos dan una señal de sincronización.
La lógica de la transacción es la siguiente:
Calcula el valor de FAST MACD, generalmente tomando el promedio móvil del índice de 12 días
Calcula el valor de SLOW MACD, que generalmente toma una media móvil de 26 días
El MACD es FAST menos SLOW
Para calcular la línea de señal del MACD, se toma una media móvil de 9 días.
Calcular las medias móviles de 9 y 26 días
Considere hacer más cuando se cruza la línea de señal en MACD
Cuando el promedio de 9 días está en el promedio de 26 días, haz más.
Cuando el MACD pasa por debajo de la línea de señal y la línea promedio de 9 días pasa por debajo de la línea promedio de 26 días, la posición está cerrada
Esta estrategia aprovecha al máximo la capacidad de seguimiento de tendencias de los juicios de sobreventa y sobreventa del MACD y de la línea de paridad, combinando ambos para operar con mayor éxito.
El MACD juzga sobrecompra y sobreventa, y la línea media juzga la tendencia
La combinación de ambas pruebas ofrece una alta probabilidad de que haya más oportunidades
Las reglas de operación son claras y fáciles de implementar
Las pruebas repetidas para determinar los parámetros óptimos
No se puede aprovechar la oportunidad de un trabajo vacío
La tendencia es que hacer más puede aumentar las pérdidas
Esta estrategia aprovecha al máximo las ventajas del MACD y el indicador de la línea media, combinando los dos para determinar el ritmo del mercado. Sin embargo, solo hay que tener en cuenta los problemas de hacer más y optimizar los parámetros.
/*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="หนีตาย")