Este artículo proporciona un análisis en profundidad de la estrategia de negociación del gap de promedio móvil codificada por Noro.
La estrategia primero calcula el promedio móvil simple de 3 días (SMA). Luego calcula la relación entre el precio de cierre (closing) y el SMA menos uno como indicador (ind). Cuando ind cruza por encima del límite del parámetro preestablecido, significa que el precio de cierre ha superado el SMA significativamente y se considera una posición larga. Cuando ind cruza por debajo del límite, significa que el precio de cierre ha caído muy por debajo del SMA y se considera una posición corta.
La estrategia también traza el eje 0, el eje límite y el eje límite. El indicador ind se colorea de manera diferente en áreas separadas para facilitar el juicio.
Cuando se produce un cambio entre los ejes 0, todas las posiciones se cierran.
Adopción del principio de negociación de diferencias para detectar inversiones de tendencia, a diferencia de las estrategias de seguimiento de tendencias.
Trazado de los ejes del indicador para una evaluación intuitiva de la posición del indicador y del cruce.
Optimizada lógica cercana, cerrando la posición existente antes de invertir la dirección.
Intervalo de tiempo de negociación definido para evitar posiciones overnight innecesarias.
Flexibilidad para habilitar/desabilitar las operaciones largas/cortas.
Las estrategias de promedio móvil tienden a generar múltiples operaciones perdedoras, lo que requiere paciencia en la retención.
Las medias móviles carecen de flexibilidad para capturar los cambios de precios en tiempo real.
El parámetro límite preestablecido es estático y requiere ajustes para diferentes productos y entornos de mercado.
Incapacidad para identificar fluctuaciones dentro de las tendencias, que requieren una combinación con indicadores de volatilidad.
Necesidad de optimizar las reglas de tenencia, por ejemplo, detener pérdidas, obtener ganancias; o solo capturar brechas iniciales.
Prueba diferentes configuraciones de parámetros, por ejemplo, período SMA o promedios móviles adaptativos como EMA.
Agregue la dirección de la media móvil y la validación de la pendiente para evitar operaciones sin sentido.
Considere combinar con indicadores de volatilidad como las bandas de Bollinger para pausar las operaciones cuando la volatilidad aumenta.
Implementar reglas de tamaño de posición, por ejemplo, cantidad fija, pirámide incremental, gestión del dinero.
Se establecerán líneas de stop loss/take profit, o se pausarán nuevas órdenes cuando se active el stop loss por porcentaje fijo, para controlar el riesgo por operación.
Este artículo analiza de manera exhaustiva la estrategia de negociación de la brecha de promedio móvil de Noro
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Shift Close Strategy v1.0", shorttitle = "Shift Close 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") limit = input(10) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day") //Shift MA sma = sma(ohlc4, 3) ind = ((close / sma) - 1) * 100 //Oscilator plot(3 * limit, color = na, transp = 0) plot(limit, color = black, transp = 0) plot(0, color = black, transp = 0) plot(-1 * limit, color = black, transp = 0) plot(-3 * limit, color = na, transp = 0) plot(ind, linewidth = 3, transp = 0) col = ind > limit ? red : ind < -1 * limit ? lime : na bgcolor(col, transp = 0) //Signals size = strategy.position_size up = ind < -1 * limit dn = ind > limit exit = ind > -1 * limit and ind < limit //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if exit strategy.close_all()