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

 
Valeriy Yastremskiy #:

La pregunta no se refería a eso. La función de Dimitri no devuelve un argumento por referencia. ¿Por qué utilizar un argumento por referencia? Sí, las áreas locales podrán declarar una variable en sí mismas y obtener una respuesta a la variable después de llamar a la función.

¿Y eso es todo?

Si una variable se declara globalmente, no debe haber variables con el mismo nombre. Si una función es llamada desde varias funciones, como en tu ejemplo, puedes olvidarte de ella y declarar una variable con el mismo nombre en cada función. Esto es conveniente...

 
Valeriy Yastremskiy #:

La pregunta no se refería a eso. La función de Dimitri no devuelve un argumento por referencia. ¿Por qué utilizar un argumento por referencia? Sí, las áreas locales podrán declarar una variable en sí mismas y obtener una respuesta a la variable después de llamar a la función.

¿Y eso es todo?

1. Así que la función internamente puede cambiar y devolver cualquier variable que se le pase, no una variable global específica.

2. Para que la función no copie ninguna variable de gran tamaño en la función - un array, una estructura, una cadena de texto...

 
Alexey Viktorov #:

Si una variable se declara globalmente, no debe haber variables con el mismo nombre. Si llamas a una función desde varias funciones, como en tu ejemplo, puedes dejarla sola y declarar una variable con el mismo nombre en cada función. Es conveniente...

Es decir, sólo se trata de una cuestión de localización de uso para áreas locales con los mismos nombres de argumentos por referencia. Bueno, no mucho, pero hay algo. Pensé que había algo más.

 
JRandomTrader #:

1. Para que la función internamente pueda cambiar y devolver cualquier variable que se le pase, no una variable global específica.

2. No copiar en una función alguna variable de gran tamaño - un array, una estructura, una cadena de texto...

La pregunta era sobre otra cosa. En el tercer ejemplo, su primera respuesta. 2й. No creo que sea una cuestión de poder cambiar los campos o los elementos de la entidad. En la mayoría de los casos no son constantes, por lo que el argumento de la referencia es obvio para la mayoría de los casos. PERO si la entidad es constante, entonces... pero los desarrolladores decidieron no molestarse.

 
Valeriy Yastremskiy #:

Es decir, sólo se trata de localizar el uso para las zonas locales con los mismos nombres argumentales por referencia. Bueno, no mucho, pero hay algo. Pensé que había algo más.

Estas son sólo las cosas con las que sé que me siento cómodo. Seguro que hay otras ventajas, como la redundancia de memoria o algo más. ¿Por qué no le preguntas directamente a Fedoseev?
 
Alexey Viktorov #:
Eso es lo que conozco, lo que me resulta cómodo. Seguro que hay otras ventajas, como la redundancia de memoria o lo que sea. ¿Por qué no le preguntas directamente a Fedoseev?

Diferente nivel de percepción)) Tal vez peco de obvio, las cosas obvias son muy difíciles de transmitir a otros))))

 
Valeriy Yastremskiy #:

Se puede hacer con un solo argumento x declarando r en ámbito global.

Se puede prescindir de los argumentos declarando x en el ámbito global. Además, es posible no devolver el resultado, sino escribirlo en una variable global. Pero llevará a la confusión del código, a la necesidad de recordar qué y dónde se almacena, y con el aumento del código del programa convertirá la vida del programador en un infierno.
 
Buenas tardes. ¿Podría decirme qué es lo que falta? Mi propósito es cerrar las primeras operaciones con un volumen mínimo. Actualmente estoy seleccionando sólo órdenes con un volumen de 0,01.
     for(int i=0; i<OrdersTotal(); i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
       if(OrderLots()==0.01){ 
     OrderClose(OrderTicket(),0.01,OrderType()==OP_BUY?Bid:Ask,3,clrWhite);return;}}}    }

Si no es a partir de 0,01 entonces tengo que seleccionar órdenes a partir de 0,02 y así sucesivamente. ¿Cómo debe redactarse este punto?

 
Rustam Bikbulatov un volumen mínimo. Mi EA está seleccionando actualmente sólo órdenes con un volumen de 0,01.

Si no es a partir de 0,01 entonces tengo que seleccionar órdenes a partir de 0,02 y así sucesivamente. ¿Cómo se escribe este punto?

if(OrderLots()==0.01)

¿Realmente no lo ves?

"¿Cómo comprobar este punto?" - hay que calcular el valor mínimo del lote 0,01.

Quizás, el deslizamiento debería especificarse en puntos, es decir, 3*Punto() y no 3

 
Rustam Bikbulatov un volumen mínimo. Mi robot está seleccionando actualmente sólo las órdenes con un volumen de 0,01.

Si no es a partir de 0,01 entonces tengo que seleccionar órdenes a partir de 0,02 y así sucesivamente. ¿Cómo debe redactarse este punto?

Necesitas 2 ciclos: debes conseguir el volumen mínimo en el primero y cerrarlo en el segundo. Y también hay que tener en cuenta que al cerrar las órdenes, éstas se desplazan 1 posición, por lo que hay que hacer un ciclo desde la posición máxima hasta la 0.