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

 
makssub #:
Hola. Por favor, indique cómo encontrar el precio de apertura de la orden más cercano al precio actual. MQL4. ¿Tiene algún ejemplo?

Revisamos todas las posiciones abiertas y comparamos el número de pips desde el precio actual hasta la apertura de una operación.

Puede tomar cualquier ejemplo, justo arriba hay un código - búsqueda de pedidos en un bucle.

 
MakarFX #:

¿Qué es OrdersClose?

Vea aquí.

Entendido, gracias.

 
PapaYozh #:


No hay necesidad de fantasear. La esencia de lo que sucede es que se llama a un método, que es un constructor con un conjunto diferente de parámetros. En este caso no se crea ningún objeto.

Debes entender la diferencia entre una llamada a un constructor y una llamada a un método/función.

PapaYozh #:

Una llamada al constructor similar que tampoco conducirá al resultado deseado:

Por ejemplo, añadir un puntero a la firma de un método (constructor ? que se llama como un método ?) pasando un puntero por referencia

 
Taras Slobodyanik #:

Revisamos todas las posiciones abiertas y comparamos el número de pips desde el precio actual hasta la apertura de una operación.

Puede tomar cualquier ejemplo, justo arriba hay un código - búsqueda de pedidos en un bucle.

Lo siento, no lo estoy escribiendo correctamente otra vez. Lo intentaré de nuevo)

Hay una parrilla de órdenes abiertas. Necesito encontrar el precio de apertura (OrderOpenPrice) de la orden más cercana al precio actual. Para seguir construyendo la red, pero mis órdenes se construyen casi caóticamente.

Entiendo cómo se escribe el rebasamiento, pero soy incapaz de expresarlo correctamente en el idioma (soy como un perro, lo entiendo todo)).

Si tienes ejemplos o enlaces a ejemplos, publícalos, por favor. MQL4

 
Igor Makanu #:

Es necesario entender la diferencia entre una llamada a un constructor y una llamada a un método/función

Nota sobre el tema: en la firma de un método (constructor ? que se llama como un método ?) añadir el paso de un puntero por referencia.

En Java está bien.

También puedes llamar al constructor padre desde el constructor hijo, el único requisito es que el constructor padre sea llamado por el primer comando del constructor hijo.

En MQL, el problema es que si no hay un constructor vacío para el padre, el constructor del padre es llamado implícitamente cuando se crea el hijo.

--

PS.

Y si el padre tiene un constructor sin parámetros y un constructor con parámetros, ¿cuál se llama implícitamente desde el constructor descendiente con parámetros?

 
Igor Makanu #:


para el tema - en la firma del método (constructor ? que se llama como un método ?) añadir pasar un puntero por referencia


Esto parece una muleta.

¿No es así?

 

Hola a todos. Puede que sea una pregunta tonta, pero aún no he encontrado una solución.

He creado un indicador. Tiene botones en el gráfico y cuando los pulso, la línea se dibuja y el botón se activa.

¿Cómo hacer que la actividad de los botones y la ubicación de las líneas permanezcan activas, cuando cambio de marco temporal?

Al cambiar el TF, la función Deinit funciona, y tiene la eliminación de todos los objetos. Es una especie de requisito previo, para limpiar todo de la carta.

He intentado almacenar el estado de los botones en una variable, pero como me he dado cuenta en los indicadores se ponen a cero si cambiamos el TF.

No es así en EA, el valor de las variables internas no se pone a cero allí. Resulta que si el indicador ha calculado algunos valores y los ha guardado en variables internas, estos se reiniciarán al cambiar de TF. Por qué y cómo evitarlo.

 
makssub #:

Lo siento, lo he vuelto a escribir mal. Déjame intentarlo de nuevo)

Hay una parrilla de órdenes abiertas. Necesito encontrar el precio de apertura (OrderOpenPrice) de la orden más cercana al precio actual. Para seguir construyendo la red, pero mis órdenes se construyen casi caóticamente.

Entiendo cómo se escribe el rebasamiento, pero soy incapaz de expresarlo correctamente en el idioma (soy como un perro, lo entiendo todo)).

Si tienes ejemplos o enlaces a ejemplos, publícalos, por favor. MQL4

Primero la diferencia es igual a 1000 antes del ciclo. En el bucle, si el precio de apertura menos el precio actual es módulo menor que la diferencia, entonces la diferencia es igual al valor obtenido y el ticket se almacena en una variable.
 
Igor Makanu #:

Debes conocer la diferencia entre una llamada a un constructor y una llamada a un método/función.


Por cierto, ¿cuál es la diferencia, aparte de que se llama implícitamente cuando se crea el objeto?

 
void ClosseAll()
{
  for(int i = OrdersTotal()-1; i>=0; i--)
  {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderType() == OP_BUY)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip))
             Print("Не удалось закрыть ордера на покупку!");
         }
       if (OrderType() == OP_SELL)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip))
             Print("Не удалось закрыть ордер на продажу!");
         }
     }
  }
}

¡¡¡Buenos días!!!

Por favor, ayúdame a escribir el código para cerrar las órdenes mínimas y máximas en un EA de rejilla cuando se alcanza un determinado nivel de reducción

He escrito dos funciones para calcular el beneficio de las órdenes máximas y mínimas

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder()
{
  int max_ticket = 0;
  double max_ticket_profit = 0 ;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
    if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) 
     {
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
       {
        if(OrderType() == OP_BUY || OrderType() == OP_SELL)
        {
          if(OrderTicket() > max_ticket) max_ticket = ticket;
          {
           max_ticket_profit =  OrderProfit();
          }
        }
       }
     }
    }
  }
  return( max_ticket_profit);
}
//+----------------------------------------------------------------------------+
//| Расчет профита минимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
double GetProfitMinOrder()
{
  int min_ticket=INT_MAX;
  double min_ticket_profit = 0;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
     if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
     {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
        {
          if (OrderType() == OP_BUY || OrderType() == OP_SELL)
           {
            if(OrderTicket() < min_ticket)
              min_ticket = OrderTicket();
              {
               min_ticket_profit = OrderProfit(); 
              }
           }
        }
      }
    }
  }
  return(min_ticket_profit);
}

También he escrito una función que calcula el importe de estos pedidos. Parece que no hay ningún problema.

La pregunta es cómo cerrar sólo estas dos órdenes He encontrado la función ClosseAll().

La pregunta es cómo cambiar la función OrderTicket() que cierra todos los pedidos

para adjuntar las variables max_ticket y min_ticket que determinan los tickets de sólo los pedidos mínimos y máximos en la parrilla

¿O tiene USTED la solución a esta cuestión?