Estrategia de trading cuantitativo basada en medias móviles altas y bajas


Fecha de creación: 2023-09-19 15:53:55 Última modificación: 2023-09-19 15:53:55
Copiar: 0 Número de Visitas: 626
1
Seguir
1617
Seguidores

Descripción general

La estrategia determina el momento de comprar y vender calculando las medias móviles simples de los máximos y mínimos y comparándolas con el precio de cierre actual. Su objetivo es capturar las señales de que los precios rompan la media para obtener oportunidades tempranas de tendencia.

Principio de estrategia

  1. Calcula el promedio móvil sencillo de la longitud de la cima de 4

  2. Calcula el promedio móvil simple con una longitud baja de 4

  3. Hacer una entrada adicional cuando el precio de cierre rompa la línea media del punto más alto

  4. Cuando el precio de cierre cruza la línea media de los mínimos, se abre una entrada en el mercado.

  5. Gestionar el riesgo con estrategias de stop loss y stop loss fijas

Análisis de las ventajas

  1. Utilizando indicadores simples y fáciles de entender

  2. Capturar las señales de la ruptura de la línea media a tiempo

  3. En la actualidad, la tecnología de la nube permite filtrar rápidamente parte del ruido para identificar tendencias.

  4. La pequeña cantidad de computación puede reducir el consumo operativo de la estrategia

  5. Estrategias basadas en la adaptabilidad para la expansión

Análisis de riesgos

  1. Se necesitan parámetros razonables para evitar ser demasiado sensibles

  2. No puede hacer frente a los riesgos de una gran ruptura

  3. Existe un cierto riesgo de arbitraje de choque

  4. No se puede ajustar automáticamente la posición de la parada de pérdida

  5. Es difícil determinar la duración de las tendencias

Dirección de optimización

  1. Prueba de la influencia de diferentes parámetros en la calidad de la señal

  2. Aumentar las condiciones de filtración para garantizar la efectividad de las brechas

  3. Combinado con análisis de tendencias, evitar ser engañado

  4. Desarrollo de estrategias para detener el deterioro dinámico

  5. Optimización de los mecanismos de suspensión de pérdidas y mejora de la probabilidad de éxito de las estrategias

  6. Prueba de la robustez de la estrategia en diferentes ciclos

Resumir

La estrategia proporciona una idea básica de comercio de tendencias a través de un simple indicador para evaluar la dinámica de los precios. La lógica de negociación es extensible y se puede desarrollar como un sistema de cuantificación más sólido.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HiLo", overlay=true)

// Testing a specific period
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


//HiLo Strategy
length = input(4, minval=0)
displace = input(0, minval=0)
highsma = sma(high, length)
lowsma = sma(low, length)

longCondition = close > highsma[displace]
if (longCondition)
    strategy.entry("long", true)

shortCondition = close < lowsma[displace]
if (shortCondition)
    strategy.entry("short", false)

// Exit seems with a problem. it keeps saying the order's limit (2000) was reached even if I back test it just for a day. 
// If the two lines bellow are commented, then it it works. Anyone? Any idea what's wrong?

// strategy.exit("exit", "long", profit=10, loss=5)
// strategy.exit("exit", "short", profit=10, loss=5)