La tarea de búsqueda de pedidos

 

Básicamente, la esencia es la siguiente, estoy buscando opciones de código para buscar órdenes.

La tarea es la siguiente:

1 :

Obtenga información sobre la orden máxima por precio y por tipo de orden ( Compra / Venta ) más alta

Para obtener información sobre el pedido mínimo por precio y por tipo de pedido ( Compra/Venta ) más bajo

Obtenga la información de la última orden por tiempo y por tipo de orden ( Compra/Venta )

Obtenga información sobre la primera orden por tiempo y por tipo de orden ( Compra/Venta )

2 :

Obtener información sobre el penúltimo precio máximo y el tipo de orden ( Compra/Venta )

Obtener información sobre la penúltima orden mínima (Compra/Venta) por precio y por tipo de orden ( Compra/Venta )

Obtener información sobre la penúltima orden por tiempo y por tipo de orden (Compra/Venta)

Obtenga información sobre la segunda orden en el tiempo y el tipo de orden (Compra/Venta)

Esta información incluye toda la información sobre la orden (símbolo, lote, precio ......)

El estilo de programación procedimental lo solucionó hace tiempo, ahora quiero simplificarlo y hacer una clase, pero no se me ocurre nada útil...

 
Vladimir Pastushak:

De todos modos, la cuestión es la siguiente: estoy buscando opciones de código para buscar pedidos.


¿Desea controlar los pedidos activos?

¿MQL4 o MQL5?

 
Михаил:
¿Desea controlar los pedidos activos?
No todos, pero sí el máximo/mínimo por precio y el primero y el último por tiempo, de dos en dos, es decir, el último y el penúltimo...
 
Vladimir Pastushak:

Básicamente, la esencia es la siguiente, estoy buscando opciones de código para buscar órdenes.

La tarea es la siguiente:

1 :

Obtenga información sobre la orden máxima por precio y por tipo de orden ( Compra / Venta ) más alta

Para obtener información sobre el pedido mínimo por precio y por tipo de pedido ( Compra/Venta ) más bajo

Obtenga la información de la última orden por tiempo y por tipo de orden ( Compra/Venta )

Obtenga información sobre la primera orden por tiempo y por tipo de orden ( Compra/Venta )

2 :

Obtener información sobre el penúltimo precio máximo y el tipo de orden ( Compra/Venta )

Obtener información sobre la penúltima orden mínima (Compra/Venta) por precio y por tipo de orden ( Compra/Venta )

Obtener información sobre la penúltima orden por tiempo y por tipo de orden (Compra/Venta)

Obtenga información sobre la segunda orden en el tiempo y el tipo de orden (Compra/Venta)

Esta información incluye toda la información sobre la orden (símbolo, lote, precio ......)

El estilo de programación procedimental lo solucionó hace tiempo, ahora quiero simplificarlo y hacer una clase, pero no se me ocurre nada útil...

Sí, Vladimir, es una gran tarea. :-)

¿Puede decirme dónde ir?

 
Vladimir Pastushak:
Sólo que no todos, sino el máximo/mínimo por precio y el primero y el último por tiempo, 2 de cada uno, es decir, el último y el penúltimo...

No es difícil, porque estás estableciendo órdenes.

Así que, recordarán las dos últimas COMPRAS y las dos últimas VENTAS

Y no tendrás que buscar nada.

struct MEM_ORDER
{
  ulong ticket;
  long ord_type;
  double price;
};
struct MEM_ORDERS
{
  bool      is_first_buy;
  bool      is_first_sell;
  MEM_ORDER buy_oders[2];
  MEM_ORDER sell_oders[2];
};
 
Михаил:

No es difícil, porque estás estableciendo órdenes.

Así que, recordarán las dos últimas COMPRAS y las dos últimas VENTAS

Y no tendrás que buscar nada.

Pensé en una solución de este tipo, pero no estaba contento con el hecho de que cuando el EA/terminal se recarga, se reinicia y todos los datos del trabajo anterior se pierden.

Creo que la forma más fiable de trabajar es recoger datos sobre el entorno cuando la EA está funcionando.

 
Vladimir Pastushak:

Pensé en una solución de este tipo, pero no me gustó el hecho de que cuando se recarga el EA/terminal, se vuelve a cargar y se pierden todos los datos del trabajo anterior.

Creo que el método fiable de operación es recoger datos sobre el entorno en el momento de la operación de EA.

¿Y qué le impide guardar los datos en un archivo cuando sale del EA, y cuando lo carga, cargarlo desde un archivo?

//| Expert Load setings function                                     |
//+------------------------------------------------------------------+
void LoadSettings()
{
  string file_name = _Symbol + ".dat";
  int file_handle;
//---  
  if ( FileIsExist( file_name, 0 ) )
  {
    file_handle = FileOpen( file_name, FILE_READ|FILE_BIN );
    
    if ( file_handle != INVALID_HANDLE )
    {
      e_high = FileReadLong( file_handle );
      a_profit = FileReadLong( file_handle );
      e_low = FileReadLong( file_handle );
      ord_delta_high = FileReadLong( file_handle );
      ord_delta_low = FileReadLong( file_handle );
      order_delta = FileReadLong( file_handle );
      exit_delta = FileReadLong( file_handle );
      FileClose( file_handle );
    }
  } 
}

//+------------------------------------------------------------------+
//| Expert Save settings function                                    |
//+------------------------------------------------------------------+
void SaveSettings()
{
  string file_name = _Symbol + ".dat";
  int file_handle;
  bool file_found = true;
//---  
  if ( FileIsExist( file_name, 0 ) )
  {
    if ( FileDelete( file_name, 0 ) ) file_found = false;
  }
  else
  {
    file_found = false;
  }
//---
  if ( ! file_found )
  {
    file_handle = FileOpen( file_name, FILE_WRITE|FILE_BIN );
    
    if ( file_handle != INVALID_HANDLE )
    {
      FileWriteLong( file_handle, e_high );
      FileWriteLong( file_handle, a_profit );
      FileWriteLong( file_handle, e_low );
      FileWriteLong( file_handle, ord_delta_high );
      FileWriteLong( file_handle, ord_delta_low );
      FileWriteLong( file_handle, order_delta );
      FileWriteLong( file_handle, exit_delta );
      FileClose( file_handle );
    }
  } 
}
 
Михаил:

¿Qué le impide guardar los datos en un archivo cuando sale del EA y cargarlos desde un archivo cuando lo carga?

Esto es bueno, por supuesto, pero no es fiable, porque el entorno puede cambiar durante el reinicio.
 
Vladimir Pastushak:
Por supuesto, esto es bueno, pero no es fiable, ya que el entorno puede cambiar durante el reinicio.

Cierre todas las órdenes antes de salir.

Todavía tienes que hacer esto.

 
Михаил:

Cierre todas las órdenes antes de salir.

De todos modos, es algo tedioso.

Los reinicios imprevistos provocarán problemas...

Escribí una clase...

 
Vladimir Pastushak:

Los reinicios imprevistos provocarán problemas...

He escrito una clase...

No hagas reír a la gente....

Si ocurre un imprevisto, no hay clases que te salven.

Si el enrollador o el terminal se "cuelgan", el EA se reiniciará,

Sólo "miro" las órdenes activas y las cierro, porque no hay control sobre ellas.