Estrategia de trading cuantitativa de Gandalf Mean Reversión

El autor:¿ Qué pasa?, Fecha: 2023-10-30 10:27:40
Las etiquetas:

img

Resumen general

La estrategia de trading cuantitativa de Gandalf es una estrategia de reversión media basada en líneas de precio medianas. Determina la dirección de la tendencia actual calculando el precio promedio ponderado, la línea de precio mediana y el precio medio corporal, para encontrar puntos de entrada óptimos. Cuando se detecta una inversión de tendencia, se cortarán rápidamente las pérdidas y se saldrá. La estrategia combina las ideas de seguir tendencia y estrategias de reversión de tendencia.

Estrategia lógica

La lógica central de la estrategia de Gandalf es comparar la relación de magnitud entre el precio promedio ponderado, la línea de precio mediana y el precio medio corporal, para juzgar la dirección y la fuerza de la tendencia actual.

En concreto, calcula los siguientes precios:

  • Precio medio ponderado: (precio más alto + precio más bajo + precio de cierre + precio de cierre) / 4
  • Línea de precios media: (precio más alto + precio más bajo) / 2
  • Precio medio del cuerpo: (precio de apertura + precio de cierre) / 2

Al entrar en una posición, compara la relación de magnitud entre el precio promedio ponderado, la línea de precio mediana y el precio medio del cuerpo de las dos últimas barras, para determinar si se ajusta a las características de una tendencia inicial.

Por ejemplo, si el precio promedio ponderado está por debajo de la línea de precios mediana y el precio medio corporal también está por debajo del precio promedio ponderado, indica que el precio está bajando, lo que presenta una oportunidad de cortocircuito.

Cuando se detiene la pérdida, continúa comparando la relación de magnitud entre estos precios, para juzgar si hay signos de inversión de tendencia.

Al comparar la relación de magnitud del precio, la estrategia Gandalf realiza el juicio y el seguimiento de las tendencias.

Ventajas

La estrategia Gandalf tiene las siguientes ventajas:

  1. El uso de la línea de precio mediana para determinar la dirección de la tendencia puede filtrar eficazmente el ruido del mercado y bloquear la tendencia principal.

  2. La condición de entrada que combina múltiples comparaciones de precios puede determinar de manera más fiable el inicio de una tendencia.

  3. La condición de stop loss también utiliza la comparación de precios para juzgar la reversión de tendencia, lo que permite un stop loss rápido y un control del riesgo.

  4. La adopción de órdenes condicionales para la entrada puede entrar a precios ideales.

  5. Los tiempos máximos de obtención de ganancias y el límite superior del período de retención preestablecidos pueden bloquear las ganancias y controlar los riesgos comerciales únicos.

  6. La estructura del código es clara y sencilla, fácil de entender y modificar.

  7. Los parámetros se pueden ajustar en función de las preferencias personales de riesgo, fácil de optimizar.

  8. Aplicable a productos de tendencia, capaz de capturar las ganancias de tendencia.

En resumen, la estrategia de Gandalf utiliza la línea mediana para determinar la tendencia, establece las condiciones de toma de ganancias y parada de pérdidas, y puede controlar eficazmente los riesgos mientras sigue las tendencias, lo que la convierte en una estrategia de seguimiento de tendencias confiable.

Los riesgos

La estrategia de Gandalf también tiene algunos riesgos a tener en cuenta:

  1. Como estrategia de tendencia, producirá pérdidas más pequeñas cuando la tendencia no sea clara o se invierta con frecuencia.

  2. La incapacidad de determinar eficazmente los puntos de inversión de tendencia, puede conducir a pérdidas en expansión.

  3. Suelen quedar atrapados en mercados limitados.

  4. Se basa en la configuración de parámetros, los parámetros deben ajustarse para diferentes productos.

  5. Una tenencia unidireccional, incapaz de sacar provecho de las tendencias invertidas.

  6. Alta tasa de fracaso de las órdenes condicionales, puede esperar mucho tiempo para entrar.

Medidas de gestión de riesgos:

  1. Adopte el tamaño de la posición pequeña, entrada parcial, para controlar la pérdida única.

  2. Establezca la línea de stop loss, stop loss rápido o adopte el stop loss móvil o el stop loss trasero.

  3. Optimice los parámetros para que se adapten al producto actual.

  4. Considere la martingale a la base de menor costo.

  5. Comercio de productos con tendencias obvias, mayor confianza en las ganancias.

  6. Relajar adecuadamente los criterios de entrada para mejorar la probabilidad de entrada.

Direcciones de mejora

La estrategia de Gandalf también puede mejorarse en los siguientes aspectos:

  1. Construir indicadores de juicio de tendencia para ayudar a determinar el momento de las inversiones de tendencia, como agregar MACD, bandas de Bollinger, etc.

  2. Añadir funciones de optimización discretas para optimizar automáticamente los parámetros y adaptarse a más productos.

  3. Aumentar los algoritmos de aprendizaje automático, entrenar redes neuronales o modelos SVM en datos históricos para juzgar tendencias.

  4. Añadir más métodos de obtención de ganancias, como la obtención de ganancias móviles, parabólicas.

  5. Combinar productos relacionados para el comercio de diferencias o estrategias de estadísticas.

  6. Añadir predicción de estado basada en el modelo de Markov oculto para juzgar el régimen del mercado.

  7. Construir estrategias combinadas, como combinar con estrategias de promedio móvil para la gestión de múltiples estrategias.

  8. Explorar la optimización de las combinaciones de estrategias comerciales para encontrar los pesos óptimos de la cartera.

En resumen, la estrategia de Gandalf se puede ampliar y optimizar en múltiples dimensiones como el juicio de tendencias, optimización automática, gestión de riesgos, para hacer que la estrategia sea más robusta y confiable.

Conclusión

La estrategia cuantitativa de Gandalf es una estrategia simple pero efectiva basada en la comparación de precios para determinar tendencias. Combina las ideas de seguimiento de tendencias y stop loss rápido, y puede controlar los riesgos de manera efectiva. La lógica de la estrategia es clara y fácil de entender, los parámetros se pueden ajustar en función de las preferencias personales de riesgo. Pero también tiene cierta fluctuación de ganancias y riesgos de tenencia, que requieren una optimización y gestión adecuadas.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// The GandalfProjectResearchSystem strategy, as discussed in
// “System Development Using Artificial Intelligence”
// by Domenico D’Errico and Giovanni Trombetta
strategy("Gandalf Project Research System", overlay=true)

// Inputs
Quantity = input(0, title="Quantity (0 to auto calc)")
Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade")
MaxProfitCloses = input(6, minval=1, title="Max Profit Close")
MaxBars = input(8, minval=1, title="Max Total Bars")
Enter_Gap = input(-0.08, title="Distance from low price to place entry limit")
AltExit = input(true, title="Use Alt Exit")

// Calculate Order Quantity
Ncon = Single_Trade_Money / close

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
MedBodyPrice = (open + close) / 2.0
Weighted = (high + low + close + close) / 4.0
Median = (high + low) / 2.0

// Enter Conditions
Cond00 = strategy.position_size == 0
Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2]))
Entry01 = Cond00 and Cond01

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Exit Conditions
eCond01 = BarsSinceEntry - 1 >= MaxBars
eCond02 = MaxProfitCount >= MaxProfitCloses
eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]))
eCond04 = AltExit ? true : close - strategy.position_avg_price < 0
Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04))

// Entries
strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01)
 
// Exits
strategy.close("L1", Exit01)


Más.