Esta es una estrategia de trading cuantitativa compuesta basada en el indicador MACD. Combina múltiples indicadores como MACD y KDJ para generar señales de trading a través de la combinación de indicadores.
El indicador principal de esta estrategia es el MACD. El MACD es el acrónimo de Moving Average Convergence Divergence, que es un indicador de tendencia. Consiste en un promedio móvil rápido (EMA) y un promedio móvil lento (EMA). Los parámetros predeterminados son 12 para la línea rápida y 26 para la línea lenta. La estrategia calcula la diferencia entre las dos líneas EMA, llamada DIF. Luego se calcula un EMA de 9 días en el DIF para obtener el indicador DEA. Cuando el DIF cruza por encima del DEA, se genera una señal de compra. Cuando se cruza por debajo, se genera una señal de venta.
La estrategia también incorpora el indicador KDJ. El indicador KDJ incluye el valor K, el valor D y el valor J. Entre ellos, el valor K se refiere al valor aleatorio, el valor D es el promedio móvil del valor K y el valor J se refiere al valor determinista. El indicador KDJ refleja los niveles de sobrecompra y sobreventa en el mercado. Cuando el valor J es mayor de 100, representa condiciones de sobrecompra. Cuando es menor de 10, representa condiciones de sobreventa. La estrategia combina el indicador KDJ para evitar generar señales erróneas en los puntos de inflexión del mercado.
La estrategia combina múltiples indicadores como MACD y KDJ, que pueden filtrar eficazmente el ruido del mercado e identificar las direcciones de tendencia. El indicador MACD puede capturar los cambios de precios a corto plazo de manera oportuna, mientras que el indicador KDJ puede confirmar las tendencias a mediano y largo plazo. La combinación de los dos puede equilibrar la búsqueda de agilidad y estabilidad.
Además, la estrategia incorpora un selector de intervalos de tiempo, lo que proporciona una mayor flexibilidad en la evaluación del rendimiento de la estrategia.
Cuando el mercado fluctúa durante un período prolongado, MACD tendrá múltiples señales falsas. En este punto, podemos ajustar adecuadamente los parámetros de las líneas EMA para filtrar algo de ruido.
La configuración incorrecta de parámetros KDJ también afectará los resultados. Podemos probar varios grupos de parámetros y seleccionar una combinación de parámetros más estable.
La selección inadecuada del marco de tiempo de backtest sobreestimará o subestimará la rentabilidad de la estrategia.
La estrategia se puede optimizar en los siguientes aspectos:
Cuando el precio activa la línea de stop loss, forzará una salida de posición con fines de stop loss.
Incorporar más filtros de indicadores, combinando indicadores como RSI y Bandas de Bollinger para mejorar la precisión de la señal.
Optimizar los parámetros del indicador. Cambiar la combinación de parámetros EMA y KDJ para encontrar los ajustes óptimos.
Utilice técnicas de aprendizaje automático para optimizar automáticamente. Utilice redes neuronales para el entrenamiento y la optimización de parámetros.
Esta es una estrategia cuantitativa típica que sigue principalmente la tendencia, complementada por el control de sobrecompra y sobreventa. Combina las ventajas de múltiples indicadores y equilibra efectivamente la estabilidad y la sensibilidad. A través de la optimización y el ajuste continuos, la aplicabilidad de la estrategia se puede ampliar aún más para obtener ganancias constantes a largo plazo.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000) source = close fastlength=input(12, minval=1) slowlength=input(26,minval=1) signallength=input(9,minval=1) // === Defining the MACD oscillator fastMA=ema(source,fastlength) slowMA=ema(source,slowlength) MACD=fastMA-slowMA signal=sma(MACD,signallength) delta=MACD-signal // === Buy and Sell Signals === buy=crossover(MACD, signal) sell=crossunder(MACD, signal) // === INPUT BACKTEST RANGE === fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2018, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 31, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2020, title = "Thru Year", type = input.integer, minval = 1970) // === INPUT SHOW PLOT === showDate = input(defval = true, title = "Show Date Range", type = input.bool) // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === EXECUTION === strategy.entry("L", strategy.long, when = window() and buy) // enter long when "within window of time" AND crossover strategy.close("L", when = window() and sell) // exit long when "within window of time" AND crossunder