[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 228

 
artmedia70:

Todo depende de si esta variable está disponible para todas las funciones de EA (bueno... no todas, pero algunas seguro). Entonces la variable es global.

Si sólo se utiliza en una función, entonces es local.

La pregunta es como "en qué agua poner las flores, en agua simple o endulzada"... Mientras adivinabas, las flores se convirtieron en una escoba... :))

:о)

Más o menos me imaginé esas reglas, pero en la práctica mis órdenes no funcionaban, así que mientras buscaba el problema, probé un montón de variantes y moví las variables a global, como la estática, pero todo funcionó, aunque tengo una función. Aunque todavía no estoy seguro de que esa fuera la razón. Estoy confundido y he decidido preguntar aquí. No has dicho nada sobre las variables estáticas. ¿Tal vez deberíamos hacerlos así? No entiendo, ¿cuando se vuelve a entrar en el inicio (en un tic, por ejemplo) se reinician las variables? ¿Y la estática no? Si es así, ¿mis garrapatas se convierten en cero?

PS Maldita sea, comenzó a programar de cerca, estoy escribiendo un grail....., si hay suficiente hierba...., parece que soy un habitual aquí ahora :))

 
drknn:
Si su empresa de corretaje tiene spreads flotantes, entonces es mejor utilizar la autodeterminación del tamaño del spread en la función de inicio del EA y establecer el deslizamiento en tres spreads, por ejemplo. Entonces el deslizamiento se convertirá en un cambio dinámico.
Es una gran idea, debería probarla. Gracias.
 
artmedia70:
Intenta hacer que el deslizamiento dependa de la volatilidad primero. En un mercado tranquilo será mínimo, en un mercado rápido se extenderá más.

Me temo que al trabajar en H1 será difícil calcular la volatilidad para una sola vela, hay que pensar en cómo calcularla.
 
Fam:

:о)

Esta teoría la entendí un poco, pero en la práctica mis órdenes no funcionaron y mientras buscaba el problema, probé muchas variantes y moví las variables a global como estáticas, pero todo funcionó, aunque la función es la misma. Aunque todavía no estoy seguro de que esa fuera la razón. Estoy confundido y he decidido preguntar aquí. No has dicho nada sobre las variables estáticas. ¿Tal vez deberíamos hacerlos así? No entiendo, ¿cuando se vuelve a entrar en el inicio (en un tic, por ejemplo) se reinician las variables? ¿Y la estática no? Si es así, ¿mis garrapatas se convierten en cero?

PS Maldita sea, comenzó a programar de cerca, estoy escribiendo el grial....., si la hierba es suficiente...., parece, soy un habitual aquí ahora :))


Una variable local es una variable declarada dentro de cualquier función. El ámbito de las variables locales es el cuerpo de la función en la que se declara la variable. Una variable local puede ser inicializada con una constante o una expresión, correspondiente a su tipo.

Una variable global es una variable declarada fuera de todas las funciones. El alcance de las variables globales es todo el programa. Una variable global no está localizada en ningún nivel. Una variable global sólo puede ser inicializada por una constante correspondiente a su tipo (pero no por una expresión). Las variables globales se inicializanuna sola vez antes de ejecutar las funciones especiales.

Si el control de un programa está dentro de una función, los valores de las variables locales declaradas en otra función no están disponibles. El valor de cualquier variable global está disponible desde cualquier función especial y de usuario.

Variable estática

A nivel físico, las variables locales se representan en la zona de memoria temporal de la función correspondiente. Hay una manera de colocar una variable, declarada dentro de la función, en la memoria permanente del programa. Para ello, al declarar una variable, se debe especificar el modificador static antes del tipo de variable:

Las variables estáticas se inicializan una sola vez. Cada variable estática puede inicializarse con una constante correspondiente a su tipo (a diferencia de una simple variable local, que puede inicializarse con cualquier expresión). Si no hay una inicialización explícita, una variable estática se inicializa con cero. Las variables estáticas se almacenan en una zona permanente de la memoria del programa ysus valores no se pierden al salir de la función. Al mismo tiempo, las variables estáticas tienen una limitación inherente a las variables locales: el ámbito de una variable estática sigue siendo la función dentro de la cual se declara esta variable, a diferencia de las variables globales cuyos valores son accesibles desde cualquier lugar del programa.

https://book.mql4.com/ru/variables/types

 
Todo se explica por sí mismo. Resulta que si se inventa una variable estática, cuyos valores no se pierden al salir de la función, entonces todas las demás variables perdemos los valores en cada tick? (si se llama a START en cada tic)
 
Fam:
Todo está muy claro. Resulta que si inventamos una variable estática, cuyos valores no se pierden al salir de la función, entonces todas las demás variables pierden sus valores en cada tic... (si se llama a START en cada tic)

Las variables locales se reinicializan en cada tic.

No te molestes, utiliza global para guardar los billetes y olvídate. O hacer una matriz (contabilidad de órdenes). Todas las matrices son estáticas por defecto.

 
Gracias, lo hice. Sólo quiero saber el resultado final. ¿Sabe cómo conseguir una alta calidad de simulación y un bajo desajuste de los gráficos? Parece que no depende de mí ni del programa, sino del mal tiempo (o del bueno, hay que averiguarlo). ¿Cómo puede el software no simular bien, no lo entiendo, el factor "humano"?
 
ZZZEROXXX:

Me temo que al trabajar en H1 será difícil calcular la volatilidad para una sola vela, tenemos que pensar en cómo calcularla.
La amplitud media a lo largo de 18 bares es clara
 

Hola a todos.

¿Pueden ayudarme con esta pregunta?

Estoy intentando obtener el valor exacto de apertura(Open[i]) o cierre(Close[i]) del par de divisas EURUSD con un valor de cinco dígitos después de cero, pero en respuesta siempre obtengo un valor redondeado.

 
¿redondeado a cuántos números después del cero? Si los números después del cero se eliminan del todo, estás intentando asignar un valor de precio a una variable entera, se necesita el doble.
Razón de la queja: