Esta estrategia es una estrategia de comercio de cruce de promedios móviles simple basada en cruces de promedios móviles a corto y largo plazo. Utiliza promedios móviles de 34 períodos y 89 períodos para observar sus cruces durante la sesión de la mañana como señales de compra y venta. Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo desde abajo, se genera una señal de compra. Cuando cruza por debajo desde arriba, se genera una señal de venta.
La lógica central de esta estrategia se basa en los cruces entre los promedios móviles a corto y largo plazo como señales comerciales. Específicamente, la estrategia define los promedios móviles simples a corto y largo plazo (SMA) de 34 períodos y 89 períodos. Solo observa los cruces entre estos dos SMA durante la sesión de la mañana (08:00 - 10:00). Cuando el SMA a corto plazo cruza por encima del SMA a largo plazo desde abajo, se considera que el mercado está en una tendencia al alza, generando así una señal de compra. Cuando el SMA a corto plazo cruza por debajo del SMA a largo plazo desde arriba, se considera que el mercado está en una tendencia a la baja, generando así una señal de venta.
Al recibir una señal de compra o venta, la estrategia entrará en una posición y establecerá una condición para salir de la posición, que es obtener ganancias después de mantener un número especificado de velas (por defecto son 3 velas) desde la entrada.
Debe tenerse en cuenta que la estrategia solo identifica señales de cruce durante la sesión de la mañana. Esto se debe a que este marco de tiempo tiene mayores volúmenes de negociación y las señales de cambio de tendencia son más confiables. Otros marcos de tiempo tienen fluctuaciones de precios más grandes y son más fáciles de generar señales falsas.
La estrategia tiene las siguientes ventajas:
Utilizando reglas simples y universales de cruce de medias móviles, fáciles de entender, adecuadas para principiantes
Identificar sólo las señales durante la sesión de la mañana, donde las señales de calidad son abundantes, lo que filtra las señales falsas durante otros marcos de tiempo
Las condiciones de suspensión de pérdidas que permiten la suspensión de pérdidas oportunas, el bloqueo de ganancias parciales y la reducción del riesgo de pérdida.
Muchos parámetros personalizables que se pueden ajustar en función de las condiciones del mercado y el estilo personal de negociación
Fácilmente ampliable para combinarse con otros indicadores para diseñar estrategias más complejas
La estrategia también presenta algunos riesgos, principalmente por los siguientes aspectos:
Las medias móviles tienen mayores atributos de retraso, pueden perder puntos de inversión de precios a corto plazo
Se basa únicamente en indicadores simples, propensos a fallar en determinados entornos de mercado (conmociones de tendencia, límites de rango, etc.)
La posición de stop loss incorrecta puede causar pérdidas innecesarias.
Los ajustes incorrectos de parámetros (períodos de media móvil, períodos de retención, etc.) también pueden afectar al rendimiento de la estrategia.
Soluciones correspondientes:
Incorporar otros indicadores principales para mejorar la sensibilidad a los cambios a corto plazo
Añadir condiciones de filtrado para evitar ser afectado por señales falsas durante los choques y los mercados de rango
Optimizar la lógica de stop loss y ajustar dinámicamente el rango de stop loss en función de la volatilidad del mercado
Optimización de varios parámetros para encontrar la configuración óptima de parámetros
La estrategia también tiene un gran potencial de optimización, principalmente en los siguientes aspectos:
Añadir otras condiciones de filtrado para evitar señales falsas durante los choques y los mercados de rango
Incorporar indicadores de impulso para identificar señales de ruptura más fuertes
Optimizar los parámetros del período de media móvil para encontrar la mejor combinación de parámetros
Optimizar automáticamente el intervalo de stop loss basado en la volatilidad del mercado
Intentar optimizar automáticamente toda la estrategia basada en técnicas de aprendizaje automático
Intento de combinar con otras estrategias para diseñar sistemas multiestrategia más complejos
En general, esta estrategia es relativamente simple y práctica, adecuada para que los principiantes aprendan de ella. Incorpora el patrón típico de las estrategias de cruce de promedios móviles y utiliza paradas para controlar los riesgos. Sin embargo, se pueden hacer más optimizaciones para mejorar el rendimiento para más condiciones de mercado. Los inversores pueden aprovechar este marco básico para diseñar estrategias comerciales cuantitativas más avanzadas.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("34 89 SMA Crossover Strategy", overlay=true) // Define the length for the SMAs short_length = input(34, title="Short SMA Length") long_length = input(89, title="Long SMA Length") exit_candles = input(3, title="Exit after how many candles?") exit_at_open = input(true, title="Exit at Open?") // Define morning session morning_session = input("0800-1000", "Morning Session") // Calculate SMAs short_sma = ta.sma(close, short_length) long_sma = ta.sma(close, long_length) // Function to check if current time is within specified session in_session(session) => session_start = na(time(timeframe.period, "0800-1000")) ? na : true session_start // Condition for buy signal (short SMA crosses over long SMA) within specified trading hours buy_signal = ta.crossover(short_sma, long_sma) // Condition for sell signal (short SMA crosses under long SMA) within specified trading hours sell_signal = ta.crossunder(short_sma, long_sma) // Function to exit the trade after specified number of candles var int trade_entry_bar = na var int trade_exit_bar = na if (buy_signal or sell_signal) trade_entry_bar := bar_index if (not na(trade_entry_bar)) trade_exit_bar := trade_entry_bar + exit_candles // Exit condition exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar)) // Execute trades if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) if (exit_condition) strategy.close("Buy") strategy.close("Sell") // Plot SMAs on the chart plot(short_sma, color=color.blue, linewidth=1) plot(long_sma, color=color.red, linewidth=1)