Prueba de los sistemas de previsión en tiempo real - página 52

 
grasn >> :

todavía menos de 1,55 :o) Veamos

Es muy probable ^_^, al menos si se miran las opciones

Opciones visuales de CME

 
grasn писал(а) >>

(1) Cómo initalizar correctamente un array multidimensional (todas sus dimensiones). Este código, según entiendo, será correcto para un array unidimensional y la primera dimensión encontrada en el multidimensional:

double memRow[];

ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);

¿Pero qué hacer con más dimensiones?

(2) ¿Cómo ampliar dinámicamente las matrices univariantes y multivariantes?

En este caso, el array memRow[] debería aumentar en algún valor en cada iteración, sin importar que sea 1 para simplificar. De manera similar, para el array 2D, debería crecer en dos direcciones por i y j - memRow[i][j]

(1) Esto es correcto y es exactamente lo mismo para múltiples dimensiones. La inicialización pone un valor en todos los elementos del array, independientemente de la dimensionalidad.

(2) Por desgracia, no funcionará. En MKL4 sólo se puede cambiar la dimensionalidad de la primera dimensión de un array multidimensional. Tal vez esto se corrija en MKL5.

 
NEKSUS_ >> :

Es muy probable ^_^, al menos si se miran las opciones

Opciones visuales de CME

¿De dónde han salido estos datos tan bonitos?

 
dentraf >> :

¿De dónde has sacado esos datos tan bonitos?

Los datos son muy ordinarios, y que sean bonitos o no depende del autor ^_^

 

grasn, si programar en MQL4 no es un fin en sí mismo, entonces ¿no sería mejor escribir las partes más importantes del proyecto, especialmente si requieren matrices multidimensionales para su normal implementación, en C y adjuntarlas como DLL? Funcionará más rápido y será más cómodo de depurar, y el código fuente será más legible (sin los líos con un montón de arrays, indexación indirecta y otras cosas, que tendremos que inventar en MQL, para saltarnos sus limitaciones).

 
grasn >> :

Preveo realizaciones (trayectorias), pero a la hora de tomar decisiones de negociación, me centro en las características de "frecuencia", por ejemplo, el valor medio de +/- las trayectorias más probables en el horizonte de previsión. Son más fiables en cuanto a los objetivos, pero el camino del precio hasta estos niveles puede ser muy enrevesado. Por supuesto, estoy trabajando en el segundo enfoque para estimar las zonas de inversión locales. En cuanto a la gestión de la movilidad como tal, no es tan simple, debe ser una tarea seria y separada.

Precisamente por esta razón, que es el tema de la conversación, estoy en proceso de traducir el código de MathCAD a MT. Desde el punto de vista estadístico, es conveniente que el periodo de prueba sea de al menos 6 meses (a ojo). Así que, publicaré el estado un poco más tarde.


Por cierto, tengo una pregunta de programación, porque estoy atascado (no soy muy programador):

(1) Cómo inicializar correctamente un array multidimensional (todas sus dimensiones). Este código, según entiendo, será correcto para un array unidimensional y la primera dimensión encontrada en el multidimensional:

double memRow[];

ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);


¿Pero qué hacer con más dimensiones?


(2) ¿Cómo ampliar dinámicamente las matrices univariantes y multivariantes?



for(i=0; i<=N-1; i++)

{

...

memRow[];

...

}


En este caso, el array memRow[] debería aumentar en algún valor en cada iteración, sin importar que sea 1 para simplificar. De manera similar, para el array 2D, debería crecer en dos direcciones por i y j - memRow[i][j].


Aparentemente, el direccionamiento de un array multidimensional tendrá que ser implementado como una función.


Por ejemplo, tienes una matriz unidimensional a[n]


entonces supongamos que queremos usarlo como un array tridimensional i,k,j


entonces el elemento (i,k,j) será direccionado en la matriz a, como a[i*3+k*2+j]


Y así sucesivamente...

 

a Yurixx

(1) Все правильно и для нескольких измерений точно так же. Инициализация прописывает одно значение во все элементы массива независимо от размерности.

(2) Por desgracia, eso no funcionará. En MKL4 sólo se puede cambiar la dimensionalidad de la primera dimensión de un array multidimensional. Tal vez se arregle en MKL5.

Me alegro de verte en nuestro refugio seguro :o). Y es bueno, que sea tranquilo a diferencia de las ramas vecinas, donde las pasiones humanas se desbordan, en un lugar parejo. Un pequeño resumen para una mejor comprensión. Supongamos que existe tal construcción:

double memRow[];

...

<какая то первая инициализация массива>

j=1

for(int i=0; i<=N-1; i++)

{

if(<какое то условие>)

{

ArrayResize(memRow, j+1);

<запись значений в расширенный массив>

...

}

}


Según he entendido, aumentará dinámicamente el array memRow[] cuando se dispare alguna condición. Por lo tanto, no sé la longitud de la matriz de antemano. ¿Lo he hecho bien?


a la comercializadora

Si programar en MQL4 no es un fin en sí mismo, entonces¿no sería mejor escribir las partes más importantes del proyecto, especialmente si requieren matrices multidimensionales para su implementación normal, en C y adjuntarlas como DLL? Funcionará más rápido y será más cómodo de depurar, y el código fuente será más legible (sin cosas intrincadas con un montón de arrays, indexación indirecta y otras cosas, que tendremos que inventar en MQL, para saltarnos sus limitaciones).

Mi programación en C/C++ es aún peor que en MQL. Y hace unos 15 años que no programo en general. Ahora quiero obtener el primer resultado, a partir del cual sacaré algunas conclusiones. Por supuesto, no obtendré ningún rendimiento, pero el sistema empezará a funcionar de alguna manera en modo automático. Al menos eso espero. :о)


Pero tienes razón, por supuesto, en el futuro voy a sustituir algunas funciones con dll, y tal vez todo el sistema.


al sol

Aparentemente, la apelación a un array multidimensional tendrá que ser implementada como una función.

Por ejemplo, tienes una matriz unidimensional a[n]

entonces, supongamos que queremos usarlo como un array tridimensional i,k,j

entonces el elemento (i,k,j) será direccionado en la matriz a, como a[i*3+k*2+j]

Y así sucesivamente...

Es una idea interesante, pero en cada iteración que lleve a un cambio de dimensión de la matriz requeriría realmente el reensamblaje (o reconstrucción) de toda la matriz. Sin embargo, es probable que sea factible. Gracias por la idea.

 
grasn писал(а) >>

Supongamos que existe tal construcción:

double memRow[];

...

<какая то первая инициализация массива>

j=1

for(int i=0; i<=N-1; i++)

{

if(<какое то условие>)

{

ArrayResize(memRow, j+1);

<запись значений в расширенный массив>

...

}

}

Según he entendido, aumentará dinámicamente el array memRow[] cuando se dispare alguna condición. Es decir, no conozco la longitud del array de antemano. ¿Lo he hecho bien?

Un pequeño consejo. No incrementar el array en 1 elemento en el bucle. Mantenga el número de elementos utilizados (llenos) en una variable adicional, y aumente el array en una docena de elementos (puede estimarlo fácilmente para su tarea), cuando se quede sin espacio. De este modo, se puede obtener una importante ganancia de rendimiento. // Aunque no estoy familiarizado con cómo se asigna la memoria para los arrays en el terminal. Si la memoria se asigna con alguna reserva para el caso de ampliación del array, entonces ArrayResize(memRow, j+1) se ejecutará muy rápidamente.

 
lea >> :

Un consejo. No incrementar el array en 1 elemento en el bucle. Mantenga el número de elementos utilizados (llenos) en una variable adicional y aumente la matriz en una docena de elementos (estimación para su propia tarea) cuando se quede sin espacio. De este modo, se puede obtener una importante ganancia de rendimiento. // Aunque no estoy familiarizado con cómo se asigna la memoria para los arrays en el terminal. Si la memoria se asigna con alguna reserva para el caso de ampliación del array, entonces ArrayResize(memRow, j+1) se ejecutará muy rápidamente.

Gracias, lo probaré, pero no puedo estimar qué es más óptimo. Por otro lado, para un array pequeño tampoco sabré su dimensionalidad y además en esta implementación tendré que duplicar el array, primero - el pequeño, y luego el grande, donde se acumulan los valores calculados. Pero es hora de experimentar, gracias por el consejo.

 

a Yurixx

Te sugiero que juegues a los buenos dedales, puedes usar cualquier estrategia y buscar en cualquier sitio :o) Pronóstico sobre el EURUSD M15 para 300 muestras (de lunes a miércoles incluido):

Opción 1:



Entropía del proceso: 13,84



Variante 2:


Entropía del proceso: 13,01



Opción 3:


Entropía del proceso: 14,36


¿Qué dedal vas a coger? :о)

Archivos adjuntos:
process_2.rar  5 kb