Diskussion zum Artikel "Universeller Expert Advisor: Pending Orders und Hedging Support (Part 5)" - Seite 2
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Voreingenommenheit gegenüber const-Methoden. Ich wurde Programmierer in C# - und dort gibt es das nicht, weil die durch den Modifikator auferlegte Beschränkung nicht wirksam ist.
Ich dachte naiverweise, dass dieser Modifikator dem Compiler auch mitteilt, wo er beim Kompilieren optimalen nativen Code erstellen soll....
Ich verwende ihn selbst zur Selbstkontrolle.
Die meiste Zeit im Strategietester wird für die Arbeit der Infrastruktur aufgewendet (Scrollen der Balken, Emulation der Handelsumgebung usw.). Der Expert Advisor-Code selbst benötigt viel weniger Zeit.
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.
.
Ich dachte naiverweise, dass dieser Modifikator dem Compiler auch mitteilt, wo er bei der Kompilierung optimalen nativen Code erstellen soll.....
Ich verwende ihn selbst zur Selbstkontrolle.
Ich bin mit Händen und Füßen für OOP. Solange sich dahinter nicht nur Krückenlösungen verstecken, wie bei Multisymbol OnTick. Was offiziell von Entwicklern als keine Krückenlösung angesehen wird.
Leider kann man hier auf der Benutzerebene nichts machen. Obwohl OnTick in CStrtategy multivalent ist, wird seine Multivalenz auch durch Krücken emuliert. Es wird einfach bei jedem eingehenden Ereignis der Tick eines anderen Instruments abgefragt, und wenn er sich geändert hat, wird ein neues OnTick-Ereignis für dieses Instrument erzeugt. Bei FORTS bietet CStrategy übrigens dank des OnBookEvent-Ereignisses ein echtes Multicurrency-OnTick. Aber auch hier handelt es sich um eine Emulation bei der Arbeit im Testprogramm.
Eine weitere Möglichkeit besteht darin, CStrategy mit einem Ressourcenindikator zu versehen. Beim Start startet CStrategy eine Instanz dieses Indikators auf dem erforderlichen Symbol und empfängt von ihm das Ereignis eines neuen Ticks. Dann wird es in OnTick CStrategy umgewandelt. Das ist eine klassische Krücke, aber die gesamte Implementierung ist meisterhaft hinter den Kulissen versteckt, und jede Strategie arbeitet auf einheitliche Weise, ohne zu wissen, wie diese Ticks empfangen wurden.
Leider kann hier auf Benutzerebene nichts getan werden. Obwohl OnTick in CStrtategy mehrwährungsfähig ist, wird die Mehrwährungsfähigkeit auch durch Krücken emuliert. Es wird einfach bei jedem eingehenden Ereignis der Tick eines anderen Instruments abgefragt, und wenn er sich geändert hat, wird ein neues OnTick-Ereignis für dieses Instrument erzeugt. Bei FORTS bietet CStrategy übrigens dank des OnBookEvent-Ereignisses ein echtes Multicurrency-OnTick. Aber auch hier handelt es sich um eine Emulation bei der Arbeit im Testprogramm.
Leider fehlen bei diesem Ansatz die Ticks.
Eine andere Möglichkeit besteht darin, CStrategy mit einem Ressourcenindikator zu versehen. Beim Start startet CStrategy eine Instanz dieses Indikators auf dem erforderlichen Symbol und empfängt von ihm das Ereignis der Ankunft eines neuen Ticks. Dann wird es in OnTick CStrategy umgewandelt. Das ist eine klassische Krückenvariante, aber die gesamte Implementierung ist meisterhaft hinter den Kulissen versteckt, und jede Strategie arbeitet auf einheitliche Weise, ohne zu wissen, wie diese Ticks empfangen wurden.
Leider geht dieser Ansatz daneben.
Ja, diese Option wird von den Entwicklern befürwortet. Aber IMHO erscheint sie furchtbar krüppelhaft, wenn man bedenkt, wie die Ressourcen eines optimierten Testers für die einfachste Aufgabe auf anderen Plattformen verwendet werden. OOP versteckt die Krücke sicherlich meisterhaft.Ich habe diagonal gelesen, sehr nützliche Artikel, ich komme kaum durch - vielleicht habe ich etwas übersehen, ich interessiere mich für Anhänger, aber viele Daten fehlen im Impuls, bitte Fingerzeig... oder muss ich sie selbst eingeben????
Ich habe diagonal gelesen, sehr nützliche Artikel, ich komme kaum durch - vielleicht habe ich etwas übersehen, ich interessiere mich für Anhänger, aber viele Daten fehlen im Impuls, bitte Fingerzeig... oder muss ich sie selbst eingeben????
Wenn du etwas nicht verstehst, kannst du in diesem Thread Fragen stellen.