
La estrategia es una estrategia de comercio cuantitativo compuesto basado en indicadores MACD. Utiliza en conjunto varios indicadores como MACD, KDJ, etc., para generar señales de comercio a través de combinaciones entre los indicadores.
El indicador central de la estrategia es el MACD. El MACD representa el índice de media móvil, un indicador de seguimiento de tendencias. Se compone de una media móvil rápida (EMA) y una media móvil lenta (EMA). El parámetro predeterminado de la línea rápida es 12, el parámetro predeterminado de la línea lenta es 26. La estrategia calcula el diferencial entre las dos líneas de EMA, es decir, DIF.
La estrategia también introdujo el indicador KDJ. El indicador KDJ incluye los valores K, D y J. El K es el valor aleatorio, el D es el promedio móvil del valor de K y el J es el valor de determinación. El indicador KDJ refleja el estado de sobreventa y sobreventa del mercado. Cuando el valor de J es mayor que 100 representa sobreventa y menor que 10 representa sobreventa.
La estrategia utiliza una combinación de indicadores como el MACD y el KDJ para filtrar el ruido del mercado e identificar la dirección de la tendencia. El indicador MACD puede capturar en tiempo real los cambios de precios a corto plazo y el indicador KDJ puede confirmar tendencias a medio y largo plazo. La combinación de ambos puede equilibrar la relación entre la búsqueda de agilidad y la estabilidad.
Además, la estrategia incluye un selector de tiempo, que permite elegir el rango de tiempo de la respuesta. Esto proporciona una mayor flexibilidad para evaluar el rendimiento de la estrategia.
Cuando el mercado se tambalea durante mucho tiempo, el MACD se verá afectado por varios errores. En este caso, los parámetros de la línea EMA se pueden ajustar adecuadamente para filtrar parte del ruido.
La configuración incorrecta de los parámetros del indicador KDJ también puede afectar los resultados. Se pueden probar varios conjuntos de parámetros y elegir una combinación de parámetros más estable.
La elección de un tiempo de retrospectiva incorrecto puede sobreestimar o subestimar los beneficios de la estrategia. Se debe elegir un rango de tiempo representativo para la prueba.
La estrategia puede ser optimizada en los siguientes aspectos:
Incrementar el mecanismo de stop loss. Forzar el stop loss de la posición cerrada cuando el precio dispara la línea de stop loss.
Añadir más filtros de indicadores. Combinado con otros indicadores como el RSI, las bandas de Brin, se puede mejorar la precisión de la señal.
Optimización de los parámetros indicadores. Cambiar la combinación de los parámetros EMA y KDJ para encontrar el parámetro óptimo.
Optimización automática utilizando técnicas de aprendizaje automático. Entrenamiento y optimización de parámetros estratégicos, como el uso de redes neuronales.
La estrategia es una estrategia cuantitativa típica basada en el seguimiento de tendencias, complementada con el control de las sobrecompras y sobreventa. Combina las ventajas de varios indicadores para equilibrar eficazmente la estabilidad y la sensibilidad. Mediante la optimización y el ajuste continuos, amplía aún más los escenarios de aplicación de la estrategia para obtener beneficios estables 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