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

 
Alexey Viktorov #:
¿Por qué esperar hasta mañana? Si eres demasiado perezoso para buscar en las especificaciones, ejecuta el script a través de todos los símbolos de interés y encuentra una coincidencia para la moneda de margen y la moneda de beneficio.
No he comprobado todo antes de escribir, pero no he encontrado ninguna coincidencia...

Hoy estoy un poco ocupado.


Taras Slobodyanik #:

Bueno, el punto es rápido - tomó el código de la moneda, hizo una búsqueda en una matriz lista que se actualiza cuando se abre un comercio.

Todo es difícil de marcar en una matriz una vez

 
Yevhenii Levchenko variable estática var del método X::doJob(). Hay una clase U que crea un objeto de tipo X, hace algún trabajo y luego lo destruye. Y esto ocurre periódicamente. Pregunta: ¿cuándo se borra la variable var?


Vivirá para siempre.

 
Koldun Zloy #:

Vivirá para siempre.

¿Mientras el objeto U esté vivo? ¿O hasta que se reinicie el terminal? A grandes rasgos, ¿después de qué se borra?

 
Yevhenii Levchenko #:

¿Mientras el objeto U esté vivo?

No, es posible que ni siquiera se cree la instancia de la clase, sino que se asigne memoria al campo estático de la clase y se inicialice.... Por cierto, tu ejemplo, en mi opinión, no debería compilar, la inicialización de campos estáticos debería estar fuera de la descripción

Yevhenii Levchenko #:

¿Si hasta el terminal está sobrecargado? A grandes rasgos, ¿después de qué se retira?

El terminal no tiene nada que ver, el tiempo de vida es el mismo que para las variables declaradas globalmente o para las variables estáticas regulares - la memoria se asigna cuando se carga el programa MQL y se libera cuando se descarga el programa MQL

 
Igor Makanu #:

No, es posible que ni siquiera se cree la instancia de la clase, sino que se asigne memoria al campo estático de la clase y se inicialice.... Por cierto, tu ejemplo, en mi opinión, no debería compilar, la inicialización de campos estáticos debería estar fuera de la descripción.

¡Bien! Parece que se compila...

Igor Makanu #:

El terminal no tiene nada que ver, el tiempo de vida es el mismo que para las variables descritas globalmente o las variables estáticas regulares - la memoria se asigna en el momento de cargar el programa MQL y se libera al descargar el programa MQL

Es decir, si está todo dentro del EA, la variable se quedará en memoria hasta OnDeinit() del EA?

 
Yevhenii Levchenko #:

Parece que Norm! compila...

Entonces, si todo está dentro de EA, la variable se queda en memoria hasta OnDeinit() de EA?

Las variables estáticas se destruyen después de OnDeinit().

 
Koldun Zloy #:

Las variables estáticas se destruyen después de OnDeinit().

¡Bien! Gracias :)

 
La ayuda en la elección de un corredor, donde el mejor comercio y la retirada no debería ser un problema.
 
dryun777 #:
Ayuda en la elección de un corredor, donde es mejor para el comercio y la retirada no sería un problema ... Gracias

En este recurso, nombrar a un corredor equivale a una discusión. Y la nana no duerme y amenaza con represalias. Así que mira por ti mismo...

 
Alexey Viktorov #:

Valeri tiene la dirección correcta del pensamiento. Pero no entiendo por qué tenemos que definir la moneda que buscamos en las monedas de orden en cada iteración del ciclo? Y creo que es más fácil tomar la moneda del margen y la moneda del beneficio en lugar de buscar en la línea. Mira el pliego de condiciones de las divisas... Yo lo habría hecho.

bool Search(string _sy)
 {
  int OT = OrdersTotal();
  string curencyProfit = SymbolInfoString(_sy, SYMBOL_CURRENCY_PROFIT),
         currencyMargin = SymbolInfoString(_sy, SYMBOL_CURRENCY_MARGIN);
  for(int i = 0; i < OT; i++)
   {
    if(OrderSelect(i, SELECT_BY_POS))
     {
      bool res = StringFind(OrderSymbol(), curencyProfit) >= 0 ||
                 StringFind(OrderSymbol(), currencyMargin) >= 0;
      if(res)
        return(true);
     }
   }
  return(false);
 }

Comprobado, funciona correctamente.

Gracias.