Diskussion zum Artikel "Cross-Plattform Expert Advisor: Die Klassen CExpertAdvisor und CExpertAdvisors Classes"
Hallo Enrico. Sieht so aus, als hättest du dein Projekt abgeschlossen. Ich habe mir gerade deinen letzten Artikel angesehen und dabei einen Fehler entdeckt, den ich für möglich halte:
bool CExpertAdvisorBase::Init(string symbol,int period,int magic,bool every_tick=true,bool one_trade_per_candle=true,bool position_reverse=true) { m_symbol_name=symbol; CSymbolInfo *instrument; if((instrument=new CSymbolInfo)==NULL) return false; if(symbol==NULL) symbol=Symbol(); if(!instrument.Name(symbol)) return false; instrument.Refresh(); m_symbol_man.Add(instrument); m_symbol_man.SetPrimary(m_symbol_name); m_period=(ENUM_TIMEFRAMES)period; m_every_tick=every_tick; m_order_man.Magic(magic); m_position_reverse=position_reverse; m_one_trade_per_candle=one_trade_per_candle; CCandle *candle=new CCandle(); candle.Init(instrument,m_period); m_candle_man.Add(candle); Magic(magic); return false; }
Ich habe ihn oben in orange hervorgehoben. Ich denke, die Rückgabeanweisung sollte ein true statt false sein. Ich bin gerade dabei, meinen PC neu aufzusetzen, da ich mir einen schlimmen Virus eingefangen habe, der mir den Tag versaut hat, also habe ich beschlossen, etwas zu lesen. Ihre Arbeit ist eine der besten, die man im Forum lesen kann. Sie haben sich mit diesem Projekt selbst übertroffen, gut gemacht.
Meine Idee ist ähnlich wie deine, und ich habe einige wirklich tolle Ideen aus deiner Arbeit mitgenommen, danke. Wenn ich fertig bin, werde ich mir etwas Zeit nehmen, um sie hier zu teilen.
Hallo Enrico. Sieht so aus, als hättest du dein Projekt abgeschlossen. Ich habe mir gerade deinen letzten Artikel angesehen und dabei einen Fehler entdeckt, den ich für möglich halte:
Ich habe ihn oben in orange hervorgehoben. Ich denke, die Rückgabeanweisung sollte ein true statt false sein. Ich bin gerade dabei, meinen PC neu aufzusetzen, da ich mir einen schlimmen Virus eingefangen habe, der mir den Tag versaut hat, also habe ich beschlossen, etwas zu lesen. Ihre Arbeit ist eine der besten, die man im Forum lesen kann. Sie haben sich mit diesem Projekt selbst übertroffen, gut gemacht.
Meine Idee ist ähnlich wie deine, und ich habe einige wirklich tolle Ideen aus deiner Arbeit mitgenommen, danke. Wenn ich fertig bin, werde ich mir etwas Zeit nehmen, um sie hier zu teilen.
Hallo Shep,
Hallo Enrico. Sieht so aus, als hättest du dein Projekt abgeschlossen. Ich habe mir gerade deinen letzten Artikel angesehen und dabei einen Fehler entdeckt, den ich für möglich halte:
Ich habe ihn oben in orange hervorgehoben. Ich denke, die Rückgabeanweisung sollte ein true statt false sein. Ich bin gerade dabei, meinen PC neu aufzusetzen, da ich mir einen schlimmen Virus eingefangen habe, der mir den Tag versaut hat, also habe ich beschlossen, etwas zu lesen. Ihre Arbeit ist eine der besten, die man im Forum lesen kann. Sie haben sich mit diesem Projekt selbst übertroffen, gut gemacht.
Meine Idee ist ähnlich wie deine, und ich habe einige wirklich tolle Ideen aus deiner Arbeit mitgenommen, danke. Wenn ich fertig bin, werde ich mir etwas Zeit nehmen, um sie hier zu teilen.
Es tut mir leid zu hören, was passiert ist, aber ich danke Ihnen für Ihr Feedback. Ja, Sie haben Recht. Ich habe es bis jetzt nicht bemerkt. Ich werde es korrigieren. Der Aufruf der Init()-Methode in den Beispielen wird nicht überprüft, aber Teil meiner zukünftigen Pläne für die Bibliothek ist es, die Funktions- und Methodenaufrufe formaler zu gestalten (genau wie in der Standardbibliothek), sowie eine EA-Vorlage zur einfacheren Codierung. Später werde ich die neueste Version der Bibliothek in die Codebase hochladen und das Repository öffentlich machen. Ihr weiteres Feedback und Pull Requests sind willkommen.
Gern geschehen und ich freue mich auf Ihre Bibliothek.
Hallo Shep,
es tut mir leid zu hören, was passiert ist, aber ich danke Ihnen für Ihr Feedback. Ja, Sie haben recht. Ich habe es bis jetzt nicht bemerkt. Ich werde es korrigieren. Der Aufruf der Init()-Methode in den Beispielen wird nicht überprüft, aber Teil meiner zukünftigen Pläne für die Bibliothek ist es, die Funktions- und Methodenaufrufe formaler zu gestalten (genau wie in der Standardbibliothek), sowie eine EA-Vorlage zur einfacheren Codierung. Später werde ich die neueste Version der Bibliothek in die Codebase hochladen und das Repository öffentlich machen. Ihr weiteres Feedback und Pull Requests sind willkommen.
Gern geschehen und ich freue mich auf deine Bibliothek.
Hallo Enrico. Ich stehe endlich kurz vor der Fertigstellung einer neuen Systeminstallation. Ich habe letzte Nacht stundenlang gekämpft, weil ich überhaupt keine Kontrolle über mein System bekommen habe, aber jetzt ist es fast fertig. Ich benutze mein Tablet zum Stöbern und um etwas zu lesen. Ihre Bibliothek ist wirklich eine großartige Arbeit. Jetzt, wo sie fertig ist, kann ich die ganze Logik sehen - wow!
Meine Idee ist also die folgende.
- Der EA erstellt eine Liste von Robotern (als KI-Entität) basierend auf einer Kombination aus Magie, Symbol und Zeitrahmen (mit Watch Window).
- Die KI-Einheit geht dann in eine Trickkiste (die Signale - MA, PSAR, etc.) und bestimmt das beste Signal oder eine Kombination von Signalen. Das beste Signal basiert auf einer internen Backtesting-Engine, die einen Vergleich zwischen den Signalen ermöglicht.
- Die KI fügt dann das/die Signal(e) in eine Liste ein und handelt auf dieser Grundlage und lernt bei Bedarf neu.
- Jede KI verfügt über Stop-, Order- und Positionsobjekte, die sie individuell verwaltet, sowie über einen Zugang zu einem Optimierungsobjekt (GA) für das Lernen. Ich dachte daran, für die KI-Entscheidungsfindung die Nützlichkeitstheorie zu verwenden (ähnlich der Gewichtung, die im MQL5 EA System verwendet wird), aber ich mochte die angewandte Willkür nicht, also entschied ich mich stattdessen für das Lernen durch virtuelles Handeln, was der KI ein fast echtes, menschliches Verhalten verleiht.
Ich hatte eine harte Zeit zu verstehen, wie man einige der Ideen zu implementieren, und das Lesen von Artikeln wie Sie und eine Menge anderer Artikel auf dem Forum und Bücher hat mich zu einem Punkt, wo ich bin über ein wirklich cooles Projekt abzuschließen führen - so denke ich jedenfalls.
Eines der Hauptprobleme, die Sie erwähnt haben, ist die Serialisierung. Da eine Live-Order oder -Position nicht alle Attribute des Objekts enthält, das sie geöffnet hat, führt ein Systemabsturz dazu, dass die KI in einen ungültigen Zustand versetzt wird, was eine Menge verwaister Trades zur Folge hat. Ich dachte daran, den Auftragskommentar zu verwenden. Wenn ich also eine Order sende, erstelle ich einen Kommentar mit Timeframe, SignalName und SignalSettings verkettet. Bald merkte ich, dass dies sehr schnell unhandlich wird und anfällig für Implementierungsprobleme ist. Also scheint das Schreiben in eine Datei das einzige zu sein, was Sinn macht.
Nun, ich lasse Sie über meine Fortschritte wissen, wenn Sie interessiert sind. Aber Ihre Arbeit ist wirklich großartig, vielen Dank für Ihre Zeit für das Projekt.
Shep
Hallo Shep,
Hallo Enrico. Ich bin endlich kurz davor, eine neue Systeminstallation abzuschließen. Ich habe letzte Nacht stundenlang gekämpft, weil ich keine Kontrolle über mein System bekommen konnte, aber jetzt ist es fast fertig. Ich benutze mein Tablet zum Stöbern und um etwas zu lesen. Ihre Bibliothek ist wirklich eine großartige Arbeit. Jetzt, wo sie fertig ist, kann ich die ganze Logik sehen - wow!
Meine Idee ist also die folgende.
- Der EA erstellt eine Liste von Robotern (als KI-Entität) basierend auf einer Kombination aus Magie, Symbol und Zeitrahmen (mit Watch Window).
- Die KI-Einheit geht dann in eine Trickkiste (die Signale - MA, PSAR, etc.) und bestimmt das beste Signal oder eine Kombination von Signalen. Das beste Signal basiert auf einer internen Backtesting-Engine, die einen Vergleich zwischen den Signalen ermöglicht.
- Die KI fügt dann das/die Signal(e) in eine Liste ein und handelt auf dieser Grundlage und lernt bei Bedarf neu.
- Jede KI verfügt über Stop-, Order- und Positionsobjekte, die sie individuell verwaltet, sowie über einen Zugang zu einem Optimierungsobjekt (GA) für das Lernen. Ich dachte daran, für die KI-Entscheidungsfindung die Nützlichkeitstheorie zu verwenden (ähnlich der Gewichtung, die im MQL5 EA System verwendet wird), aber ich mochte die angewandte Willkür nicht, also entschied ich mich stattdessen für das Lernen durch virtuelles Handeln, was der KI ein fast echtes, menschliches Verhalten verleiht.
Ich hatte eine harte Zeit zu verstehen, wie man einige der Ideen zu implementieren, und das Lesen von Artikeln wie Sie und eine Menge anderer Artikel auf dem Forum und Bücher hat mich zu einem Punkt, wo ich bin über ein wirklich cooles Projekt abzuschließen führen - so denke ich jedenfalls.
Eines der Hauptprobleme, die Sie erwähnt haben, ist die Serialisierung. Da eine Live-Order oder -Position nicht alle Attribute des Objekts enthält, das sie geöffnet hat, führt ein Systemabsturz dazu, dass die KI in einen ungültigen Zustand versetzt wird und viele verwaiste Trades zurückbleiben. Ich dachte daran, den Auftragskommentar zu verwenden. Wenn ich also eine Order sende, erstelle ich einen Kommentar mit Timeframe, SignalName und SignalSettings, die miteinander verkettet sind. Bald merkte ich, dass dies sehr schnell unhandlich wird und anfällig für Implementierungsprobleme ist. Also scheint das Schreiben in eine Datei das einzige zu sein, was Sinn macht.
Nun, ich lasse Sie über meine Fortschritte wissen, wenn Sie interessiert sind. Aber Ihre Arbeit ist wirklich großartig, vielen Dank für Ihre Zeit für das Projekt.
Shep
Das klingt nach einem interessanten Projekt. Allerdings sieht es nach einem sehr großen Projekt aus (wahrscheinlich größer und anspruchsvoller als dieses). Erlauben Sie mir, Ihnen einige meiner Gedanken mitzuteilen, von denen ich glaube, dass sie Ihnen helfen könnten:
Ich habe schon einmal ein Backtester-Skript geschrieben. Ich habe es geschafft, dass es mit virtuellen Trades so funktioniert, wie ich es wollte, aber seine Leistung wäre langsam, wenn man es in einem echten EA verwenden würde (ganz zu schweigen von einem selbstoptimierenden!). Vielleicht haben Sie mehr Erfolg bei Ihrer Arbeit, wenn Sie die anderen CPU-Kerne (oder sogar die GPU) irgendwie dazu bringen können, ebenfalls Berechnungen durchzuführen (z. B. DLL oder OpenCL).
Die Liste der Roboter funktioniert, hat aber einen großen Fehler: Sie werden nicht parallel ausgeführt. Die Verzögerung ist in Ordnung, wenn es sich nur um einige wenige handelt, aber wenn es mehr sind, werden die am Ende der Liste stehenden Roboter als letzte verarbeitet. Und diese müssten dann auch noch mit den Ressourcen konkurrieren, die der EA für seine eigentliche Arbeit benötigt.
Der virtuelle Handel kann schöne Modelle erstellen, aber er erfasst nicht das tatsächliche Rauschen im Markt (d. h. Nachrichten). Das habe ich auf die harte Tour gelernt.
Ich habe die gleichen Gedanken wie Sie bezüglich des in der CSignal-Klasse der Standardbibliothek verwendeten Wiegesystems. Meiner Meinung nach ist das System sehr anfällig für eine Überanpassung, wenn es mit einem Optimierer eingesetzt wird. Ich habe einen Market-Maker-Bot, der ein Marktbewertungsmodell verwendet (LMSR, aber ich arbeite noch an der Verbesserung des Bestandsrisikos). Ich halte dies für eine sehr gute Alternative, da die Gewichtung der Kauf- und Verkaufssignale (und sogar des Fehlens eines Signals) kollektiv berücksichtigt werden kann und die Ausgaben in Form von Wahrscheinlichkeiten erfolgen. Und es ist weit weniger ressourcenintensiv als Deep Learning.
Das Speichern in einer Datei ist im Moment wahrscheinlich die beste Option, um flüchtige Daten zu speichern. Die Verwendung von GVs ist eine weitere Möglichkeit, aber sie kann noch unübersichtlicher werden als die Verwendung von Auftragskommentaren. Außerdem fügen einige Broker andere Codes in Auftragskommentare ein (z. B. binäre Optionen), so dass dies meiner Meinung nach auch keine sehr gute Methode ist. Eine andere Möglichkeit besteht darin, alle Daten in einem Dictionary-Objekt zu speichern, so dass Sie keine Codezeilen schreiben müssen, die eine Reihe von Lade- und Speichermethoden implementieren, aber Sie müssen auch auf der Festplatte speichern. Es gibt jedoch ein großes Problem, wenn der Benutzer eine neue Sitzung mit einem EA starten möchte. Dies muss manuell angegangen werden (entweder Löschen der Speicherdatei oder Zuweisen eines neuen Dateinamens).
Bei der Implementierung der Dateiklassen in dieser Bibliothek habe ich ein paar OOP-Regeln gebrochen. Ich hatte das Problem, dass das Dateihandle seinen Wert verlor (und zu INVALID_HANDLE wurde), wenn es über Methoden und Funktionen weitergegeben wurde (sogar mit dem Qualifier const). Ich bin mir nicht sicher, ob dies immer noch der Fall ist, aber ich bin mit der aktuellen Lösung recht zufrieden. Um ehrlich zu sein, war die Verwendung eines CFile-Abkömmlings in der Bibliothek nicht immer elegant, aber es funktioniert und führt zu viel weniger Code.
Alles Gute für Sie,
Enrico
Ich danke Ihnen sehr für Ihren Beitrag. Ich freue mich jederzeit über Ihre Ideen.
Ja, Sie haben Recht, dass es ein großes Projekt sein wird, hoffentlich nicht noch größer als Ihres, es ist eine Menge Arbeit und stressig noch dazu. Aber ich liebe das Programmieren, und wenn man bedenkt, dass ich eigentlich Finanzanalyst bin. Ich habe aus der Not heraus mit der Programmierung begonnen, weil ich einige der komplexeren Finanzmodelle automatisieren musste. Ich habe einfach eine seltsame Fähigkeit, auf verrückte, bizarre Ideen zu kommen. Wenn ich nur so gut programmieren könnte wie Sie!
Ich sehe mir im Moment Dictionaries und Lists<T> an. List<T> vor allem als einfacheres Mittel zur gemeinsamen Nutzung von Objektlisten, aber auch zum Binden. Und Dictionary für die Speicherung und Serialisierung. Ich habe mit einigen Ideen experimentiert, um meine Codebasis zu verkleinern, aber auch um ein System zu haben, das schnell und wartungsarm ist und bei dem man buchstäblich die Hände frei hat, sobald man es auf ein Chart fallen lässt. Ihr Punkt über die Listen ist wirklich wertvoll, so dass diese Idee vielleicht nicht so ideal ist.
Sie haben Recht, wenn es um die Verarbeitung von Schlacke geht, wenn ich keine parallelen Ausführungen verwende - und selbst dann ist es langsam. Das ist eines der Probleme, die ich bei meinen Tests entdeckt habe. Die letzten Objekte in der Liste sind viel zu spät, vor allem, wenn der Markt wirklich volatil ist, die OnTick, kann es mehrere aufgerufen werden, bevor auch die ersten Objekte in der Liste aufgerufen werden. Wie Sie vorgeschlagen haben, habe ich mir OpenCL als mögliche Lösung angesehen. Ich werde in ein maßgeschneidertes System investieren müssen.
Der virtuelle Handel bietet in der Tat großartige Modelle, die Ihr Konto in unruhigen Märkten völlig auslöschen können. Ich habe eines Tages in Panik beobachtet, wie mein EA während der Nachrichten Schwierigkeiten hatte, Geschäfte zu platzieren, geschweige denn zu schließen. Das ist die kalte, harte Realität des Handels, aber wir müssen es versuchen.
Ja, ich stimme mit Ihnen überein, dass der Scoring-Modell-Ansatz besser ist. Der LMSR-Ansatz ist definitiv besser, vor allem wenn man bedenkt, dass Aufwärts- und Abwärtsbewegungen für jedes Instrument sehr unterschiedlich sind. Ein wahrscheinlichkeitsgewichteter Ansatz verbessert auf jeden Fall die Genauigkeit.
Das selbstlernende Verfahren ist in der Tat ziemlich langsam. Es wird nur zu Beginn verwendet, um die KI-Agenten einzurichten und sie mit den entsprechenden Signalen auszustatten, und dann in bestimmten Abständen, z. B. am Ende des Tages für 5-Min-Agenten und an einem Freitag für die 1-Stunden-Agenten. Das bringt uns zu dem Punkt, den Sie über das virtuelle Training angesprochen haben, mit dem man Milliarden verdienen kann, nur um dann beim Live-Handel das ganze Geld zu verlieren. Es ist also eine Herausforderung für mich, Signale zu finden, die sehr einfach und schnell sind, damit ich nicht zu viel Geschwindigkeit verliere. Ich möchte, dass das System für ein paar Pips nach Spread und Kommission skalpiert. Das bedeutet, dass es sich bei den Trades um Setups mit wirklich hoher Wahrscheinlichkeit handeln muss, wie z. B. der Hammer, der am tiefsten Punkt der letzten 20 Balken liegt, oder etwas Ähnliches.
Da ich mich auf Scalping konzentrieren möchte, muss ich die Trades vielleicht nicht so sehr überwachen. Die Agenten prüfen nur das Setup und geben dann einen Auftrag mit Stop und Takeprofit, der dann ausgestoppt oder mit Gewinn geschlossen wird. Auch hier experimentiere ich noch mit.
Ich habe noch eine Menge Arbeit, experimentieren mit Ideen rund um die Signale. Wenn ich etwas mit wirklich guten Ergebnissen finde, werde ich es mit Ihnen teilen.
Sie haben ein paar Regeln gebrochen, aber das ist ja das Schöne am Programmieren! Es ist erstaunlich, wie man sich an Regeln halten kann und trotzdem nicht weiterkommt und das Gefühl hat, man könnte die Wand hochgehen. Und manchmal ist das Brechen der Regeln genau das, was man braucht, um voranzukommen. Deine Arbeit ist großartig, und dafür habe ich großen Respekt vor dir. Enrico: Programmieren ist harte Arbeit. Es ist schön, wenn es glatt läuft, und eine echte Qual, wenn es nicht nach Plan läuft.
Vielen Dank für Ihren Beitrag. Ich bin Ihnen sehr dankbar und werde Sie auf jeden Fall auf dem Laufenden halten.
Nochmals vielen Dank,
Shep
Ich danke Ihnen sehr für Ihren Beitrag. Ich freue mich jederzeit über Ihre Ideen.
Ja, Sie haben Recht, dass es ein großes Projekt sein wird, hoffentlich nicht noch größer als Ihres, es ist eine Menge Arbeit und stressig noch dazu. Aber ich liebe das Programmieren, und wenn man bedenkt, dass ich eigentlich Finanzanalyst bin. Ich habe aus der Not heraus mit der Programmierung begonnen, weil ich einige der komplexeren Finanzmodelle automatisieren musste. Ich habe einfach eine seltsame Fähigkeit, auf verrückte, bizarre Ideen zu kommen. Wenn ich nur so gut programmieren könnte wie Sie!
Ich sehe mir im Moment Dictionaries und Lists<T> an. List<T> vor allem als einfacheres Mittel zur gemeinsamen Nutzung von Objektlisten, aber auch zum Binden. Und Dictionary für die Speicherung und Serialisierung. Ich habe mit einigen Ideen experimentiert, um meine Codebasis zu verkleinern, aber auch um ein System zu haben, das schnell und wartungsarm ist und bei dem man buchstäblich die Hände frei hat, sobald man es auf ein Chart fallen lässt. Ihr Punkt über die Listen ist wirklich wertvoll, so dass diese Idee vielleicht nicht so ideal ist.
Sie haben Recht, wenn es um die Verarbeitung von Schlacke geht, wenn ich keine parallelen Ausführungen verwende - und selbst dann ist es langsam. Das ist eines der Probleme, die ich bei meinen Tests entdeckt habe. Die letzten Objekte in der Liste sind viel zu spät, vor allem, wenn der Markt wirklich volatil ist, die OnTick, kann es mehrere aufgerufen werden, bevor auch die ersten Objekte in der Liste aufgerufen werden. Wie Sie vorgeschlagen haben, habe ich mir OpenCL als mögliche Lösung angesehen. Ich werde in ein maßgeschneidertes System investieren müssen.
Der virtuelle Handel bietet in der Tat großartige Modelle, die Ihr Konto in unruhigen Märkten völlig auslöschen können. Ich habe eines Tages in Panik beobachtet, wie mein EA während der Nachrichten Schwierigkeiten hatte, Geschäfte zu platzieren, geschweige denn zu schließen. Das ist die kalte, harte Realität des Handels, aber wir müssen es versuchen.
Ja, ich stimme mit Ihnen überein, dass der Scoring-Modell-Ansatz besser ist. Der LMSR-Ansatz ist definitiv besser, vor allem wenn man bedenkt, dass Aufwärts- und Abwärtsbewegungen für jedes Instrument sehr unterschiedlich sind. Ein wahrscheinlichkeitsgewichteter Ansatz verbessert auf jeden Fall die Genauigkeit.
Das Selbstlernverfahren ist in der Tat ziemlich langsam. Es wird nur zu Beginn verwendet, um die KI-Agenten einzurichten und sie mit den entsprechenden Signalen auszustatten, und dann in bestimmten Abständen, z. B. am Ende des Tages für 5-Min-Agenten und an einem Freitag für die 1-Stunden-Agenten. Das bringt uns zu dem Punkt, den Sie über das virtuelle Training angesprochen haben, mit dem man Milliarden verdienen kann, nur um dann beim Live-Handel das ganze Geld zu verlieren. Es ist also eine Herausforderung für mich, Signale zu finden, die sehr einfach und schnell sind, damit ich nicht zu viel Geschwindigkeit verliere. Ich möchte, dass das System für ein paar Pips nach Spread und Kommission skalpiert. Das bedeutet, dass es sich bei den Trades um Setups mit wirklich hoher Wahrscheinlichkeit handeln muss, wie z. B. der Hammer, der am tiefsten Punkt der letzten 20 Balken liegt, oder etwas Ähnliches.
Da ich mich auf Scalping konzentrieren möchte, muss ich die Trades vielleicht nicht so sehr überwachen. Die Agenten prüfen nur das Setup und geben dann einen Auftrag mit Stop und Takeprofit, der dann ausgestoppt oder mit Gewinn geschlossen wird. Auch hier experimentiere ich noch mit.
Ich habe noch eine Menge Arbeit, experimentieren mit Ideen rund um die Signale. Wenn ich etwas mit wirklich guten Ergebnissen finde, werde ich es mit Ihnen teilen.
Sie haben ein paar Regeln gebrochen, aber das ist ja das Schöne am Programmieren! Es ist erstaunlich, wie man sich an Regeln halten kann und trotzdem nicht weiterkommt und das Gefühl hat, man könnte die Wand hochgehen. Und manchmal ist das Brechen der Regeln genau das, was man braucht, um voranzukommen. Deine Arbeit ist großartig, und dafür habe ich großen Respekt vor dir. Enrico: Programmieren ist harte Arbeit. Es ist schön, wenn es glatt läuft, und eine echte Qual, wenn es nicht nach Plan läuft.
Vielen Dank für Ihren Beitrag. Ich bin Ihnen sehr dankbar und werde Sie auf jeden Fall auf dem Laufenden halten.
Nochmals vielen Dank,
Shep
Hallo Enrico,
Haben Sie eine Idee, wie ich einen spezifischen Kommentar zu der Bestellung/Position hinzufügen kann, je nach Signal, auf dem der Handel ausgelöst wurde? Sagen wir, Signal 1 hat funktioniert - Kommentar "Signal A" und so weiter.
Danke!
Es ist nicht leicht für mich, dem zu folgen, weil ich gerade erst ankomme, aber ich danke allen, die es mir ermöglichen, durch ihr Wissen voranzukommen.
Veröffentlichter Artikel Plattformübergreifender Trading Advisor: CExpertAdvisor und CExpertAdvisors Klassen:
Autor: Enrico Lambino
Es wurde eine Menge Arbeit geleistet.
Herzlichen Dank dafür!
- 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 Cross-Plattform Expert Advisor: Die Klassen CExpertAdvisor und CExpertAdvisors Classes :
In diesem Artikel geht es in erster Linie um die Klassen CExpertAdvisor und CExpertAdvisors, die als Container für alle anderen in dieser Artikelserie beschriebenen Komponenten im Hinblick auf einen plattformübergreifende Expert Advisor dienen.
Die Methode OnTick() in CExpertAdvisor ist die am häufigsten verwendete Funktion innerhalb der Klasse. Dieser Methode veranlasst die meiste Aktionen. Ihre Arbeitsweise ist im folgenden Ablaufdiagramm dargestellt:
Autor: Enrico Lambino