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

 
makssub #:

Escribe un ejemplo, porque ya estoy un poco confundido. Si no es mucho problema. Gracias

En el bucle de búsqueda de pedidos:

if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

Antes del bucle, inicializar previous_value=DBL_MAX a nearest_order=0

 
Taras Slobodyanik #:

en el bucle de pedido:

inicializar previous_value=DBL_MAX a nearest_order=0 antes del bucle

Exactamente. Gracias. Obras

 
Taras Slobodyanik #:

en el bucle de pedido:

inicializar previous_value=DBL_MAX a nearest_order=0 antes del bucle

DBL_MAX es categórico).
 
Valeriy Yastremskiy #:
DBL_MAX es categórico).

Lo principal funciona)

Cómo encontrar OP_BUY con el máximo OrderOpenPrice y determinar su OrderProfit.
No puedo juntarlos, todo funciona por el culo... Si puede darme un ejemplo de inmediato) Gracias)

 
makssub #:

Lo principal funciona)

Cómo encontrar OP_BUY con el máximo OrderOpenPrice y determinar su OrderProfit.
No puedo juntarlos, todo funciona por el culo... Si puede darme un ejemplo de inmediato) Gracias)

previous_value=0;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX #:

Sólo quería decir que ya he terminado.

Pero usted lo ha hecho más compacto. Me quedo con tu sugerencia).

Gracias

 
Cómo trabajar con un archivo en el programa mql5 sin escribir el archivo en el disco, sino trabajar sólo en la RAM, para acelerar. Quiero transferir datos de un programa mql5 a un programa de mi ordenador. ¿Es posible hacerlo sin funciones de red? No tiene por qué ser un archivo, una matriz o una variable; es incluso mejor. Sólo conozco dos formas, el módulo de integración de python y el web socket, ¿hay alguna otra forma?
 

Elimino todos los objetos en OnDeInit() mediante un bucle (las flechas que indican las barras de señal y un botón):

const int obj_total=ObjectsTotal();

Print("ObjectsTotal ",obj_total);

for(int i=0 ; i < obj_total ; i++){
 Print("ObjectName ",ObjectName(i),", i = ",i);
 ObjectDelete(ObjectName(i));
}

Estoy al tanto de ObjectsDeleteAll(), pero aún así si lo hago a través de un bucle, sólo se borran la mitad de los objetos en uno. En realidad aquí está el trabajo del bucle y no entiendo por qué sucede así:

2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 20
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 19
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 18
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 17
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 16
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 15
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 14
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 13
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 12
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 11
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName button1, i = 10
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader #:

Elimino todos los objetos en OnDeInit() mediante un bucle (las flechas que indican las barras de señal y un botón):

Soy consciente de que existe ObjectsDeleteAll(), pero aún así si lo hago a través de un bucle, sólo se borran la mitad de los objetos en uno. En realidad, así es como funciona el bucle y no entiendo por qué ocurre así:

El bucle al borrar debe ser invertido:

for(int i=obj_total-1; i>=0; i--)

y esto se aplica no sólo a la eliminación de objetos gráficos, sino en general a la eliminación de cualquier objeto de las listas del terminal.

 
Nerd Trader #:

Elimino todos los objetos en OnDeInit() por bucle (flechas que indican las barras de señal y un botón):

Estoy al tanto de ObjectsDeleteAll(), pero aún así si lo hago a través de un bucle, sólo se borran la mitad de los objetos en uno. En realidad, así es como funciona el bucle y no entiendo por qué ocurre:

pero si lo intentas de esta manera - sólo tienes que poner todos los nombres

string   m_name[]= {"button1","ArrowUp0008","ArrowDown0008","ArrowUp0006","ArrowDown0006"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+