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.

[Eliminado]  

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;
   }
};