Die Aufgabe der Suche nach Aufträgen

 

Im Grunde genommen geht es um Folgendes: Ich suche nach Code-Optionen für die Suche nach Aufträgen.

Die Aufgabe lautet wie folgt:

1 :

Informieren Sie sich über den maximalen Auftrag nach Preis und nach Auftragsart ( Kauf / Verkauf ) ganz oben

Um Informationen über den Mindestauftrag nach Preis und Auftragsart (Kauf/Verkauf) zu erhalten

Informationen über die letzte Bestellung nach Zeit und Art der Bestellung (Kauf/Verkauf) abrufen

Informationen über den ersten Auftrag nach Zeit und Auftragsart (Kauf/Verkauf) abrufen

2 :

Informationen über den vorletzten Maximalpreis und die Auftragsart (Kauf/Verkauf) einholen

Informationen über den vorletzten Mindestauftrag (Kauf/Verkauf) nach Preis und Auftragsart ( Kauf/Verkauf ) abrufen

Informationen über den vorletzten Auftrag nach Zeit und Auftragsart (Kauf/Verkauf) abrufen

Informationen über den zweiten Auftrag in der Zeit und die Auftragsart (Kauf/Verkauf) erhalten

Diese Informationen enthalten alle Informationen über den Auftrag (Symbol, Lot, Preis ......)

Der prozedurale Programmierstil hat das Problem schon vor langer Zeit gelöst, jetzt möchte ich es vereinfachen und eine Klasse erstellen, aber mir fällt nichts Sinnvolles ein...

 
Vladimir Pastushak:

Wie auch immer, der Punkt ist folgender: Ich suche nach Code-Optionen für die Suche nach Aufträgen.


Möchten Sie aktive Aufträge überwachen?

MQL4 oder MQL5?

 
Михаил:
Möchten Sie aktive Aufträge überwachen?
Nicht alle, aber das Maximum/Minimum nach Preis und das erste und letzte nach Zeit, jeweils zwei auf einmal, d.h. das letzte und vorletzte...
 
Vladimir Pastushak:

Im Grunde genommen geht es um Folgendes: Ich suche nach Code-Optionen für die Suche nach Aufträgen.

Die Aufgabe lautet wie folgt:

1 :

Informieren Sie sich über den maximalen Auftrag nach Preis und nach Auftragsart ( Kauf / Verkauf ) ganz oben

Um Informationen über den Mindestauftrag nach Preis und Auftragsart (Kauf/Verkauf) zu erhalten

Informationen über die letzte Bestellung nach Zeit und Art der Bestellung (Kauf/Verkauf) abrufen

Informationen über den ersten Auftrag nach Zeit und Auftragsart (Kauf/Verkauf) abrufen

2 :

Informationen über den vorletzten Maximalpreis und die Auftragsart (Kauf/Verkauf) einholen

Informationen über den vorletzten Mindestauftrag (Kauf/Verkauf) nach Preis und Auftragsart ( Kauf/Verkauf ) abrufen

Informationen über den vorletzten Auftrag nach Zeit und Auftragsart (Kauf/Verkauf) abrufen

Informationen über den zweiten Auftrag in der Zeit und die Auftragsart (Kauf/Verkauf) erhalten

Diese Informationen enthalten alle Informationen über den Auftrag (Symbol, Lot, Preis ......)

Der prozedurale Programmierstil hat das Problem schon vor langer Zeit gelöst, jetzt möchte ich es vereinfachen und eine Klasse erstellen, aber mir fällt nichts Sinnvolles ein...

Ja, Vladimir - das ist eine GROSSE Aufgabe! :-)

Können Sie mir sagen, wohin ich gehen soll?

 
Vladimir Pastushak:
Nur nicht alle, sondern Maximum/Minimum nach Preis und Erster und Letzter nach Zeit, jeweils 2 Stück, d.h. Letzter und Vorletzter...

Das ist nicht schwer, denn Sie erteilen Aufträge.

Sie werden sich also an die letzten beiden Käufe und Verkäufe erinnern

Und Sie müssen nach nichts mehr suchen.

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

Das ist nicht schwer, denn Sie erteilen Aufträge.

Sie werden sich also an die letzten beiden Käufe und Verkäufe erinnern

Und Sie müssen nach nichts mehr suchen.

Ich habe über eine solche Lösung nachgedacht, aber ich war nicht zufrieden mit der Tatsache, dass der EA/das Terminal bei einem erneuten Laden neu initialisiert wird und alle Daten der vergangenen Arbeit verloren gehen.

Meiner Meinung nach ist es am zuverlässigsten, Daten über die Umgebung zu sammeln, wenn der EA arbeitet.

 
Vladimir Pastushak:

Ich habe über eine solche Lösung nachgedacht, aber ich war nicht zufrieden mit der Tatsache, dass beim erneuten Laden des EA/Terminals dieser wieder verwendet wird und alle Daten der vorherigen Arbeit verloren gehen.

Ich bin der Meinung, dass eine zuverlässige Methode darin besteht, Daten über die Umwelt zum Zeitpunkt der EA-Operation zu sammeln.

Und was hindert Sie daran, die Daten in einer Datei zu speichern, wenn Sie den EA verlassen, und sie beim Laden aus einer Datei zu laden?

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

Was hindert Sie daran, die Daten in einer Datei zu speichern, wenn Sie den EA verlassen, und sie aus einer Datei zu laden, wenn Sie ihn laden?

Das ist natürlich gut, aber nicht zuverlässig, weil sich die Umgebung während des Neustarts ändern kann.
 
Vladimir Pastushak:
Das ist natürlich gut, aber nicht zuverlässig, da sich die Umgebung während des Neustarts ändern kann.

Schließen Sie alle Aufträge vor dem Ausstieg.

Sie müssen dies trotzdem tun.

 
Михаил:

Schließen Sie alle Aufträge vor dem Ausstieg.

Das ist sowieso eine mühsame Angelegenheit.

Unerwartete Neustarts führen zu Problemen...

Ich habe eine Klasse geschrieben...

 
Vladimir Pastushak:

Unerwartete Neustarts führen zu Problemen...

Ich habe eine Klasse geschrieben...

Bringen Sie die Leute nicht zum Lachen....

Wenn etwas Unvorhergesehenes passiert, kann Sie kein Unterricht retten!

Wenn das Aufziehen oder das Terminal "abstürzt", wird der EA neu initialisiert,

Ich "schaue" mir nur die aktiven Aufträge an und schließe sie, weil ich keine Kontrolle darüber habe.

Grund der Beschwerde: