Il compito di cercare gli ordini

 

Fondamentalmente, il succo è il seguente, sto cercando opzioni di codice per cercare gli ordini.

Il compito è il seguente:

1 :

Ottieni informazioni sull'ordine massimo per prezzo e per tipo di ordine (Acquisto/Vendita) più in alto

Per ottenere informazioni sull'ordine minimo per prezzo e per tipo di ordine (acquisto/vendita) più basso

Ottieni informazioni sull'ultimo ordine per tempo e per tipo di ordine (Acquisto/Vendita)

Ottieni informazioni sul primo ordine per tempo e per tipo di ordine (Acquisto/Vendita)

2 :

Ottenere informazioni sul penultimo prezzo massimo e sul tipo di ordine (Acquisto/Vendita)

Ottenere informazioni sul penultimo ordine minimo (Acquisto/Vendita) per prezzo e per tipo di ordine (Acquisto/Vendita)

Ottieni informazioni sul penultimo ordine per tempo e per tipo di ordine (Acquisto/Vendita)

Ottenere informazioni sul secondo ordine in tempo e sul tipo di ordine (Acquisto/Vendita)

Queste informazioni includono tutte le informazioni sull'ordine (simbolo, lotto, prezzo ......)

Lo stile di programmazione procedurale l'ha risolto molto tempo fa, ora voglio semplificarlo e fare una classe, ma non riesco a pensare a niente di utile...

 
Vladimir Pastushak:

Comunque, il punto è questo: sto cercando opzioni di codice per cercare gli ordini.


Vuoi monitorare gli ordini attivi?

MQL4 o MQL5?

 
Михаил:
Vuoi monitorare gli ordini attivi?
Non tutti, ma il massimo/minimo per prezzo e il primo e l'ultimo per tempo, due alla volta, cioè l'ultimo e il penultimo...
 
Vladimir Pastushak:

Fondamentalmente, il succo è il seguente, sto cercando opzioni di codice per cercare gli ordini.

Il compito è il seguente:

1 :

Ottieni informazioni sull'ordine massimo per prezzo e per tipo di ordine (Acquisto/Vendita) più in alto

Per ottenere informazioni sull'ordine minimo per prezzo e per tipo di ordine (acquisto/vendita) più basso

Ottieni informazioni sull'ultimo ordine per tempo e per tipo di ordine (Acquisto/Vendita)

Ottieni informazioni sul primo ordine per tempo e per tipo di ordine (Acquisto/Vendita)

2 :

Ottenere informazioni sul penultimo prezzo massimo e sul tipo di ordine (Acquisto/Vendita)

Ottenere informazioni sul penultimo ordine minimo (Acquisto/Vendita) per prezzo e per tipo di ordine (Acquisto/Vendita)

Ottieni informazioni sul penultimo ordine per tempo e per tipo di ordine (Acquisto/Vendita)

Ottenere informazioni sul secondo ordine in tempo e sul tipo di ordine (Acquisto/Vendita)

Queste informazioni includono tutte le informazioni sull'ordine (simbolo, lotto, prezzo ......)

Lo stile di programmazione procedurale l'ha risolto molto tempo fa, ora voglio semplificarlo e fare una classe, ma non riesco a pensare a niente di utile...

Sì Vladimir - è un GRANDE compito! :-)

Puoi dirmi dove andare?

 
Vladimir Pastushak:
Solo non tutti, ma massimo/minimo per prezzo e primo e ultimo per tempo, 2 di ciascuno, cioè ultimo e penultimo...

Non è difficile, perché state stabilendo degli ordini.

Quindi, ricorderete gli ultimi due BUY e gli ultimi due SELL

E non dovrete cercare nulla.

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];
};
 
Михаил:

Non è difficile, perché state stabilendo degli ordini.

Quindi, ricorderete gli ultimi due BUY e gli ultimi due SELL

E non dovrete cercare nulla.

Ho pensato a una soluzione del genere, ma non ero contento del fatto che quando l'EA/terminale viene ricaricato, viene reinizializzato e tutti i dati del lavoro passato saranno persi.

Penso che il modo più affidabile di lavorare sia quello di raccogliere dati sull'ambiente quando l'EA sta lavorando.

 
Vladimir Pastushak:

Ho pensato a una soluzione del genere, ma non ero contento del fatto che quando l'EA/terminale viene ricaricato, viene riproposto e tutti i dati del lavoro precedente saranno persi.

Credo che il metodo affidabile di funzionamento sia quello di raccogliere dati sull'ambiente al momento dell'operazione EA.

E cosa impedisce di salvare i dati in un file quando si esce dall'EA, e quando lo si carica, caricarli da un file?

//| 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 );
    }
  } 
}
 
Михаил:

Cosa impedisce di salvare i dati in un file quando si lascia l'EA e caricarli da un file quando lo si carica?

Questo è buono, naturalmente, ma non affidabile, perché l'ambiente può cambiare durante il riavvio.
 
Vladimir Pastushak:
Questo è ovviamente buono, ma non affidabile, poiché l'ambiente può cambiare durante il riavvio.

Chiudi tutti gli ordini prima di uscire.

Avete ancora bisogno di fare questo.

 
Михаил:

Chiudi tutti gli ordini prima di uscire.

È una cosa noiosa da fare comunque.

Le ripartenze impreviste porteranno a problemi...

Ho scritto un corso...

 
Vladimir Pastushak:

I riavvii imprevisti porteranno guai...

Ho scritto una classe...

Non far ridere la gente....

Se succede qualcosa di imprevisto, nessuna classe vi salverà!

Se il windup o il terminale "si blocca", allora l'EA si reinizializzerà,

Mi limito a "guardare" gli ordini attivi e a chiuderli, perché non c'è controllo su di essi.