Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1450

 
Hola a todos, la pregunta es la siguiente:
¡Estoy haciendo un netmaker con martin, pero no uno a la vez, sino uno general (todas las órdenes y parrillas abiertas como señales, no una a la vez)! ¡Me encontré con un problema .... cuando una orden o su rejilla se activa, todo funciona bien, pero cuando una orden o su rejilla se abre y luego al mismo tiempo (o más tarde) otra orden y su rejilla se abre, el martin comienza a continuar la primera rejilla! ¿Cuál puede ser el problema?
 
Artyom Trishkin:

De acuerdo. Pero sólo puedo mirarlo en mi tiempo libre: trabajo, casa, familia, gato e hijos/nietos... Suegra, sí...

Sí, los gatos...

Hoy me he ido a un sitio para hacer una camada.

Una preciosa niña escocesa a la que le gusta dormir de espaldas :)

 
Artyom Trishkin:

Bueno, mira el código - Vitaly lo publicó directamente

Mi pregunta no tenía nada que ver con el código de Vitaly. Ahora lo he descubierto yo mismo... resulta que el código de la biblioteca controla la profundidad de recálculo en sí misma. Es decir, en la primera ejecución se recalcula todo el buffer, y en las siguientes sólo la cantidad justa... Eso es lo que quería saber de ti. Soy así de perezoso. Es más fácil preguntar que resolverlo yo mismo... Pero a veces tengo que ............

 
Alexey Viktorov:

Mi pregunta no tenía nada que ver con el código de Vitaly. Ahora lo he descubierto yo mismo... resulta que el código de la biblioteca controla la profundidad de recálculo en sí misma. Es decir, en la primera ejecución se recalcula todo el buffer, y en las siguientes sólo la cantidad justa... Eso es lo que quería saber de ti. Soy así de perezoso. Es más fácil preguntar que resolverlo yo mismo... Pero a veces tengo que ............

Por lo tanto, el código de Vitali duplicó esta función de SB, que usted pidió - y todo está a la vista - una mirada es suficiente para entender la respuesta a su pregunta.

 
Artyom Trishkin:

Así que el código de Vitaly duplicó esta función de la SB por la que preguntaste - y todo está ahí a la vista - sólo un vistazo es suficiente para entender la respuesta a tu pregunta.

¿Viste la pequeñez del original?

 
Vitaly Muzichenko:

¿Has visto lo duro que es el original?

Realmente no lo comparé. En mi opinión, hay una pequeñez en ambos archivos. Y la lógica no está nada clara - cuando la condición está vacía y llenar el buffer con un valor vacío se saca de los paréntesis de la condición. Bueno, mi trabajo es llegar a un sobresaliente. No me importa cómo funcione: que sea como es.

 
Artyom Trishkin:

No he hecho muchas comparaciones. Creo que es un lío en ambos archivos. Y la lógica no está nada clara - cuando la condición está vacía y llenar el buffer con un valor vacío se saca de los paréntesis de la condición. Bueno, mi trabajo es llegar a un sobresaliente. Lo dejaré como está.

Mi tarea es entender a partir de este código cómo reemplazariMAOnArray

Es decir, hacer el menor número posible de cambios en el código existente y hacer
 
Artyom Trishkin:

Así que en el código de Vitaly se duplicó esta función de SB que usted estaba preguntando - y todo está ahí a la vista - sólo se necesita una mirada para entender la respuesta a su pregunta.

Bueno, lo agarraste... No sé cómo hacerlo. Tengo que revisar todo el código a fondo con la comprensión.

 
Vitaly Muzichenko:

Mi tarea es entender cómo reemplazariMAOnArray en este código.

Es decir, hacer el menor número posible de cambios en el código existente y utilizarlo para

Tratando de entender esta pregunta, veo la siguiente situación.

En su código dice esto

buf_3[i] = iMAOnArray(Array_1, 0, per, 0, MODE_SMMA, i);

y en la documentación

double  iMAOnArray( 
   double       array[],          // массив 
   int          total,            // количество элементов 
   int          ma_period,        // период 
   int          ma_shift,         // сдвиг средней 
   int          ma_method,        // метод усреднения 
   int          shift             // сдвиг 
   );
iMAOnArray

total

[in] Número de elementos a calcular. 0 significa todos los elementos de la matriz.

Resulta que cada vez que se llama a la función, se recalcula todo el array. Esto es exactamente lo que le pregunté a Artem... Pero resulta que mql5 proporciona todo para la aceleración, mientras que en mql4 tienes que ocuparte tú mismo. Pero no veo ninguna información sobre cómo hacerlo correctamente.


En cuanto a rehacerlo con cambios mínimos, te equivocas. Es más fácil tomar el algoritmo y rehacerlo.

 

Buenas tardes, por favor ayúdenme a entender...

   HighForFutureSession=MathMax(high[rates_total-1],high[rates_total-2]);

MathMax devuelve el máximo de dos valores numéricos, es decir, devuelve el máximo valor numérico de dos matrices idénticas high[rates_total] con una diferencia de -1 y -2 barras?

En palabras simples: en la primera matriz 12345 y en la segunda 1234 la función devolverá 5?