una estrategia de negociación basada en la teoría de las ondas de Elliott - página 273

 
<br / translate="no"> El cálculo de Hearst para 3000 barras en MQL4 me llevó unos 40 milisegundos. Probablemente nos referimos a cosas diferentes (palabra cálculo), así que si puedes enviarme el algoritmo de tu cálculo en general (preferiblemente) o el código en MathCad (si es necesario también puedo usar Matcad).

En cualquier caso, algo falla en los cálculos. Mi correo electrónico es rosh AT metaquotes DOT ru.


Puede que me haya expresado mal otra vez. No me refería a una muestra: 600 recuentos durante 20 minutos. Aproximadamente 500 iteraciones, es decir, primera muestra, para la zona muerta [0; 100], segunda [0; 101], luego [0; 102], [0; 103].... [0; 600]. Además, esto es MathCAD, y los productos de esta clase no son los mejores en términos de cálculos óptimos. Los desarrolladores introdujeron una optimización seria sólo en la versión 13 que estoy utilizando. Antes, incluso la solución numérica de una ecuación sencilla podía llevar mucho tiempo.

Mi cálculo del índice es ligeramente diferente al que se puede encontrar en las fuentes disponibles, aunque no me desvío de la ideología clásica de Hearst. En otras palabras, no puedo decir que calcule las estadísticas por su nombre. :о) El algoritmo en sí está escrito de forma óptima, se comprueba y se vuelve a comprobar.

P.D.: Muchas gracias por su disposición a ayudar. Es muy posible que sea necesario. Compartiré el algoritmo, si puedo implementar un mecanismo mejor en un futuro próximo. Tengo un par de ideas.
 
<br/ translate="no"> El cálculo de Hearst para 3000 barras en MQL4 me llevó unos 40 milisegundos. Lo más probable es que nos refiramos a cosas diferentes (la palabra cálculo), así que si puedes enviarme en palabras generales tu algoritmo de cálculo (preferiblemente) o código en MathCad (si es necesario también usaré Matcad).


Hay bastantes algoritmos. Encontré un cálculo del espectro de la singularidad en mi archivo. Se describe conceptualmente en muchos libros, por ejemplo, de Feder, Bozhokin y muchos otros. El número de iteraciones para una muestra es bastante decente. En particular, se realiza un proceso iterativo de exponenciación para estimar el "movimiento" aportado por cada intervalo, revelando diferentes tipos de comportamiento de la señal (por ejemplo, los intervalos "ahora" con mayores desviaciones de la tendencia aportan más "movimiento", etc.).

Puede leerlo todo, pero permítame recordarle la característica principal: el valor alfa, en el que F(alfa) alcanza el máximo, es el índice de Hurst generalizado (a veces, el parámetro de la línea del horizonte)


Cálculo para la muestra de 500 muestras. El índice de Hurst generalizado es igual a 0,6.


Y aquí está la propia serie (hasta la línea roja vertical) para la que se hizo el cálculo y lo que ocurrió después.



No me metí en el "negocio" (aunque es muy interesante) porque todavía no he descubierto algunas cosas, concretamente el método de eliminación de las tendencias locales. El uso de diferentes métodos da lugar a diferentes características de la serie. Otra peculiaridad es que requiere muestras decentes.

a Rosh, solandr

Tengo una pregunta para el futuro. Me preocupa el hecho de que el Asesor Experto estará "fuera de combate" durante un tiempo objetivamente largo y, por tanto, no participará en el proceso de supervisión de las órdenes actuales. Supongo que llamar al script tampoco servirá de nada - el Asesor Experto esperará hasta que se ejecute el script. Así que me pregunté si debería introducir una variable externa (o global, ¿qué es mejor?), por ejemplo:

extern string SIGNAL_FORECAST



Cuando recibo una señal de que no hay previsión por alguna razón, el Asesor Experto establece el valor apropiado de este parámetro con el requisito de su ejecución. En este momento, algún indicador (no hace previsiones pero tiene funciones de cálculo) lee esta variable todo el tiempo. En cuanto recibe una orden de ejecución de la previsión, inicializa el cálculo, pero antes escribe "cálculo iniciado" en la variable. Tras la ejecución "cálculo realizado". El Asesor Experto lee que el cálculo se realiza ....

¿Funcionará todo esto? Es decir, el Asesor Experto se verá teóricamente liberado de la carga de calcular todo?

 
Hola Sergey. Creo que la mejor manera de hacerlo es como paquete de Experto+Experto o Experto+Script. Creo que es preferible la segunda opción.
El Asesor Experto realiza los cálculos y guarda la bandera de la señal y los parámetros relevantes en un conjunto de variables globales al recibir la señal. El script abre las órdenes según las instrucciones recibidas y las ejecuta. El script se ejecuta en un bucle sin fin, cambiando la frecuencia de este mismo bucle en función de la situación. El Asesor Experto, por supuesto, se ejecuta después de la finalización de los cálculos, por la llegada de un tick.

El indicador no es adecuado aquí porque (hasta donde yo sé) sus cálculos se interrumpen cuando llega un nuevo tick.

En cualquier caso, he decidido seguir exactamente este esquema.
 
Los expertos, los scripts y los indicadores se calculan en MT4 en paralelo, es decir, al mismo tiempo con el reparto adecuado de los recursos disponibles de la CPU. Puede organizar 2 Asesores Expertos, uno de los cuales calculará durante varias horas, y el otro será un ejecutor, que a través de las variables globales del terminal recibirá los resultados del ciclo anterior de cálculos del primer Asesor Experto y realizará las operaciones comerciales necesarias. Ambos Asesores Expertos trabajarán independientemente (en términos de ejecución) el uno del otro. El primer Asesor Experto se iniciará durante unas horas a la llegada del primer tick, y el segundo se iniciará a cada nuevo tick, o, por ejemplo, con un periodo determinado (en caso de un bucle infinito con la pausa necesaria).
 
Hola Sergey. Creo que la mejor manera de hacerlo es como paquete de Experto+Experto o Experto+Script. Creo que es preferible la segunda opción. <br/ translate="no">.

La segunda variante tiene el inconveniente de tener que pasar manualmente este mismo script al gráfico en cada siguiente lanzamiento del terminal. Nos cansaremos de ello muy rápidamente. Es mejor utilizar la primera variante. También podrías organizar exactamente el mismo bucle infinito en la función start() que en el script.
 
a Yurixx, solandr

Muchas gracias por los consejos. Hace tiempo que no trabajo con MT, mientras investigaba olvidé que los scripts se pueden ejecutar en bucle y ni siquiera pensaba en dos Expert Advisors.

Pero por otro lado no se puede poner un probador en un astrolabio de este tipo, ¿verdad? Aunque, probablemente, no sea tan crucial.

Gracias de nuevo. :о)))
 
¿Y si se ejecuta un script desde el indicador? En este caso, la llegada de nuevos datos al indicador seguirá interrumpiendo los cálculos?
 
2 grasn:
Aun así, su tiempo de cálculo es demasiado largo. Creo que en esta situación sería mejor hacerlos fuera de MT (después de todo C es 17 veces más rápido que MQL4). No sé si Matcad puede generar código C, pero sería muy útil. El resultado se escribiría en un archivo y se leería desde el Asesor Experto. Este archivo puede ser una especie de instrucción paso a paso para el Asesor Experto (en general la transferencia de datos a MT no me ha interesado mucho hasta ahora, tal vez hay otras maneras). Una vez escrita la "instrucción" para un determinado intervalo de historia, puede utilizar el comprobador. Pero, ¿el probador soportará Expert Advisor+Expert o Expert Advisor+Script? Sospecho que no será así.
 
Por cierto, según tengo entendido, los cálculos no se interrumpen ahora. Se realiza sobre los valores de los datos al inicio del cálculo, tras lo cual el terminal salta a los datos frescos.
 
al Candidato

2 grasn:
Aun así, su tiempo de cálculo es demasiado largo. Creo que en esta situación sería mejor hacerlos fuera de MT (después de todo C es 17 veces más rápido que MQL4). No sé si Matcad puede generar código C, pero sería útil. El resultado se escribiría en un archivo y se leería desde el Asesor Experto. Este archivo puede ser una especie de instrucción paso a paso para el Asesor Experto (en general la transferencia de datos a MT no me ha interesado mucho hasta ahora, tal vez hay otras maneras). Una vez escrita la "instrucción" para un determinado intervalo de historia, puede utilizar el comprobador. Pero, ¿el probador soportará la combinación Expert Advisor+experto o Expert Advisor+script? Sospecho que no será así.


Así es, el tiempo de cálculo es bastante largo, me ocuparé de ello. MathCAD no puede generar código C, pero MathLab sí puede hacerlo (si no mienten, claro :o) Las pruebas en MT son necesarias para obtener resultados más o menos fundamentados desde el punto de vista comercial (y no pruebas de pronóstico múltiple en MathCAD, aunque sí positivas). Después de probar en MT pensaré qué hacer a continuación, incluyendo el traslado de los cálculos a un servidor separado, sobre lo que he escrito antes. Pero es como los escaladores, cuantos más nudos tiene la cuerda, peor es.