Diskussion zum Artikel "Zeitreihen in der Bibliothek DoEasy (Teil 58): Zeitreihen der Datenpuffer von Indikatoren" - Seite 2

 
Alexander:

In TestDoEasyPart56 habe ich in der void-Funktion OnInitDoEasy() ganz am Ende der Funktion diesen Code eingefügt, so dass

eine Sammlung von historischen Aufträgen ab dem Datum D'2020.12.11 10:00' bis zum aktuellen erhalten. Und ich habe keine von ihnen

Bestellung wurde nicht durch diesen Code gegeben.

An der Stelle, wo ich Print(list_positions.Total()); bekomme ich "0".

OnInitDoEasy() ist nicht dafür gedacht, darin zu arbeiten. Sie brauchen diese Funktion, um die Bibliothek richtig zu initialisieren. Arbeit in OnTick
 
Artyom Trishkin:
OnInitDoEasy() ist nicht dafür vorgesehen, darin zu arbeiten. Diese Funktion wird benötigt, um die Bibliothek richtig zu initialisieren. Arbeit in onTick

Ich habe sie in onTick() eingefügt, und nichts hat sich geändert:

//| Experten-Tick-Funktion|
//+------------------------------------------------------------------+
void OnTick()
  {
//--- NewTick Ereignisbehandlung in der Bibliothek
   engine.OnTick(rates_data);

//--- Wenn Sie im Prüfgerät arbeiten
   if(MQLInfoInteger(MQL_TESTER))
     {
      engine.OnTimer(rates_data);   // Timer-Betrieb
      engine.EventsHandling();      // Arbeiten mit Ereignissen
     }
   
//--- Wenn das Flag am Ende gesetzt ist
   if(trailing_on)
     {
      //TrailingPositions(); // Nachlaufende Positionen
     // TrailingOrders(); // Trailing schwebender Aufträge
     }
     CArrayObj* list_positions=engine.GetListHistoryOrders();
           // list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_SYMBOL,Symbol(),EQUAL);
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_TIME_CLOSE,D'2020.12.10 10:00',MORE);
            //--- Positionen auswählen, deren Gewinn größer als Null ist
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_PROFIT,0,MORE);
            if(list_positions!=NULL)
              {Print("OK1");
               //--- Sortieren der Liste nach Gewinn 
               //list_positions.Sort(SORT_BY_ORDER_PROFIT);
               list_positions.Total();
               Print(list_positions.Total());
               //--- Ermitteln des Index der Position mit dem höchsten Gewinn
               int index=CSelect::FindOrderMax(list_positions,ORDER_PROP_PROFIT);
               if(index>WRONG_VALUE)
                 {Print("index= ",index);
                  COrder* position=list_positions.At(index);
                  if(position!=NULL)
                    {
                     //--- Ermitteln Sie das Ticket der Position mit dem höchsten Gewinn und schließen Sie die Position mit diesem Ticket
                     Print("OK");
                     Print(engine.GetListDeals());
                    }
                 }
              }
  }
 
Alexander:

Eingefügt in onTick() hat sich nichts geändert:

In jedem EA in den Beispielen gibt es einen Codeblock zur Auswahl und Schließung der Positionen mit dem höchsten Gewinn. Das kann man analog machen. Ich kann es mir nicht einmal ansehen - von meinem Handy aus.
 
Artyom Trishkin:

Was hält Sie davon ab, sich zu melden und diese Medaille selbst in Empfang zu nehmen?

Ich habe keinen Anspruch darauf. Du sollst sie haben. Du verdienst sie ;)

 
Aleksey Mavrin:

Ich habe keinen Anspruch. Lass es dich haben. Du verdienst es ;)

Ich danke dir. Ich will es nicht. Wir werden es anderen überlassen.

 

Es ist schade, aber es gibt keine starke Seite der MT5-Programmiergemeinschaft wie die gegenseitige Verbesserung des Codes und die Schaffung von Hilfe für öffentliche Arbeiten. Diejenigen, die Hilfe schreiben, zum Beispiel, verbessern immer ihr Verständnis des Codes.

Vielleicht ist es das Beste! Ich denke, ich werde noch alle Artikel des DoEasy-Zyklus lesen. Ich habe Artikel 34 erreicht, ich werde Ihnen sagen, dass es immer noch ein witziges coboeuvre)) ist. Pohodu Lesen denken, dass es schlecht ist, dass es kein Diagramm der Konstruktion, diese Software Kunst, aber ich denke, vielleicht für das Beste, dass Sie brauchen, um ein wenig zu denken.


Schlussfolgerungen aus den Artikeln sind sehr viel, vor allem für Amateur-Programmierer, die die meisten Händler novadais. Danke! Ich hoffe, es wird mehr sein.

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 

Scheiße, warum fragt jeder nach diesem Zertifikat? Es gibt eine Hilfe für SB, na und? Ich benutze sie nur, wenn ich den genauen Namen einer Methode vergessen habe, das geht etwas schneller, als die Klassenbeschreibung zu öffnen).

In SB gibt es bei Zeitreihen eine Methode, die die Puffergröße ändert. Ohne sie istdie Arbeit mit Zeitreihen eingeschränkt, und in der Hilfe steht kein Wort darüber, auch nicht über Standardwerte.

Warum also eine so mangelhafte Hilfe, wenn es einen Code gibt.

Auf jeden Fall sollte man, um ernsthaft damit zu arbeiten, den Code durchgehen, angefangen bei den Schnittstellen und weiterführend.

Also lenken Sie Artyom nicht mit der Hilfe ab, lassen Sie ihn tun, was er kann).

 
Aleksey Mavrin:

Scheiße, warum fragen alle immer wieder nach diesem Zertifikat? Es gibt eine Hilfe für SB, na und? Ich benutze sie nur, wenn ich den spezifischen Namen einer Methode vergessen habe, das geht schneller als die Klassenbeschreibung zu öffnen).

In SB gibt es bei Zeitreihen eine Methode, die die Puffergröße ändert. Ohne sie istdie Arbeit mit Zeitreihen eingeschränkt, und in der Hilfe steht kein Wort darüber, auch nicht über Standardwerte.

Warum also eine so mangelhafte Hilfe, wenn es einen Code gibt.

Auf jeden Fall sollte man, um ernsthaft damit zu arbeiten, den Code durchgehen, angefangen bei den Schnittstellen und weiterführend.

Also lenken Sie Artyom nicht mit der Hilfe ab, lassen Sie ihn tun, was er tun kann)

Die Arbeit ist noch groß und es ist notwendig, ein Zertifikat und eine Registrierung auf gitHub zu haben.