Diskussion zum Artikel "Universeller Expert Advisor: Pending Orders und Hedging Support (Part 5)"
Bitte an den Autor. Ihr Ansatz ist beim Schreiben von TC äußerst praktisch. Alles Überflüssige wird vor den Augen des Lesers verborgen, und das kann nur gefallen. Was bringt mir das?
Wenn ich einen Impuls-TC mit der klassischen Methode und der Ihren schreibe, wie viel langsamer wird Ihre Methode im Tester sein?
Es besteht kein Zweifel, dass Ihr Code schöner, prägnanter, bequemer und universeller sein wird.
Unterstützen Sie bereits Multisymbol-TCs (wo ist das Multisymbol OnTick)?
//|Contener-Klasse zur Verwaltung von Strategien vom Typ CStrategy |
Ein Tippfehler.
Es schien mir kurzsichtig, nur CStrategyList::OnChartEvent zu definieren und dann nur dieses im nativen OnChartEvent aufzurufen.
Ich hätte eine Basisklasse mit einem virtuellen OnChartEvent gemacht. Und absolut alle Klassen CStrategyList, CStrategy und andere (übrigens erbt man Indikatoren nicht von irgendetwas aus irgendeinem Grund) würden von der Basisklasse abgeleitet werden. Und in der nativen OnChartEvent, sollten Sie einmal in einer Schleife alle virtuellen OnChartEvent, die erstellt wurden, aufrufen.
Ich sehe, dass Sie Bibliotheken verwenden, die von Entwicklern geschrieben wurden. Zum Beispiel, Arrays. Sind diese normal geschrieben?
Sie haben dies überall in Ihrem Quellcode
#include <Strategy\Message.mqh>
Dies setzt voraus, dass ich keinen Strategy-Ordner für andere Bedürfnisse habe. Warum verwendest du keine Anführungszeichen in Includes, wenn es erlaubt ist? Und warum machen Sie nicht
#include <Sokolov\Strategy\Message.mqh>
Es schien mir kurzsichtig, nur CStrategyList::OnChartEvent zu definieren und dann nur dieses im nativen OnChartEvent aufzurufen.
Ich hätte eine Basisklasse mit einem virtuellen OnChartEvent gemacht. Und absolut alle Klassen CStrategyList, CStrategy und andere (übrigens erbt man Indikatoren nicht von irgendetwas aus irgendeinem Grund) würden von der Basisklasse abgeleitet werden. Und in das native OnChartEvent würde ich einen Aufruf in einer Schleife aller virtuellen OnChartEvent schreiben, die erstellt wurden.
Ja, das ist wahrscheinlich korrekter. Jetzt wird das OnChartEvent-Ereignis für Experten sozusagen ignoriert. Ich werde in der nächsten Version entsprechende Änderungen vornehmen.
Ich sehe, dass Sie Bibliotheken verwenden, die von Entwicklern geschrieben wurden. Zum Beispiel, Arrays. Sind sie gut geschrieben?
Ausgezeichnet und sie sind extrem optimiert. Im Laufe der Jahre, in denen sie verwendet werden, wurden alle Algorithmen in ihnen ausgearbeitet und feinabgestimmt. Deshalb empfehle ich sie.
Sie haben das überall im Quellcode so stehen.
Das setzt voraus, dass ich keinen Strategy-Ordner für andere Bedürfnisse habe. Warum verwendest du keine Anführungszeichen in Includes, wenn es erlaubt ist? Und warum macht man nicht
Quellen, die sich innerhalb des Strategy-Ordners befinden, verweisen nur lokal aufeinander, vielleicht habe ich etwas übersehen, ich weiß es nicht, aber es sollte lokale Verweise geben. Expert Advisor Dateien und das Expert Advisor mq5 Modul selbst verweisen global auf die Engine, und das ist auch richtig, da es ein Modul außerhalb der Bibliothek ist.
Ich habe mir EventChartPBarChanged.mqh angesehen. Warum wird const ignoriert, wo es erforderlich ist?
Bitte an den Autor. Ihr Ansatz ist beim Schreiben von TC äußerst praktisch. Alles Überflüssige wird vor den Augen des Lesers verborgen, und das kann nur gefallen. Was bringt mir das?
Wenn ich einen Impuls-TC mit der klassischen Methode und der Ihren schreibe, wie viel langsamer wird Ihre Methode im Tester sein?
Es besteht kein Zweifel, dass Ihr Code schöner, prägnanter, bequemer und universeller sein wird.
Unterstützen Sie bereits Multisymbol-TCs (wo ist das Multisymbol OnTick)?
Die meiste Zeit im Strategietester wird auf die Arbeit der Infrastruktur verwendet (Bar Scrolling, Emulation der Handelsumgebung, usw.) Viel weniger Zeit wird auf den Expert Advisor Code selbst verwendet.
Andererseits hat das Profiling gezeigt, dass die wichtigsten ressourcenintensiven Methoden von CSTartegy die BuyInit-, SellInit-, BuySupport- und SellSupport-Methoden sind - d.h. die Expert Advisor-Logik selbst. Alle anderen Methoden werden in optimaler Weise in flachen Code kompiliert oder einfach weggelassen, wenn sie nicht gebraucht werden. Deshalb ist die OOP-Programmierung auf hoher Ebene gerechtfertigt.
Beachten Sie, dass bei mehr oder weniger komplexen Expert Advisors mit vielen Regeln und einer umfangreichen Infrastruktur die Programmierung in einer ursprünglich flachen Form (ohne Funktionen und OOP) zu unvermeidlichen Programmierfehlern führen wird, und dass die Leistung eines solchen Expert Advisors infolgedessen noch geringer sein wird als mit OOP. Die Zeiten von Assembler sind vorbei. Der Compiler hat den Menschen in bestimmten Bereichen der Optimierung schon längst besiegt. Es bleibt dem Menschen überlassen, eine zunächst kompetente und skalierbare Architektur mit einer minimalen Anzahl von Schnittstellen und guter Handhabbarkeit zu definieren.
.
Wäre es nicht besser, nur einen MqlTick hinzuzufügen?
Das Video im Artikel ist in keinem Browser sichtbar.
Übrigens eine interessante Idee. Daran habe ich aus irgendeinem Grund nicht gedacht.
Es gibt Probleme mit dem Video. In der neuen Version der Website weigerte sich zu flashen. Jetzt kann man nur noch auf yuteb Videos anschauen. Es wird einige Zeit dauern, um Videos zu veröffentlichen, aber wir werden es bald beheben.
Die Quellen, die sich im Strategy-Ordner befinden, verweisen lokal aufeinander, vielleicht habe ich etwas übersehen, ich weiß es nicht, aber es sollten lokale Verweise sein. Expert Advisor Dateien und das Expert Advisor mq5 Modul selbst verweisen global auf die Engine, und das ist auch korrekt, da es ein Modul außerhalb der Bibliothek ist.
Durchgeschaut. Sehen Sie sich MoneyManagment.mqh an.
Globaler Verweis von mq5 - ich verstehe die Notwendigkeit vollkommen. Aber Sie haben den Ordner Include/Stategy mit Ihren Lösungen reserviert. Und ich benutze diesen Ordner für meine eigenen Bedürfnisse. Und ich möchte nicht die mqh von anderen Leuten darin sehen. Es wäre logisch, wenn Sie Ihre gesamte Infrastruktur nach Include\Sokolov/Strategy, Include\Sokolov/Strategy, Include\Sokolov/Panel usw. verschieben würden.

- 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 Universeller Expert Advisor: Pending Orders und Hedging Support (Part 5) :
Dieser Artikel enthält eine weitere Beschreibung der CStrategy Trading Engine. Auf vielfachen Wunsch der Nutzer, haben wir dieser Trading Engine noch die Unterstützung von wartenden/schwebenden (pending) Orders hinzugefügt. Zudem unterstützt die neueste Version von Metatrader 5 nun auch Konten mit einer hedging Option. Diese Unterstützung wurde auch der CStrategy hinzugefügt. Dieser Artikel bietet eine detaillierte Beschreibung der Algorithmen und für die Verwendung von Pending Orders, sowie die Prinzipien der Verwendung der CStartegy mit Konten, welchen die hedging-Option aktiviert haben.
Der neue Artikel der Serie, der der Entwicklung eines universellen Expert Advisor gewidmet ist, beinhaltet die Beschreibung einer weiteren Funktionalität der speziellen Trading Engine, mit welcher Sie ganz einfach einen Trading Roboter, welcher eine komplexe Logik benutzt, entwickeln können. Das Set der CStrategie-Klassen wird kontinuierlich verbessert. Es werden dieser Trading Engine neue Algorithmen hinzugefügt welche das Handeln effizienter und einfacher gestalten. Die weitere Entwicklung der Algorithmen resultiert im Wesentlichen aus dem Feedback von den Benutzern, die diese Serie von Artikeln lesen und ihre Fragen in den Foren oder auch durch persönliche Nachrichten stellen. Eine der am häufigsten gestellten Fragen hatte mit der Verwendung von Pending Orders zu tun. Da die CStrategy Klasse bisher kein komfortables Werkzeug für die Verwaltung von Pending Orders besaß, wurde dieses Thema in den vorherigen Artikeln noch nicht besprochen. Diese Artikel stellt nun bedeutende Ergänzungen der CStrategy Trading Engine vor. Nach all diesen Neuerungen, bietet die CStrategy nun Werkzeuge für das Arbeiten mit Pending Orders. Wie werden die Details dieser Neuerungen später besprechen.
Zusätzlich, bietet jetzt die neue Version der Metatrader Plattform 5 die Unterstützung für bidirektionales Trading mit Konten, welche die Hedging-Option aktiviert haben (Details hierzu finden Sie in dem Artikel "MetaTrader 5 unterstützt Hedging-Positionen"). Der Programmcode der CStrategy, wurde entsprechend modifiziert, damit die Innovationen der neuen Kontotypen einwandfrei unterstützt werden. Es waren nur wenige Änderung notwendig, um das Hedging unterstützen zu können, was darauf hindeutet, dass unser ursprünglicher Ansatz korrekt war: Änderungen und Ergänzungen, egal die global sie sind, stören die Operation der Trading Engine nicht. Darüber hinaus bieten die neuen MetaTrader 5 Werkzeuge, wie zum Beispiel das Hedging, viele interessante Möglichkeiten, die in den neuen Versionen der Strategie umgesetzt werden können.
Zusätzlich unterstützt die CStrategy jetzt auch die intuitiven und beliebten Methoden für die Abfrage der aktuellen Ask, Bit, und Last Kurse. Diese Methoden wurden in den ersten Kapitel dieses Artikels beschrieben.
Dieser Artikel beinhaltet eine Menge Informationen, damit alle Innovationen und Veränderungen in der CStrategy und Metatrader 5 abgedeckt werden. Dieser Artikel behandelt viele der Themen, die wir in den vorherigen Teilen bisher nicht besprochen haben. Ich hoffe, dieses wird Sie interessieren.
Abbildung 1. Eine Long-Position der CImpulse-Strategie.
Autor: Vasiliy Sokolov