Die Aufgabe der Suche nach Aufträgen - Seite 3

 
Игорь Герасько:

Bei der Umsetzung verschiedener "Raster" kam ich auf die folgende Struktur:

Die Struktur wird bei jedem neuen Tick auf der Grundlage des Wertes der Magic Number ausgefüllt (sie speichert alle Informationen, die zur Identifizierung des Auftrags erforderlich sind: Auftragsnummer, zu welchem Raster er gehört, usw.).

Ich habe mir folgenden Code ausgedacht

class Info
  {
private:
   struct str
     {
      string            Sym;                                // Символ ордера
      string            Com;                                // Коммент ордера
      int               Tic;                                // Тиккет ордера
      int               Typ;                                // Тип ордера
      int               Mag;                                // Меджик номер ордера
      double            Lot;                                // Лот ордера
      double            Pri;                                // Цена открытия ордера
      double            SL_;                                // Стоп лосс ордера
      double            TP_;                                // Тейк профит ордера
      datetime          Tim;                                // Время открытия ордера
      double            Pro;                                // Профит ордера
     };
   int               m_tick_upper;                          // Тиккет максимального по цене ордера
   int               m_tick_upper_;                         // Тиккет предпоследнего максимального по цене ордера
   int               m_tick_lower;                          // Тиккет минимального по цене ордера
   int               m_tick_lower_;                         // Тиккет предпоследнего минимального по цене оредра

   int               m_tick_start;                          // Тиккет первого по времени ордера
   int               m_tick_start_;                         // Тиккет вторго по времени ордера
   int               m_tick_end;                            // Тиккет последнего по времени ордера
   int               m_tick_end_;                           // Тиккет предпоследнего по времени ордера

   int               m_magic;                               // Меджик номер
   string            m_symbol;                              // Символ ордера

   void              SearchTicketPriceType(const int type); // Поиск по цене
   void              SearchTicketTimeType(const int type);  // Поиск по времени

public:

   str               Price_Max;                             // Структура запроса максимальных ценн
   str               Price_Min;                             // Структура запроса минимальных  ценн
   str               Time_End;                              // Структура последних ордеров
   str               Time_Start;                            // Структура начальных ордеров

   str               Price_Max2;                            // Структура запроса максимальных ценн
   str               Price_Min2;                            // Структура запроса минимальных  ценн
   str               Time_End2;                             // Структура последних ордеров
   str               Time_Start2;                           // Структура начальных ордеров

   void              SetMagic (const int    mag) { m_magic  = mag; } // Принудительное указание меджик номера
   void              SetSymbol(const string sym) { m_symbol = sym; } // Принудительное указание символа

   void              SearchTimeOrder(const int type);       // Заполнение структуры по времени      
   void              SearchPriceOrder(const int type);      // Заполнение структуры по ценам 

                     Info(const string sym,const int mag);  // Параметрический конструктор
                     Info(){};
                    ~Info(){};
  };
 
Михаил:
...

"Übrigens - wenn das Windows down ist, kann der EA auch keine Orders löschen - hier nur manuell, daher kann dieses Beispiel nicht vollständig auf den Autotrading-Bereich übertragen werden."

MÖGLICH, Sie wissen wahrscheinlich nicht wie. Bei Interesse kann ich den Code posten.

Nein, Sie brauchen den Code nicht. Der Algorithmus in Kürze, wenn Sie können... Ich weiß wirklich nicht , wie man einen EA in einem Terminal unter einem abgestürzten OS ausführt
 
Artyom Trishkin:
Nein, Sie brauchen keinen Code. Algorithmus in einer Nussschale, wenn Sie können... Ich weiß wirklich nicht , wie man einen EA in einem Terminal unter einem abgestürzten OS ausführt

Es ist einfacher für mich, den Code darzustellen, als ihn zu erklären:

//+------------------------------------------------------------------+
//| Expert Remove orders function                                    |
//+------------------------------------------------------------------+
void RemoveOrders()
{
  int orders_total = OrdersTotal();
//---  
  if ( orders_total > 0 )
  {
    for ( int i = 0; i < orders_total; i++ )
    {
      ulong temp_order_ticket = OrderGetTicket( i );
      
      if ( OrderSelect( temp_order_ticket ) )
      {
        string temp_symbol = OrderGetString( ORDER_SYMBOL );
        
        if ( temp_symbol == _Symbol )
        {
          RemoveOldOrder( temp_symbol, temp_order_ticket );
        }
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Expert remove old order function                                 |
//+------------------------------------------------------------------+
void RemoveOldOrder( const string symbol, const ulong ord_ticket )
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  
  request.action = TRADE_ACTION_REMOVE;
  request.order  = ord_ticket;
  
   if ( OrderSend( request, result ) )
   {
     if ( result.retcode == TRADE_RETCODE_PLACED )
     { 
//        SetTransCount( true );
     }
  }
  else
  {
    Print( "Удаление старого ордера не выполнено! Билет = ", ord_ticket);
  }
}
 
Vladimir Pastushak:

Ich habe mir folgenden Code ausgedacht

Scheiße, Mann, das ist kein Bullshit. Sie selbst haben die richtige Richtung definiert: Der Zustand sollte durch die aktuelle Umgebung wiederhergestellt werden, was MT Ihnen bietet, ist die zuverlässigste Option. Stattdessen schreiben Sie eine lange und nutzlose Klasse Info, in die Sie die von externen Funktionen gefundenen Werte irgendwie hineinpauken müssen. Ja, schließlich wird sie die Variablen enthalten, die Sie benötigen: Höchst- und Mindestpreis für die Bestellung sowie andere für Sie wichtige Informationen. In der Realität wird das Problem jedoch durch einen speziellen Container für Aufträge gelöst: Stellen Sie sich vor, Sie haben eine Liste von Aufträgen, bei der jeder Auftrag eine Tabellenzeile mit vielen Spalten darstellt (Auftragskennung, Eröffnungszeit, Eröffnungskurs, Gewinn, usw., usw.). Sie sortieren nach einer der Spalten und erhalten genau die Reihenfolge, die Sie benötigen. All dies kann also mit Hilfe von Klassen geschehen, die Sie gerne verwenden (obwohl Sie keine Ahnung haben, sorry). Ich werde morgen schreiben, wie man es macht, falls Sie daran interessiert sind.
 
Vasiliy Sokolov:
Scheiße, Mann, das ist kein Bullshit. Sie selbst haben die richtige Richtung definiert: Der Zustand sollte von der aktuellen Umgebung wiederhergestellt werden, was MT Ihnen bietet, ist die zuverlässigste Option. Stattdessen schreiben Sie eine lange und nutzlose Klasse Info, in die Sie die von externen Funktionen gefundenen Werte irgendwie hineinpauken müssen. Ja, schließlich wird sie die Variablen enthalten, die Sie benötigen: Höchst- und Mindestpreis für die Bestellung sowie andere für Sie wichtige Informationen. In der Realität wird das Problem jedoch durch einen speziellen Container für Aufträge gelöst: Stellen Sie sich vor, Sie haben eine Liste von Aufträgen, bei der jeder Auftrag eine Tabellenzeile mit vielen Spalten darstellt (Auftragskennung, Eröffnungszeit, Eröffnungskurs, Gewinn, usw., usw.). Sie sortieren nach einer der Spalten und erhalten genau die Reihenfolge, die Sie benötigen. All dies kann also mit Hilfe von Klassen geschehen, die Sie gerne verwenden (obwohl Sie keine Ahnung haben, sorry). Wie man das macht, schreibe ich morgen, wenn Sie daran interessiert sind.

Ich bin sehr gespannt....

Ich brauche Informationen nicht um der Informationen willen, sondern zur weiteren Verarbeitung und Berechnung ...

 
Михаил:

Es ist einfacher für mich, den Code zu posten, als ihn zu erklären:

Wie funktioniert es auf einem defekten Computer? (kein Wunder bei den Funktionen).

Deshalb habe ich gesagt: Ich brauche keinen Code. Ich brauche einen Algorithmus, der auf einem Computer funktioniert, der nicht funktioniert (die Achse ist kaputt, wenn Sie sich an ein Zitat erinnern: "Ich weiß wirklich nicht , wie ich den Expert Advisor in dem Terminal ausführen soll, das auf dem abgestürzten OS läuft", und ich brauche kein VPS und anderes Zeug - denke, dass das OS auf dem Computer, Server, usw., auf dem das Terminal mit dem Expert Advisor läuft, abgestürzt ist - dein Code ist ein Pflaster dafür und ... ).

 
Artyom Trishkin:

Wie soll das auf einem kaputten Computer funktionieren??? (kein Wunder bei den Funktionen).

Deshalb habe ich gesagt: Ich brauche keinen Code. Ich brauche einen Algorithmus, der auf einem Computer funktioniert, der nicht funktioniert (weil das Betriebssystem ausgefallen ist, wenn Sie sich erinnern - und ich zitiere: "Ich weiß wirklich nicht , wie ich den Expert Advisor in dem Terminal ausführen soll, das auf dem abgestürzten OS läuft", und ich brauche kein VPS und anderes Zeug - denke, dass das OS auf dem Computer, Server, usw., auf dem das Terminal mit dem Expert Advisor läuft, abgestürzt ist - dein Code ist ein Pflaster dafür und ... Mit unseren Händen, mit unseren Händen ... ).

Da haben wir's, Fälscher im Wald...

Lassen Sie uns unsere Diskussion hier beenden!

 
Михаил:

Jetzt geht es los, in guten wie in schlechten Zeiten...

Lassen Sie uns unsere Diskussion hier beenden!

Kein Problem. Ich habe es satt, mich zu rechtfertigen...
 
Artyom Trishkin:
Kein Problem. Ich habe es satt zu versuchen, meinen Standpunkt zu vermitteln...

Selbst wenn das Betriebssystem auf dem Server ausgefallen ist, können Sie einen Heim-PC betreiben, der die Kontrolle über das Konto zu dem Zeitpunkt wiederherstellt, der für den Neustart des Servos erforderlich ist.

In meiner Praxis der Arbeit mit der VDS / VPS-Servern OS hat nie flipped, aber Neustarts sind unvorhergesehene und geplante passiert.

Die Essenz meiner Frage ist es, kompetent Code zu schreiben, der Informationen über die aktuelle Situation sammelt...

 
Vladimir Pastushak:

...

Das Ziel meiner Frage ist es, einen korrekten Code zu schreiben, der Informationen über die aktuelle Situation sammelt...

Sie haben hier geschrieben, dass Sie bereits im Verfahrensstil geschrieben haben. Alles, was Sie also tun müssen, ist, alles in einer Klasse zu sammeln. Sie können auch einige Parameter aus dem Funktionsaufruf entfernen, Methoden für die Voreinstellung von Parametern erstellen (magik, symbol), aber es ist besser, dies nicht zu tun.

Wenn Sie nichts zu tun haben, können Sie natürlich auch einen anderen Weg gehen. Klasse. Sie verfügt über die Methode Refresh(), um die Liste der Aufträge abzurufen (die einzige Methode, die false zurückgeben kann). Die anderen Methoden verwenden diese Liste.