Estrategia de las medias móviles de negociación de diferencias

El autor:¿ Qué pasa?, Fecha: 2023-10-26 16:05:01
Las etiquetas:

img

Este artículo proporciona un análisis en profundidad de la estrategia de negociación del gap de promedio móvil codificada por Noro.

Estrategia lógica

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.

Ventajas

  1. Adopción del principio de negociación de diferencias para detectar inversiones de tendencia, a diferencia de las estrategias de seguimiento de tendencias.

  2. Trazado de los ejes del indicador para una evaluación intuitiva de la posición del indicador y del cruce.

  3. Optimizada lógica cercana, cerrando la posición existente antes de invertir la dirección.

  4. Intervalo de tiempo de negociación definido para evitar posiciones overnight innecesarias.

  5. Flexibilidad para habilitar/desabilitar las operaciones largas/cortas.

Los riesgos

  1. Las estrategias de promedio móvil tienden a generar múltiples operaciones perdedoras, lo que requiere paciencia en la retención.

  2. Las medias móviles carecen de flexibilidad para capturar los cambios de precios en tiempo real.

  3. El parámetro límite preestablecido es estático y requiere ajustes para diferentes productos y entornos de mercado.

  4. Incapacidad para identificar fluctuaciones dentro de las tendencias, que requieren una combinación con indicadores de volatilidad.

  5. Necesidad de optimizar las reglas de tenencia, por ejemplo, detener pérdidas, obtener ganancias; o solo capturar brechas iniciales.

Direcciones de mejora

  1. Prueba diferentes configuraciones de parámetros, por ejemplo, período SMA o promedios móviles adaptativos como EMA.

  2. Agregue la dirección de la media móvil y la validación de la pendiente para evitar operaciones sin sentido.

  3. Considere combinar con indicadores de volatilidad como las bandas de Bollinger para pausar las operaciones cuando la volatilidad aumenta.

  4. Implementar reglas de tamaño de posición, por ejemplo, cantidad fija, pirámide incremental, gestión del dinero.

  5. 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.

Resumen de las actividades

Este artículo analiza de manera exhaustiva la estrategia de negociación de la brecha de promedio móvil de Noro. Utiliza la brecha de precio de la característica de promedio móvil e implementa ejes de indicadores y colores para el tiempo de entrada. También optimiza la lógica de cierre y define el rango de tiempo de negociación. Sin embargo, persisten debilidades inherentes del seguimiento de promedios móviles, que requieren más optimizaciones en parámetros, reglas de stop loss, combinación de indicadores, etc. para mejorar la robustez.


/*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()

Más.