
Descripción general
La estrategia de comercio cuantitativa de la cuadrícula uniforme autoadaptativa es una estrategia cuantitativa basada en el concepto de comercio de la cuadrícula uniforme y la cuadrícula. La estrategia se establece mediante el cálculo de un promedio móvil simple de precios (SMA) como la línea central de la tendencia del mercado, y luego establece una cuadrícula de una cierta proporción debajo de la línea central.
Principio de estrategia
El principio central de la estrategia de comercio cuantitativo de cuadrícula uniforme auto-adaptativa se basa en la característica de la regresión del valor promedio de los precios de mercado. La estrategia se realiza a través de los siguientes pasos:
- Se calcula el promedio móvil simple (SMA) de los precios, que sirve como referencia intermedia del mercado. El código utiliza un promedio móvil de 300 horas, un período lo suficientemente largo como para filtrar las fluctuaciones a corto plazo.
- Basado en el promedio móvil, se establece un desvío ascendente y descendente (en este caso el 3%) y se determina el límite superior y inferior de las transacciones de la cuadrícula.
- De acuerdo con el número de líneas de la rejilla establecida por el usuario (máximo 15 líneas), distribuya uniformemente entre las líneas de la rejilla en los límites superior e inferior.
- El uso de una matriz de Boolean para registrar la posición de cada posición de la red para asegurar la ejecución exacta de la transacción.
- La lógica de la transacción:
- Cuando el precio está por debajo de una línea de la red y la posición no está en posición, se compra en la posición de la red.
- Cuando el precio está por encima de una línea de la grilla y la siguiente posición de la grilla más baja ya tiene una posición, se cancela la posición de la posición más baja.
La esencia de la estrategia es capturar la alta frecuencia de los movimientos de precios dentro de un rango determinado, para lograr “comprar bajo y vender alto”. La estrategia permite tener varias posiciones al mismo tiempo (hasta 15), cada una de las cuales corresponde a una línea de red diferente. Este diseño permite a la estrategia aprovechar más plenamente los movimientos de precios.
Ventajas estratégicas
Las estrategias de comercio cuantitativo de cuadrícula uniforme adaptativa tienen las siguientes ventajas significativas:
- La adaptabilidad: La estrategia de ajuste automático de la posición de la cuadrícula basado en promedios móviles, capaz de adaptarse a diferentes entornos de mercado y cambios en los niveles de precios.
- Descentralización del riesgoEl objetivo de la plataforma es: reducir el riesgo de una sola transacción mediante la diversificación de la inversión de capital a través de operaciones en varias ubicaciones de la red.
- Oportunidades de ganancias frecuentesEn un mercado convulso, las estrategias pueden capturar oportunidades de ganancias con frecuencia de pequeñas fluctuaciones.
- Una señal clara de entrada y salidaLas señales de negociación basadas en precios claros tocan las condiciones de la línea de la grilla, reducen el juicio subjetivo y mejoran la consistencia de la ejecución de la estrategia.
- Parámetros concisos y de fácil ajusteLa estrategia solo requiere ajustar los tres parámetros principales de la longitud de la media móvil, la tasa de desviación de la red y el número de redes para facilitar la optimización y la retroalimentación.
- La lógica es clara.Utiliza una estructura de arrays para almacenar precios de la red y estados de orden. La lógica del código es clara, fácil de entender y mantener.
- Apoyo visualLa estrategia proporciona una visualización de la línea de la rejilla que permite a los operadores observar de forma intuitiva las zonas de negociación y los posibles puntos de negociación.
Riesgo estratégico
A pesar de la buena concepción de la estrategia, existen los siguientes riesgos potenciales:
- Riesgo en el mercado de tendenciasEn un mercado de fuerte tendencia, los precios pueden seguir avanzando en una sola dirección, lo que hace que la estrategia siga abriendo posiciones y carezca de oportunidades de liquidación en un lado, lo que aumenta la ocupación de capital y puede generar grandes pérdidas. La solución es aumentar las condiciones de filtración de tendencia o establecer un límite máximo de tenencia.
- Sensibilidad de los parámetrosLa configuración de la longitud de la media móvil y la tasa de desviación de la red tienen un gran impacto en el rendimiento de la estrategia. Los parámetros inadecuados pueden causar que la red sea demasiado ancha (baja frecuencia de transacción) o demasiado estrecha (aumento de las falsas señales). Se recomienda determinar la combinación óptima de parámetros mediante una prueba de retroceso completa.
- Riesgos de la gestión de fondosLa estrategia permite un máximo de 15 posiciones simultáneas, y si no se controla razonablemente el porcentaje de fondos en cada transacción, esto puede conducir a una concentración excesiva de fondos. Se debe configurar el porcentaje de fondos fijos o el tamaño de las posiciones de ajuste dinámico por transacción.
- Punto de deslizamiento y efecto de las comisiones: Las estrategias de negociación de alta frecuencia son más sensibles a los puntos de deslizamiento y las comisiones, especialmente cuando la red es más estrecha. Se recomienda tener en cuenta estos factores de costo en la retroalimentación y ajustar el ancho de la red en consecuencia.
- Riesgo de liquidezEn un mercado de baja liquidez o en un período de gran volatilidad, puede ser difícil ejecutar operaciones a precios ideales, lo que afecta el rendimiento de la estrategia. Se debe elegir una variedad de operaciones con suficiente liquidez y considerar la configuración de protección de puntos de deslizamiento.
Dirección de optimización de la estrategia
Basado en el análisis del código, la estrategia se puede optimizar en las siguientes direcciones:
- Añadir filtro de tendenciasPara determinar la tendencia del mercado en combinación con otros indicadores técnicos (como MACD, RSI o DMI), suspender o ajustar la estrategia de negociación de la red en un mercado de tendencia evidente para evitar las pérdidas causadas por la negociación de desventaja.
- Ancho de la grilla dinámicaAjuste dinámico de la tasa de desviación de la cuadrícula según la volatilidad del mercado (como el indicador ATR), amplíe el espacio de la cuadrícula cuando aumenta la volatilidad y reduzca el espacio de la cuadrícula cuando disminuye la volatilidad, para adaptarse mejor a las diferentes condiciones del mercado.
- Introducción de un mecanismo de stop lossSe puede considerar el stop dinámico basado en el ATR o el stop proporcional fijo.
- Optimización de la gestión de fondosImplementar gestión dinámica de posiciones, ajustando dinámicamente la proporción de fondos en cada operación en función de los fondos de la cuenta, la volatilidad del mercado y la situación de las posiciones existentes, mejorando la eficiencia de la utilización de fondos y la capacidad de controlar el riesgo.
- Aumentar el tiempo de filtradoAnálisis de las características del mercado en diferentes períodos de tiempo, activación de estrategias en períodos de tiempo adecuados para el comercio de la red, reducción de la frecuencia de comercio o suspensión de operaciones en períodos de tiempo no adecuados.
- Confirmación de varios períodos de tiempoLa combinación de un ciclo de tiempo más largo y más corto para la confirmación de transacciones, reduce las falsas señales y las transacciones no válidas.
- Optimización de la eficiencia del código: La parte de visualización de líneas de la red en el código actual utiliza una frase de parcela repetida, que se puede utilizar para optimizar la estructura de la espiral, para mejorar la sencillez del código y la capacidad de mantenimiento.
Resumir
La estrategia de comercio cuantitativo de la rejilla de equilibrio auto-adaptativa es un sistema de comercio de la rejilla basado en el principio de la regresión de la equivalencia, que captura las oportunidades de comercio de la fluctuación de los precios mediante la configuración de la rejilla en torno a la media móvil. La estrategia está diseñada de forma sencilla, con pocos parámetros y fácil de ajustar, especialmente adecuada para aplicaciones en mercados de volatilidad.
Sin embargo, la estrategia puede estar expuesta a riesgos en mercados de fuerte tendencia, y se requiere el aumento de los filtros de tendencia y los mecanismos de parada para optimizar. Además, también vale la pena explorar direcciones de optimización como el ajuste dinámico de la anchura de la grilla, la mejora de la administración de fondos y el aumento de la confirmación de múltiples períodos de tiempo. A través de estas optimizaciones, la estrategia espera obtener un rendimiento más estable y excelente en diferentes entornos de mercado.
Esta estrategia proporciona un buen marco de base para los operadores cuantitativos experimentados que pueden personalizar y optimizar aún más de acuerdo con el estilo de negociación y las preferencias de riesgo de cada individuo, aprovechando la ventaja de la negociación en la red para capturar la volatilidad del mercado.
Código Fuente de la Estrategia
/*backtest
start: 2025-04-01 00:00:00
end: 2025-06-22 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy('Grid Trading Strategy', overlay=true, pyramiding=15)
// 输入参数设置
ma_length = input.int(300, '移动平均线长度', group='移动平均线条件', step=10)
std = input.float(0.03, title='网格上下偏差率', group='网格条件', step=0.01)
grid = input.int(15, maxval=15, title='网格线数量', group='网格条件')
// 计算移动平均线及网格边界
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)
// 创建网格价格数组
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
array.push(grid_array, lower_bound + grid_width * i)
// 创建订单状态布尔数组(只初始化一次)
var order_array = array.new_bool(grid, false)
// 执行交易逻辑
for i = 0 to grid - 1 by 1
// 买入逻辑:价格低于网格线且该位置未持仓
if close < array.get(grid_array, i) and not array.get(order_array, i)
buy_id = i
array.set(order_array, buy_id, true)
strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
// 卖出逻辑:价格高于网格线且下一个网格位置持仓
if close > array.get(grid_array, i) and i != 0
if array.get(order_array, i - 1)
sell_id = i - 1
array.set(order_array, sell_id, false)
strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))
// 可视化网格线
plot(grid > 0 ? array.get(grid_array, 0) : na, color=color.yellow, transp=10)
plot(grid > 1 ? array.get(grid_array, 1) : na, color=color.yellow, transp=10)
plot(grid > 2 ? array.get(grid_array, 2) : na, color=color.yellow, transp=10)
plot(grid > 3 ? array.get(grid_array, 3) : na, color=color.yellow, transp=10)
plot(grid > 4 ? array.get(grid_array, 4) : na, color=color.yellow, transp=10)
plot(grid > 5 ? array.get(grid_array, 5) : na, color=color.yellow, transp=10)
plot(grid > 6 ? array.get(grid_array, 6) : na, color=color.yellow, transp=10)
plot(grid > 7 ? array.get(grid_array, 7) : na, color=color.yellow, transp=10)
plot(grid > 8 ? array.get(grid_array, 8) : na, color=color.yellow, transp=10)
plot(grid > 9 ? array.get(grid_array, 9) : na, color=color.yellow, transp=10)
plot(grid > 10 ? array.get(grid_array, 10) : na, color=color.yellow, transp=10)
plot(grid > 11 ? array.get(grid_array, 11) : na, color=color.yellow, transp=10)
plot(grid > 12 ? array.get(grid_array, 12) : na, color=color.yellow, transp=10)
plot(grid > 13 ? array.get(grid_array, 13) : na, color=color.yellow, transp=10)
plot(grid > 14 ? array.get(grid_array, 14) : na, color=color.yellow, transp=10)