¿Un error en la función OrderSend()? - página 6

 
tara:

¿Qué es entonces Static? Es más bien Fatalic...
¿Por qué no funciona la estática? Funciona en todas partes. Fatalic, naphthalic, ¡de ninguna manera! Siempre estoy buscando defectos en mí mismo y me ofendo.
 
borilunad:
¿Por qué no funciona la estática? Funciona en todos los sitios a los que voy. ¡Fatalik, naphthalik, no puede ser! ¡Siempre estoy buscando errores en mí mismo y me ofendo!
Como no prevé la inicialización de variables al reiniciar el programa, DEBE.
 
Por cierto, todos los datos estáticos en MQL4 tienen la misma enfermedad. Recordatorio: todas las matrices son estáticas:)
 
tara:
Como no prevé la inicialización de variables al reiniciar el programa, DEBE.
Correcto, como en cualquier función, incluso una local, la estática se presenta primero con algún valor, luego se compara. Aunque al principio lo utilizaba sin tener ni idea, comprobándolo en la acción, y luego viene la comprensión. Es imposible entenderlo todo a la vez, y no todo puede arreglarse tan fácilmente de una vez. :) No toco las matrices, ¡son demasiado trabajo para mí!
 
granit77:
¿Hay algún otro programador que pueda confirmarlo? Un voto no sería suficiente.
Víctor, no soy programador, por desgracia. Soy un aficionado...
 
tara:

Puedes simplemente cambiar algún parámetro. La reacción se producirá sólo después del primer tick de una nueva barra en la TF establecida.

Pero tú mismo te has preguntado por qué el funcionamiento del EA es inexplicable en TF superior:)



Me pregunto si hay conexión entre el primer tick de una nueva barra y el probador... No lo veo. Un probador es un probador. Y un gráfico... es un gráfico... (No me refiero a un probador, sino a la misma demo o real).

Además, el libro de texto dice... "Si no hay una inicialización explícita, una variable estática se inicializa por cero".

Así que no hay necesidad, como dijiste, Alexey, en INIT de asignar el valor 0 a la variable lastBarTime. Será cero cuando se inicie el programa.

 
hoz:


Me pregunto si hay conexión entre el primer tick de una nueva barra en el TF de trabajo y el probador... ...bueno, yo no lo noto... Un probador es un probador. Y un gráfico... es un gráfico... (No me refiero al probador, sino a la misma demo o real).

Además, el libro de texto dice. "Si no hay una inicialización explícita, una variable estática se inicializa por cero".

Así que no hay necesidad, como dijiste, Alexey, de asignar el valor 0 a la variable lastBarTime en INIT. Será cero cuando se inicie el programa.


No, no lo hará. Es un error :)
 

Aunque este punto(del libro de texto) no me queda muy claro:

" Las variables estáticas se inicializan una vez antes de llamar a la función especializada init(), es decir, el valor de esta variable no se pierde al salir de la función, dentro de la cual se declara una variable estática.

¿Qué tiene que ver esto con "antes de llamar a la función especial init()" y después de "es decir, cuando se sale de una función de usuario (a juzgar por el contenido) en la que se declara una variable estática? "

Una función en la que se declara una variable estática puede estar al final de un programa... es decir, al final del código o en otro lugar. La funcióninit() se ejecuta una vez justo antes de que se inicie el programa. Resulta ser incoherente. ¿Cómo se puede inicializar una variable antes de la funcióninit() ?

 
hoz:

Aunque este punto(del libro de texto) no me queda muy claro:

"Las variables estáticas se inicializan una vez antes de llamar a la función especializada init(), es decir, el valor de esta variable no se pierde al salir de la función, dentro de la cual se declara una variable estática.

¿Qué tiene que ver esto con "antes de llamar a la función especial init()" y después de "es decir, cuando se sale de una función de usuario (a juzgar por el contenido) en la que se declara una variable estática? "

Una función en la que se declara una variable estática puede estar al final de un programa... es decir, al final del código o en otro lugar. La funcióninit() se ejecuta una vez justo antes de que se inicie el programa. Resulta ser incoherente. ¿Cómo se puede inicializar una variable antes de la funcióninit() ?

Pues bien, si le interesa, todos los modos de gestión de la memoria utilizados actualmente se implementaron por primera vez en PL/1. Hay cuatro: automático, dinámico, estático y basado. C vino después y adoptó plenamente estas normas.

 
Ahora me voy a la cama:)