[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 406

 
El Bid y el Ask contienen los valores en el momento en que se inicia la función Star(). La función MarketInfo() proporciona los valores reales (más recientes). La función RefreshRates() actualiza las variables Bid y Ask.
hoz:

1. Sí, estoy sobrecargado de trabajo, así que escribí una estupidez...

2. Largo es un término relativo. ¿Sugiere que midamos la velocidad del cálculo medio?

3. Si asumimos, como has escrito, que el terminal corresponde al último valor de la variable de datos de mercado, en nuestro caso, el precio, significa que el terminal actualiza las variables de entorno de mercado por sí mismo, si hay conexión con el servidor,

4. De esto se deduce que la función RefreshRates() es innecesaria. Pero no es así, porque la función está presente, lo que significa que los precios no se actualizan siempre, ¿verdad?

No estoy discutiendo, estoy preguntando, argumentando mi punto de vista. Tenga en cuenta que...


2. ¿Dónde ha visto esto y cómo ha llegado a esta sorprendente conclusión?

3. Sí. Imagínate, sólo mira la ventana de visión general del mercado, cómo los números rebotan sin cesar allí.

4. Las variables Bid y Ask son asignadas (por el terminal) con los valores que tenían cuando se ejecutó la función Start, no importa el tiempo de ejecución de la función, los valores en Bid y Ask serán los mismos. Por eso necesitamos RefreshRates() o deberíamos utilizar MarketInfo()

 
hoz:

Por lo tanto, si la solicitud es local y no al servidor, esta función debería funcionar al instante. Y ya se dijo que la función RefreshRates() puede no tener tiempo de actualizar los datos del entorno del mercado...

¿Dónde se dijo y por quién? No hay ningún problema.
 
hoz:


Así que si no hay un nuevo tick, el precio no cambiará... y por supuesto los precios anteriores seguirán siendo válidos. Así que no hay necesidad de complicar las cosas.

Y Vadim escribió en la parte superior que era necesario comprobar este punto. Pero no había lógica en sus palabras, ni tampoco argumentación. Es extraño... Entonces, inserto RefreshRates() en todas partes y en ese momento los últimos datos conocidos del terminal pasan a ser utilizables en lugar de los anteriores y todo va como debería. Siempre queRefreshRates() devuelva TRU. Si es Falso, significa que los datos no han cambiado y funciona con los precios anteriores... ¿Estoy razonando correctamente?

Resulta que no hace falta molestarse, basta con llamar aRefreshRates() y todo funcionará con datos reales...


Así es.
 
Roger:
has probado a romper;
El libro de texto nos dice que el operador
break; 

interrumpe las sentencias while, for o switch. En mi caso, no hay tales operadores. Hay una serie de sentencias if que deben interrumpirse en un momento determinado.

En cualquier caso, prueba esto:

if (условие)
        {                                          
        Opn_B=true;
        Cls_S=true;   
        break;                    
        } 
Informa de un error: 'break' - 'break' o 'continue' utilizado sólo dentro de algún ciclo.
 
Integer:
Bid y Ask contienen los valores en el momento en que se lanza la función Star(). La función MarketInfo() proporciona los valores reales (más recientes). La función RefreshRates() actualiza las variables Bid y Ask.


2. ¿Dónde ha visto esto y cómo ha llegado a esta sorprendente conclusión?

3. Sí. Imagínese, sólo tiene que mirar la ventana de visión general del mercado y ver cómo los números rebotan sin cesar.

4. Las variables Bid y Ask son asignadas (por el terminal) con los valores que existían en el momento de iniciar la función Start, no importa el tiempo de ejecución de la función, los valores en Bid y Ask serán los mismos. Por lo tanto, necesitamos RefreshRates() o utilizar MarketInfo().


1. Sí, es decir, después de start() tenemos 1 tick para que nos dé tiempo a calcular todo, de lo contrario, si no tenemos tiempo, tenemos que refrescar. Tiene sentido.

2. Lo has escrito textualmente:

Entero:

Si hace cálculos largos, puede utilizar RefreshRates().

3. A eso me refiero.

 
Integer:

¿Dónde, cuándo y quién lo ha dicho? No hay ningún problema.


Aquí en la página:

https://www.mql5.com/ru/forum/142582/page404 Vadim escribió esto,

Zhunko

RefreshRates(); // ¿Por qué este freno sin procesar el valor de retorno?

Eso es lo que me confundió, para ser honesto...

 
hoz:


Aquí en la página:

https://www.mql5.com/ru/forum/142582/page404 Vadim escribió esto,

Eso es lo que me confundió, para ser honesto...

Lo comprobaré el lunes. Puede que me equivoque.

==================================

De todos modos, sin RefreshRates() mis EAs no funcionarán. Los hago en bucle. Por lo tanto, RefreshRates() es obligatorio.

La imposición inicial de la historia se hace en base a este principio. Luego lo recargo periódicamente. De lo contrario, aparecen "huecos" en el historial con el que trabaja el Asesor Experto. No sé por qué ocurre. He intentado utilizar RefreshRates() para la paginación. No siempre funciona. He descrito el problema más arriba. A veces sólo entra el último compás.

Si el gráfico de un instrumento está abierto, siempre hay un historial en él. Nunca ha habido errores en este caso. El "agujero" aparecía cuando la carta del instrumento requerido no estaba abierta.

 
Forexman77:
El libro de texto informa que el operador

interrumpe las sentencias while, for o switch. En mi caso, no hay tales operadores. Hay una serie de sentencias if que deben ser interrumpidas en un punto determinado.

En cualquier caso, pruébalo así:

Se informa de un error: 'break' - 'break' o 'continue' utilizado sólo dentro de algún ciclo.

Si lo que buscas es GoTo, no existe este operador, pero como la práctica demuestra, no lo necesitas. Para poder recomendarle una solución, es necesario ver su objetivo. Muéstrame tu algoritmo en términos generales.

 
Roger:

Si buscas un operador de GoTo, no existe, pero como la práctica demuestra, no lo necesitas. Para poder recomendar una solución, hay que ver el objetivo. Muéstrame tu algoritmo en términos generales.

Gracias, ya he encontrado la forma de solucionar el problema.
 
Forexman77:
Gracias, ya he encontrado la forma de solucionar el problema.

Aquí... y mucha gente lo hace... Hacen una pregunta que puede ser de interés para otros principiantes. Entonces encuentran una solución y, en lugar de mostrarla, dicen: "Oh, muchas gracias a todos, he encontrado y hecho todo, no tenéis que tener miedo de mí toda la semana... " ... y creen que eso es el fin... Y la solución a este problema nunca se ha mostrado. Y da vueltas y vueltas... El siguiente vuelve con la misma pregunta.

Dime qué es tan terriblemente secreto en tu algoritmo y cómo resolverlo, que en cuanto se te pidió que mostraras el algoritmo en términos generales, tratando de ayudarte, inmediatamente te desmarcaste diciendo que todo es "grano de sal".

Entonces no hagas preguntas innecesarias si no piensas en los demás preguntantes... o encuentra tú mismo una solución (¡¡eh, bien por ti!!) y enséñala a los demás...

Razón de la queja: