Type/to search
8
Follow
1370
Followers
Sistema de comercio de media móvil adaptable de moneda digital y análisis del algoritmo KAMA, basado en el software de comercio cuantitativo del inventor
Original
Created 2019-07-06 16:21:15  Updated 2023-10-24 21:42:44
 1
 6514

img

Introducción al KAMA de media móvil adaptativa

Como sugiere su nombre, la media móvil adaptativa (KAMA) pertenece a la categoría de media móvil, pero a diferencia de la media móvil tradicional, es muy "inteligente". Sabemos que las medias móviles ordinarias tienen muchas deficiencias. Por ejemplo, la media móvil de corto plazo está cerca de la tendencia de precios y es muy sensible, pero es fácil generar señales falsas; la media móvil de largo plazo es muy precisa al juzgar tendencias, pero a menudo el mercado tarda un tiempo en reaccionar.

La “inteligencia” de KAMA radica en su capacidad de ajustar de forma autónoma su sensibilidad en función de las condiciones actuales del mercado, es decir, la volatilidad. Su manifestación es: en un mercado volátil, los cambios en KAMA se desaceleran significativamente; cuando aparece una tendencia, reacciona rápidamente. En el trading real, su ventaja es que puede reducir los costos de transacción causados ​​por el "desorden diario" y le permite subir a bordo a tiempo cuando el mercado despega.

KAMA en el gráfico

img

Método de cálculo de KAMA

  • Dirección (DIR) = Precio de cierre - Precio de cierre hace n días
  • Volatilidad (VIR) = suma(abs(precio de cierre - precio de cierre del día de negociación anterior), n)
  • Eficiencia (ER) = Dirección / Volatilidad
  • Rápido = 2 / (n1 + 1)
  • Lento = 2 / (n2 + 1)
  • Suavidad (CS) = Eficiencia * (Rápido - Lento) + Lento
  • Coeficiente (CQ) = Suavizado * Suavizado
  • KAMA = Promedio ponderado exponencial (promedio móvil dinámico (precio de cierre, coeficiente), 2)

Entre ellos, n, n1 y n2 son todos parámetros de período. De forma predeterminada, n son 10 períodos, n1 son 2 períodos de corto plazo y n2 son 30 períodos de largo plazo. Este es también un conjunto de parámetros reconocidos por Perry Kaufman, el autor de KAMA. n se utiliza para la eficiencia del cálculo de la dirección y la volatilidad, n1 y n2 son los períodos de la media móvil rápida y la media móvil lenta. En teoría, cuanto mayor sea la Parámetro n1, más suave será el KAMA.

El método de cálculo de KAMA es: primero calcular la dirección (DIR) y la volatilidad (VIR), y luego calcular la eficiencia en función de la relación entre ambas. La eficiencia (ER) es una medida del grado de cambio de precio y se calcula simplemente: dirección / volatilidad. El resultado del cálculo está entre 0 y 1. Cuando el valor ER está más cerca de 0, indica que el mercado se encuentra en un estado volátil. Cuando el valor ER está más cerca de 1, indica que el mercado se encuentra en un estado de tendencia.

Una vez calculada la eficiencia (ER), la constante de suavizado (CS) se puede derivar combinando el promedio móvil rápido y el promedio móvil lento: eficiencia * (rápido - lento) + lento. CS representa la velocidad del movimiento de la tendencia. Según la fórmula de cálculo de CS, podemos encontrar que el cambio de CS es siempre proporcional al cambio de ER.

Luego se calcula el coeficiente (CQ) en función de la potencia de suavizado, con el objetivo de hacer que los parámetros del ciclo lento desempeñen un papel más importante en el cálculo, lo que también es un enfoque más conservador. La suavización final de KAMA está determinada por el coeficiente (CQ). En el cálculo de KAMA, el coeficiente (CQ) determina los parámetros del período de suavización de las dos últimas medias móviles, a saber: media ponderada exponencial (media móvil dinámica (precio de cierre, coeficiente), 2).

Cómo utilizar KAMA

Aunque el método de cálculo de KAMA es muy complicado, su uso es similar al de los promedios móviles ordinarios. En aplicaciones prácticas, no solo puede determinar tendencias del mercado, sino que también se puede utilizar para puntos de compra y venta precisos. Debido a que es muy "inteligente", se puede utilizar en muchas estrategias comerciales e incluso vale la pena probarlo en monedas digitales.

  • Cuando el precio sea mayor que KAMA y KAMA apunte hacia arriba, abra una posición larga.
  • Cuando el precio es menor que KAMA y KAMA se mueve hacia abajo, se abre una posición corta.
  • Cuando el precio es menor que KAMA, o KAMA se mueve hacia abajo, se cierran las posiciones largas.
  • Cuando el precio es mayor que KAMA, o KAMA se mueve hacia arriba, la posición corta se cierra.

Construyendo una estrategia comercial basada en KAMA

Paso 1: Calcular KAMA
¡Aviso! En la esquina superior izquierda, seleccione el lenguaje de programación:My语言. Ya existe un KAMA listo para usar en la biblioteca talib, pero solo tiene un parámetro externo (n) período, y n1 y n2 tienen valores predeterminados de 2 y 30. Las estrategias de este artículo son solo de referencia. Los amigos con buenas habilidades prácticas también pueden escribir las suyas. Luego, el lenguaje My también se puede mezclar directamente con el lenguaje JavaScript. Preste atención al siguiente código:

%% // My语言内JavaScript的标准格式 scope.KAMA = function() { var r = _C(exchange.GetRecords); // 获取K线数组 if (r.length > 140) { // 过滤K线长度 var kama = talib.KAMA(r, 140); // 调用talib库计算KAMA return kama[kama.length - 2]; // 返回KAMA的具体数值 } return; } %% // My语言内JavaScript的标准格式

Paso 2: Calcular las condiciones comerciales y realizar un pedido

%% scope.KAMA = function() { var r = _C(exchange.GetRecords); if (r.length > 140) { var kama = talib.KAMA(r, 140); return kama[kama.length - 2]; } return; } %% K^^KAMA; // 把KAMA打印到图表上 A:CLOSE; // 把收盘价打印到图表上 K > REF(K, 1) && CLOSE > K,BK; // 开多 K < REF(K, 1) && CLOSE < K,SK; // 开空 K < REF(K, 1) || CLOSE < K,SP; // 平多 K > REF(K, 1) || CLOSE > K,BP; // 平空

Paso 3: Establezca el método de filtrado de señales de estrategia

%% scope.KAMA = function() { var r = _C(exchange.GetRecords); if (r.length > 140) { var kama = talib.KAMA(r, 140); return kama[kama.length - 2]; } return; } %% K^^KAMA; A:CLOSE; K > REF(K, 1) && CLOSE > K,BK; K < REF(K, 1) && CLOSE < K,SK; K < REF(K, 1) || CLOSE < K,SP; K > REF(K, 1) || CLOSE > K,BP; AUTOFILTER; // 启用一开一平信号过滤机制

Backtesting de estrategia

Para acercarnos más al entorno de trading real, utilizamos un deslizamiento de 2 saltos para las posiciones de apertura y cierre para realizar pruebas de estrés durante el backtesting. El entorno de prueba es el siguiente:

  • Intercambio: BitMEX
  • Tipo de mercado: XBTUSD
  • Instrumento de negociación: XBTUSD
  • Hora: 1 de julio de 2017 ~ 1 de julio de 2019
  • Ciclo de la línea K: diario
  • Deslizamiento: 2 saltos para posiciones de apertura y cierre

Entorno de prueba
img
Detalles de ingresos
img
Curva de financiación
img

A juzgar por los resultados de las pruebas retrospectivas anteriores, esta sencilla estrategia de KAMA realmente estuvo a la altura de las expectativas. Incluso en el mercado súper bajista de las monedas digitales en 2018, la curva de capital no mostró un gran retroceso y el mercado se encontraba en un período volátil a largo plazo. Abrir y cerrar posiciones de ida y vuelta provocará pérdidas innecesarias. Al mismo tiempo, también tuvo un buen desempeño en el mercado alcista en 2019.

Código fuente de la estrategia

Haga clic para copiar el código fuente completo de la estrategia, basado en mi idioma, adecuado para futuros de materias primas y monedas digitales

Resumir

Una estrategia excelente que se pueda poner en práctica debe haber sido refinada y perfeccionada una y otra vez. Las estrategias de este artículo aún tienen mucho margen de optimización y mejora, como la adición de ciertas condiciones de filtrado, la toma de ganancias activa y el stop loss. condiciones de pérdida, etc. Como un tipo de media móvil, KAMA hereda las ventajas y desventajas de las medias móviles ordinarias y las mejora al mismo tiempo. En un mercado impredecible, incluso si se fija un "mejor parámetro", es difícil adaptarse a las condiciones futuras del mercado. Por lo tanto, este método de seguir la tendencia y cambiar con las condiciones del mercado puede ser una mejor opción.

Related Recommendations
Comment
All comments (1)

    大神,求教一下,kama最后那一步的代码怎么写啊?KAMA = 指数加权平均(动态移动平均(收盘价, 系数), 2)就是这个。我搜了一下有的说是写成KAMA = 前一个KAMA + 系数 * (当前价格 - 前一个KAMA)。问题是计算最开始的第一个KAMA的值的时候,是没有“前一个KAMA”的。求指点。

    5 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)