Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil VII)"
Ich würde gerne die Implementierung mehrerer TCs sehen, die diese Bibliothek und alternative Bibliotheken verwenden.
Und eine vergleichende Analyse, natürlich. Insbesondere die Leistung im Tester/Optimierer, die Codegröße und die Geschwindigkeit beim Schreiben.
Ich würde gerne die Implementierung mehrerer TCs sehen, die diese Bibliothek und Alternativen verwenden.
Und vergleichende Analyse, natürlich. Insbesondere die Leistung im Tester/Optimierer, die Codegröße und die Geschwindigkeit beim Schreiben.
Es ist noch früh. Im Moment haben wir noch nicht die notwendige Funktionalität vorbereitet, um die erklärte Einfachheit bei der Erstellung unserer eigenen Programme zu realisieren. Die notwendige Basis wird noch geschaffen. Im achten Teil wird die Funktionalität zur Verfolgung anderer Ereignisse, wie z.B. die Änderung von Aufträgen und Positionen, deren Stop-Levels, implementiert und beschrieben. Der nächste Artikel ist in Vorbereitung, der mit der Fertigstellung für die Kompatibilität mit MQL4 beginnen wird. Der nächste Schritt wird sein, vollwertige Handelsklassen zu erstellen, dann mit Symbolen und Konten zu arbeiten. Und dann werden wir User-Case-Funktionen für den einfachen und schnellen Zugriff auf alle von der Bibliothek erfassten und kontrollierten Daten erstellen. Und dies wird nicht die letzte Phase sein, da eine Reihe von Möglichkeiten für die Verwendung neuer grafischer Objekte, die in die Bibliothek integriert sind, vorbereitet werden, wobei der Zugriff auf diese als Standardobjekte erfolgt. Das heißt, die Bibliothek wird in der Lage sein, ihre eigenen grafischen Objekte zu erstellen und ihre eigene grafische Hülle auf der Leinwand zu haben sowie die Möglichkeit, aus diesem Satz eigene grafische Elemente für ihre Programme zu erstellen. Dies ist von der bisher geplanten, aber es gibt noch Pläne für die Umsetzung.
Und die Verwirklichung von TC - es wird insbesondere nach der Schaffung von User-Case-Funktionen möglich sein. Natürlich ist es auch jetzt schon möglich, etwas zu tun, aber nicht schnell und einfach - denn es erfordert den direkten Zugriff auf Listen und Bibliotheksobjekte durch Zeiger, und das ist kein "take and get" - aber in den Beispielen von Beratern, die den Artikeln beigefügt sind, ist ein solcher Zugriff teilweise organisiert.
... Und dies wird nicht die letzte Stufe sein, da eine Reihe von Möglichkeiten zur Verwendung neuer grafischer Objekte, die in die Bibliothek integriert sind, vorbereitet werden, mit dem üblichen Zugriff auf sie - wie auf die Standardobjekte. D.h., die Bibliothek wird die Fähigkeit haben, ihre eigenen grafischen Objekte zu erstellen und ihre eigene grafische Hülle auf der Leinwand zu haben + die Fähigkeit, aus diesem Satz von eigenen grafischen Elementen für ihre Programme zu erstellen....
Werden Sie eine Grafikbibliothek für Canvas schreiben?
Ja, natürlich. Aber nicht nur auf Canvas. Es werden einige "zusammengesetzte" Objekte aus dem Satz der Standard-Grafikobjekte zur Erstellung zur Verfügung stehen, außerdem werden Formulare zur Erstellung einer eigenen GUI mit vollem Zugriff auf alle von der Bibliothek gesammelten und kontrollierten Daten angeboten - ein Satz von vorgefertigten Objekten, plus die Möglichkeit, daraus eine eigene GUI zu erstellen. Natürlich wird alles so gemacht, dass der Benutzer vollen Zugriff auf alle Bedürfnisse aus einer Bibliothek hat - "out of the box" sozusagen. Stecken Sie eine Bibliothek ein und Sie haben alle notwendigen Funktionen, um alle Ihre Wünsche zu verwirklichen - ohne nach den erforderlichen Lösungen zu suchen, die irgendwo geschrieben und veröffentlicht wurden.
Ja, natürlich. Nicht nur darauf. Es werden einige "zusammengesetzte" Objekte aus der Menge der grafischen Standardobjekte zur Verfügung stehen, außerdem werden Formulare zur Erstellung einer eigenen grafischen Benutzeroberfläche mit vollem Zugriff auf alle von der Bibliothek gesammelten und kontrollierten Daten angeboten - eine Reihe von vorgefertigten Objekten sowie die Möglichkeit, daraus eine eigene grafische Benutzeroberfläche zu erstellen. Natürlich wird alles so gemacht, dass der Benutzer vollen Zugriff auf alle Bedürfnisse aus einer Bibliothek hat - sozusagen "out of the box". Stecken Sie eine Bibliothek ein, und Sie haben alle notwendigen Funktionen, um alle Ihre Wünsche zu verwirklichen - ohne nach den erforderlichen Lösungen zu suchen, die irgendwo geschrieben und veröffentlicht wurden.
Das heißt, Sie werden eine Multiplattform-Softwareumgebung mit allen Möglichkeiten zur Erstellung beliebiger EAs schaffen. Universelle Bibliothek für beide Plattformen mit Grafiken auf Leinwand.
...ohne die erforderlichen Lösungen irgendwo geschrieben und veröffentlicht zu finden.
Bedeutet das, dass die Bibliothek zu einer Personalbibliothek wird?
Nein. Das bedeutet, dass eine Bibliothek völlig ausreichend ist.
Artem, ich danke dir!
In der Methode:
//+------------------------------------------------------------------+ //|| Aktualisiert die Auftragsliste| //+------------------------------------------------------------------+ void CMarketCollection::Refresh(void)
Eine "Market Order" wird dynamisch erstellt
#else //--- Positionen int total_positions=::PositionsTotal(); for(int i=0; i<total_positions; i++) { ulong ticket=::PositionGetTicket(i); if(ticket==0) continue; CMarketPosition *position=new CMarketPosition(ticket); if(position==NULL) continue; //--- Hinzufügen eines Positionsobjekts zur Liste der Marktaufträge und Positionen if(!this.AddToListMarket(position)) continue; //--- Abrufen des Index der Kontrollreihenfolge nach Ticket und Positionskennung int index=this.IndexControlOrder(ticket,position.PositionID()); //--- Wenn der Auftrag nicht in der Liste der Kontrollaufträge enthalten ist, fügen Sie ihn hinzu if(index==WRONG_VALUE) { if(!this.AddToListControl(position)) { ::Print(DFUN_ERR_LINE,TextByLanguage("Kontrollposition konnte nicht hinzugefügt werden","Failed to add a control position "),position.TypeDescription()," #",position.Ticket()); } } //--- Wenn der Auftrag bereits in der Liste der Kontrollaufträge vorhanden ist - prüfen Sie ihn auf Eigenschaftsänderungen else if(index>WRONG_VALUE) { this.OnChangeEvent(position,index); } } //--- Befehle int total_orders=::OrdersTotal(); for(int i=0; i<total_orders; i++) { ulong ticket=::OrderGetTicket(i); if(ticket==0) continue; ENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)::OrderGetInteger(ORDER_TYPE); //--- Marktauftrag if(type<ORDER_TYPE_BUY_LIMIT) { CMarketOrder *order=new CMarketOrder(ticket); if(order==NULL) continue; //--- Marktauftragsobjekt zur Liste der Marktaufträge und Positionen hinzufügen if(!this.AddToListMarket(order)) continue; } //--- Schwebende Bestellung else { CMarketPending *order=new CMarketPending(ticket); if(order==NULL) continue; //--- Hinzufügen eines schwebenden Auftragsobjekts zur Liste der Marktaufträge und Positionen if(!this.AddToListMarket(order)) continue; //--- Abrufen des Index der Kontrollreihenfolge nach Ticket und Positionskennung int index=this.IndexControlOrder(ticket,order.PositionID()); //--- Wenn der Auftrag nicht in der Liste der Kontrollaufträge enthalten ist, fügen Sie ihn hinzu if(index==WRONG_VALUE) { if(!this.AddToListControl(order)) { ::Print(DFUN_ERR_LINE,TextByLanguage("Fehler beim Hinzufügen des Kontrollauftrags","Failed to add a control order "),order.TypeDescription()," #",order.Ticket()); } } //--- Wenn der Auftrag bereits in der Liste der Kontrollaufträge vorhanden ist - prüfen Sie ihn auf Eigenschaftsänderungen else if(index>WRONG_VALUE) { this.OnChangeEvent(order,index); } } } #endif
Dann wird sie per Referenz an die Methode übergeben:
//--- Marktauftragsobjekt zur Liste der Marktaufträge und Positionen hinzufügen if(!this.AddToListMarket(order)) continue;
In der Methode"AddToListMarket" wird die Marktorder nicht in der Hashsumme "hash_sum" berücksichtigt, warum müssen wir sie dann eingeben und kontrollieren?
Bitte erklären Sie, warum wir sie brauchen, wenn wir alle Informationen aus der Position oder der schwebenden Order herausfinden können?

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil VII): Ereignis der Aktivierung einer StopLimit-Order, Vorbereiten der Funktionsweise bei Änderungen von Aufträgen und Positionen :
In den vorherigen Artikeln haben wir begonnen, eine große plattformübergreifende Bibliothek zu erstellen, die die Entwicklung von Programmen für MetaTrader 5 und MetaTrader 4 Plattformen vereinfacht. Im sechsten Teil erweiterten wir die Bibliothek für die Arbeit mit Positionen auf Netting-Konten. Jetzt werden wir die Verfolgung der Aktivierung von StopLimit-Ordern implementieren und die Funktionsweise zur Verfolgung von Ereignissen von Order- und Positionsänderungen vorbereiten.
Um die implementierten Verbesserungen zu testen, werden wir den EA aus dem vorherigen Artikel verwenden. Benennen Sie einfach den TestDoEasyPart06.mq5 EA aus dem Ordner \MQL5\Experts\TestDoEasy\Part06 in TestDoEasyPart07.mq5 um und speichern Sie ihn im neuen Unterordner \MQL5\Experts\TestDoEasy\ Part07.
Kompilieren Sie den EA, starten Sie ihn im Tester, platzieren Sie eine StopLimit-Order und warten Sie auf die Aktivierung:
Autor: Artyom Trishkin