
Se trata de una estrategia de trading cuantitativa basada en señales de cruce de dos líneas equiláreas. La estrategia utiliza dos medias móviles, una como línea de señal principal y otra como línea de señal plana. La estrategia genera señales de trading mediante el monitoreo de la intersección de precios y líneas de señal plana, lo que permite el seguimiento de la tendencia del mercado y el seguimiento de la dinámica.
La estrategia utiliza dos niveles de cálculo de las medias móviles: primero, se calcula una media móvil básica (el período predeterminado es de 9) y luego se realiza un segundo proceso de suavizado de esta línea (el período predeterminado es de 5). La estrategia ofrece una variedad de métodos de cálculo de medias, que incluyen media móvil simple (SMA), media móvil indexada (EMA), media móvil plana (SMMA), media móvil ponderada (WMA) y media móvil ponderada (VWMA). Se genera una señal de multiplicación cuando el precio de la liquidación cruza la línea de la liquidación hacia arriba; se genera una señal de ruptura cuando el precio de la liquidación cruza la línea de la liquidación hacia abajo.
Se trata de una versión mejorada de la clásica estrategia de seguimiento de tendencias, que mejora la estabilidad a través del diseño de dos capas de medias móviles, al tiempo que mantiene la simplicidad de la estrategia. La estrategia tiene una buena escalabilidad y flexibilidad, y puede adaptarse a diferentes entornos de mercado a través de la optimización de parámetros y la extensión de funciones.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)
// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
// Calculate the Moving Average
out = ta.sma(src, len)
// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)
// Function to choose the type of moving average
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")
// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)
// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)
// Strategy Logic
if (ta.crossover(close, smoothingLine))
strategy.entry("Buy", strategy.long)
if (ta.crossunder(close, smoothingLine))
strategy.entry("Sell", strategy.short)