¿Cómo se algoritmiza la detección de los grupos de alimentación MA? - página 9
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Chicos, todavía no sé si es arriba o abajo.
Sí.
Qué cuantiles deben contarse, por ejemplo
{0,5} - mediana
{0,25, 0,5, 0,75} - cuartiles
{0,01, 0,02, ..., 0,99} - persentiles
¿Puede decirme algo?
Si paso un array por MathQuantile, ¿debo ordenarlo?
- Entendí que no importa si está ordenado o no.
Resulta que el índice no es rastreable a la matriz. El cuantificador se cuenta por el precio, y el índice de la matriz a la que se vincula el precio ...
¡Entiendo que esta matemática con una mediana o cuantía, no resuelve el problema satisfactoriamente!
Algo que no puedo...
Se devuelve una matriz de valores de los cuantiles especificados. No se conocen los índices de estos valores en la matriz no ordenada. La cuestión es la velocidad. Si esta función se calcula en cada barra y la matriz de valores es grande, el tiempo de optimización puede retrasarse. Yo iría por otro camino, pero depende de ti.
Si pasas un array por MathQuantile, ¿debe estar ordenado?
Cualquier permutación (ordenación, por ejemplo) no debería cambiar el resultado.
Se devuelve una matriz de valores de los cuantiles especificados. No se conocen los índices de estos valores en la matriz no ordenada. La cuestión es la velocidad. Si esta función se calcula en cada barra y la matriz de valores es grande, el tiempo de optimización puede retrasarse. Yo tomaría un camino diferente pero depende de ti.
¿Qué camino tomarías?
Alexey, ¡qué manera de resolver el problema)!
No sé qué tarea te has propuesto, pero en general, cuanto menos cálculos cíclicos, más rápido es el algoritmo. Hay un ciclo básico: es una pasada por todos los compases de la historia, no podemos escapar de él. Pero deberíamos intentar deshacernos del resto. Las funcionesMathQuantile, iHighest y otras sonen realidad bucles ocultos. Para acelerar, la información debe procesarse a medida que llega y almacenarse hasta el siguiente compás. En el cálculo actual, no se utilizan los datos históricos en bruto, sino los datos previamente preparados.
En el caso de encontrar medianas y otros cuantiles, es menos costoso mantener una matriz ordenada a medida que llega la información. He escrito el código anterior. Si tiene una "ventana deslizante" dentro de la cual se necesita la información, debe pensar en cómo eliminar los valores antiguos de la matriz de la misma manera rápida. Probablemente necesitarás otro array para almacenar los índices.
algoritmo de cálculo aproximado del mapa térmico (por ejemplo, para 100 bar):
para todos los Close de 1 a 100 :
Close[N]=X añadirá al mapa de calor la suma de la fila heatmap[Resolution(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}... hasta 100.
Lo que está entre corchetes son los "componentes" de los promedios, sólo resaltados.
Resolution(X) - "resolución", por ejemplo, 10 puntos Round((X-MinimalX)/Punto/10)
obtener un vector en el que los máximos locales que necesita encontrar.
Este vector es prácticamente un perfil de precios vertical
¿Podría ayudarme a calcular el mapa de calor? He probado con la mediana, el cuantil no da una buena indicación de los grupos de MA.
Si puede mostrar lo que hay que hacer, el cálculo( una barra a la vez).
Por favor, ¿podría ayudar a calcular el mapa de calor? probado a través de la mediana, cuantil no funciona para lograr la detección normal de los clusters de MA.
Si puede mostrar lo que hay que hacer, el cálculo( una barra a la vez).
Mostraré los resultados directamente, sin optimizaciones, matrices y matemáticas complicadas:
1. Para la barra actual calculamos todas las MAs por separado. Obtenemos la matriz SMA[N] donde se encuentran los valores de los máximos hasta N.
2. creamos un mapa de calor[M] que cubre los precios desde el mínimo=1,00000, cada elemento es responsable de (por ejemplo) 10 puntos.
3. Rellenamos este mapa de calor "en bruto": tomamos cada valor ma y vemos a qué celda se refiere. índice=(SMA[i]-mínimo)/resolución. Aumentamos el valor de esta celda hetmap[index]+=1.0
Puede enviar el resultado a CSV y pensar
4. Suavizar los valores "crudos" del mapa de calor: iniciar el array smooth[] y leer el valor medio smotch[i]=valor medio del mapa de calor desde la ventana i hasta la ventana i+ inclusive
5. Los máximos locales de smootch indicarán un "grupo de alimentación". Espero que sepas buscar los máximos :-)
los puntos 1-5 pueden ser descompuestos matemáticamente y calculados mucho más rápido, con un mínimo de bucles y matrices adicionales, pero no necesariamente más obvio