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

 
Vitaly Muzichenko #:

¿Puede decirme cómo acortar la construcción?

Se trata de cortar los pares que ya tienen un símbolo

Tengo una posición en USDCHF

===

Hay una posición en EURGBP, la señal vino de AUDUSD - ¿cómo podemos detectar que no hay posición en AUD o USD?

Valery tiene una forma de pensar correcta. Pero no entiendo por qué debemos identificar la moneda que buscamos en las monedas de orden en cada iteración del ciclo? Y me parece más fácil tomar la moneda del margen y la moneda del beneficio en lugar de buscar en la línea. Mira la especificación de la moneda... Yo haría esto

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);
 }/******************************************************************/
 
Valeriy Yastremskiy #:

StringFind

Creo que debería haber 2 líneas, buscando tanto en la posición 0 como en la 3. Para cortar un partido al azar en el medio.

SZ

Tonto, hay 4 condiciones.

No es igual a A B y no es igual a C D

condición A==C o A==D o B==C o B==D

No creo que nadie pueda escribirlo)))

Mudo en el segundo intento. Al parecer, ha llegado la hora de la noche.

 
Vitaly Muzichenko #:

¿Puede decirme cómo acortar la construcción?

Se trata de cortar los pares que ya tienen un símbolo

Tengo una posición en USDCHF

===

Hay una posición en EURGBP, la señal vino de AUDUSD - ¿cómo detectar que no hay posición en AUD o USD?

Recogería todas las divisas de órdenes abiertas en un array y pasaría por el array al recibir la señal.

 
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 para las monedas ... Yo lo haría

Lo comprobaré mañana.


Taras Slobodyanik #:

Recogería todas las divisas de órdenes abiertas en una matriz y miraría a través de la matriz al recibir una señal.

La idea es la misma, pero también se necesita un array

 

también puede establecer una magia 1 = AUD, 2 = EUR.... para cada moneda y comparar las magias,

sobre las matrices, imho, es racional, ahora 3 pares de divisas 4 condiciones, mañana 33 pares de divisas 34 condiciones?

 
Vitaly Muzichenko #:

Lo comprobaré mañana.


El punto es el mismo, pero también se necesita una matriz

¿Por qué esperar hasta mañana? Si le da pereza buscar en las especificaciones, ejecute el script a través de todos los símbolos de interés y encuentre una coincidencia para la moneda de margen y la moneda de beneficio.
/********************Script program start function*******************/
void OnStart()
 {

  Comment(SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT), "\n",
          SymbolInfoString(_Symbol, SYMBOL_CURRENCY_MARGIN)
         );
 }/******************************************************************/
No comprobé todo antes de escribir, pero no encontré ninguna coincidencia...
 
Vitaly Muzichenko #:

El significado es el mismo, pero también se necesita un array

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

 

Ayuda con el código. Necesito que la orden pendiente se mueva con la apertura de una nueva barra a lo largo de la línea de tendencia.

Es decir, sería un cruce permanente de la orden y la línea.

Debemos conocer el punto de cruce de la línea de tendencia y el tiempo para que se desplace. ¿Cómo se calcula?

 
Zalevsky1234 orden pendiente se mueva con la apertura de una nueva barra a lo largo de la línea de tendencia.

Es decir, sería un cruce permanente de la orden y la línea.

Debemos conocer el punto de cruce de la línea de tendencia y el tiempo para que se desplace. ¿Cómo se calcula?

Esta es la función para calcular el punto de intersección
 

Pregunta sobre la 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?


class X {
public:
   void doJob() {
      static int var = 0;
   }
};

class U {
private:
   X *x;
public:
   U(){

   }
   ~U() {
      delete x;
   }
   void U::dojob(){
      x = new X();
      x.doJob();
      delete x;
   }
};
Razón de la queja: