Esta es una estrategia de negociación cuantitativa basada en señales de cruce de media móvil dual. La estrategia emplea dos medias móviles, una como la línea de señal principal y otra como una línea de señal de suavizado. Genera señales de negociación mediante el monitoreo de cruces de precios con la línea de señal de suavizado, lo que permite la captura de tendencias del mercado y el seguimiento del impulso. La fortaleza principal de la estrategia radica en su mecanismo de generación de señales simple pero efectivo y opciones de configuración de parámetros flexibles.
La estrategia utiliza dos niveles de cálculos de promedios móviles. Primero calcula un promedio móvil básico (período predeterminado de 9), seguido de un proceso de suavizado secundario (período predeterminado de 5). La estrategia ofrece varios métodos de cálculo de promedios móviles, incluyendo promedio móvil simple (SMA), promedio móvil exponencial (EMA), promedio móvil suavizado (SMMA), promedio móvil ponderado (WMA) y promedio móvil ponderado por volumen (VWMA). Las señales largas se generan cuando el precio de cierre cruza por encima de la línea de señal suavizante, mientras que las señales cortas se generan cuando el precio de cierre cruza por debajo de ella.
Esta es una versión mejorada de una estrategia clásica de seguimiento de tendencias que mejora la estabilidad manteniendo la simplicidad a través de un diseño de media móvil de doble capa. La estrategia ofrece una buena escalabilidad y flexibilidad, adaptable a diferentes entornos de mercado a través de la optimización de parámetros y extensiones de funciones. Sin embargo, los usuarios deben prestar atención al control de costos de transacción y la gestión de riesgos, y se recomienda realizar pruebas de retroceso antes de operar en vivo.
/*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)