Diskussion zum Artikel "Der MQL5 Assistent: Wie man ein Modul an Handelssignalen erzeugt" - Seite 7
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
Muss ich sie manuell in OnInit() hinzufügen? Ich kann also nicht tun, was ich über den Assistenten tun möchte?
Wo liegt das Problem? Sie führen zusätzliche Funktionen ein, so dass Sie ein wenig manuelle Arbeit leisten müssen.
Das ist überhaupt kein Problem, aber es entspricht nicht dem Konzept, dass der Master alles auf der Grundlage von benutzerdefinierten Modulen für Signale, Kapital usw. macht. Und der Artikel ist veraltet und entspricht nicht der Wahrheit:
Die Methode CheckCloseLong() erzeugt ein Signal zum Schließen einer Long-Position mit der Bestimmung des Exit-Levels. Sie wird vom Expert Advisor aufgerufen, um die Notwendigkeit der Schließung einer Long-Position zu bestimmen. Sie müssen die Methode überschreiben, wenn die Erzeugung eines Signals zum Schließen einer Long-Position beabsichtigt ist.
Es sind fast 6 Jahre vergangen und der Artikel ist noch nicht veraltet? Ich bin mir nicht sicher, da ich das Terminal fast jede Woche aktualisiert sehe.
Hallo zusammen,
Ich frage mich, wie man einen Nachkommen von CExpertSignal mit den beiden Mustern "Ausbruch" aus und "Einbruch" in eine beobachtete Handelsspanne erstellen kann, indem man den hier und in Exploring Trading Strategy Classes der Standardbibliothek - Customizing Strategie von Harvestervorgeschlagenen Ansatz verwendet . Meines Erachtens könnte (sollte) jede Signalklasse durch Überladen implementiert werden
und
Dann finden wir
dessen Ergebnis gegen signal.m_threshold_open und signal.m_threshold_closegetestet wird in
Die Parameter, die die Niveaus für den Markteintritt und das Setzen der Stop-Loss- und Take-Profit-Kurse angeben, würden dann von
zurückgegeben, die von der Standardimplementierung von bool CExpertSignal::CheckOpenLong(...) und bool CExpertSignal::CheckOpenShort(...), wie sie in der Basisklasse definiert sind,aufgerufen werden . Es sollte also genügen, zu überladen
um ein beliebiges neues Signal zu definieren. Beachten Sie, dass CExpertTrade den Code enthält, um zu erkennen, ob der gewünschte Einstiegskurs zu weit vom aktuellen Kurs entfernt ist, um Marktaufträge zu platzieren, und die Auswahl des Einstiegskurses verwendet, um automatisch zu entscheiden, ob ein Stop- oder ein Limitauftrag platziert werden soll.
Wenn jedoch die Trading-Range als der Bereich zwischen dem höchsten Hoch (HH) und dem niedrigsten Tief (LL) der letzten n Bars definiert ist, dann ist die Bedingung LL < Preis < HH immer wahr. Daher sollten sowohl int CExpertSignal::LongCondition(...) als auch int CExpertSignal::ShortCondition(...) immer das Muster 0 "break out" erkennen, und egal welchen Wert wir diesem Muster zuordnen, die Funktion int CExpertSignal::Direction() wird immer Null zurückgeben!
Der natürliche Ansatz der Überladung
so dass ersteres prüft
anstelle von
konnte noch nicht in eine erfolgreiche Version umgewandelt werden. Wie bereits erwähnt, wäre es einfach, bool CExpertSignal::OpenLongParams(...) den Einstiegskurs HH und bool CExpertSignal::OpenShortParams(...)den Einstiegskurs LL zurückgeben zu lassen , um das Signal zu vervollständigen und kontinuierlich 2 Stop-Orders zu erzeugen.
In meinen Augen wäre es wünschenswert, ein Beispiel zu haben, das zeigt, wie man diese Standard-Break-Out-Strategie in Bezug auf die Standardbibliothek implementiert und sie flexibel genug macht, indem man das alternative Muster "break in" bereitstellt, das zu Limit-Orders bei LL und HH führt. Offensichtlich würde ein solches Signal die Strategien
indem es diese als Muster bereitstellt. Für Hilfe bei der Fertigstellung dieses Ansatzes wäre ich sehr dankbar.
Hallo zusammen,
Ich frage mich, wie man einen Nachkommen von CExpertSignal mit den beiden Mustern "Ausbruch" aus und "Einbruch" in eine beobachtete Handelsspanne erstellen kann, indem man den hier sowie in Exploring Trading Strategy Classes of the Standard Library - Customizing Strategie by Harvestervorgeschlagenen Ansatz verwendet . Meiner Meinung nach könnte (sollte) jede Signalklasse durch Überladen der beiden Funktionen implementiert werden
Beachten Sie, dass CExpertTrade den Code enthält, um zu erkennen, ob der gewünschte Einstiegskurs zu weit vom aktuellen Kurs entfernt ist, um Marktaufträge zu platzieren, und die Auswahl des Einstiegskurses verwendet, um automatisch zu entscheiden, ob ein Stop- oder ein Limit-Auftrag platziert werden soll.
[...]
In meinen Augen wäre es wünschenswert, ein Beispiel zu haben, das zeigt, wie man diese Standard-Break-Out-Strategie in Bezug auf die Standardbibliothek implementiert und sie flexibel genug macht, indem man das alternative Muster "break in" bereitstellt, das zu Limit-Orders bei LL und HH führt. Ich wäre äußerst dankbar für Hilfe bei der Fertigstellung dieses Ansatzes.
Ich habe mich entschlossen, meine Bedenken neu zu formulieren, um sie so leicht wie möglich verständlich zu machen. In meinen Augen sind die beiden Artikel
zeigen im Allgemeinen, wie wir unsere eigenen Signalklassen auf einfachste Art und Weise schreiben können. Ich werde diese meine Erkenntnisse im Folgenden zusammenfassen.
Ich brauche jedoch noch eine Idee für die Fertigstellung der Implementierung eines Signals, das diesen Ansatz verwendet, um den Kauf/Verkauf vorzuschlagen, wenn der Preis höher/niedriger als der höchste/niedrigste Preis der letzten n Perioden ist. Dies soll dazu führen, dass ein Paar von Stop-Orders über und unter dem aktuellen Preis platziert wird. Ich habe bereits versucht, dies zu erreichen, indem ich die folgende Bedingung ersetzt habe
aber es scheint immer noch nicht zu funktionieren. Das ergibt für mich keinen Sinn, weil ich auch die Funktionen OpenLongParams(...) und OpenShortParams(...) überladen habe. Sie bestimmen die Levels, auf denen die gewünschten Stop-Orders platziert werden sollen. Könnte jemand, der mehr Einblick in die Ideen der MetaQuotes-Entwickler hat, erklären, wie sie diese einfachste Break-Out-Strategie umgesetzt hätten?
Da der Quellcode oft als die beste Dokumentation einer Software angesehen wird, habe ich einige Zeit damit verbracht, die Klasse CExpertSignal in MQL5\Include\Expert\ExpertSignal.mqh zu analysieren.
Mein Ergebnis war, dass die Funktionen, die die Handelsbedingungen überprüfen, sich im Wesentlichen darauf beschränken, den Wert der Funktion Direction() { return(LongCondition()-ShortCondition()); } wie folgt zu testen:
(Ich habe einige Codes entfernt, die nur für eine stabile Ausführung erforderlich sind, ohne in irgendeiner Weise zur Funktionalität beizutragen).
Diese Zusammenfassung zeigt, dass es für jede angepasste Strategieklasse ausreichend sein sollte, die Funktionen zu überladen
und der oben verlinkte Artikel 2. von Harvester erklärt, wie man das Makro IS_PATTERN_USAGE(x) in den ersten beiden so einsetzt, dass das resultierende Signal mehrere vordefinierte Muster erkennt.
Ich sehe folgendes Problem: Die Bedingung, ob der Preis zwischen dem höchsten Hoch und dem niedrigsten Tief der letzten n Bars liegt, muss immer wahr sein. Daher geben sowohl LongCondition(...) als auch ShortCondition(...) denselben Wert zurück, der mit dem Muster für den Ausbruchshandel verbunden ist, und der Wert von Direction() ist notwendigerweise Null, es sei denn, die Bedingungen in CheckOpenLong(...) und CheckOpenShort(...) werden geändert.
Aber warum ist es nicht ausreichend, LongCondition()>=m_threshold_open und ShortCondition()>=m_threshold_open zu verwenden?
Wenn ich die Datei verwende, die Sie an den Artikel angehängt haben, ist etwas falsch.
Ich finde, der Kommentar über Typ sollte wie folgt lauten:
//| Type=SignalAdvanced |
Vielen Dank für Ihre Nachricht. Ihre Nachricht hat mein Problem gelöst. Prost!
George
Hallo!
Als ich den Code kompilierte, erhielt ich drei Warnungen
Deklaration von 'm_open' verbirgt Mitglied samplesignal.mqh 42 23
Deklaration von 'm_close' verbirgt Mitglied samplesignal.mqh 43 23
m_open und m_close wurden in ExpertBase.mqh definiert, aber mit unterschiedlichem Typ.
m_expiratin wurde in ExpertSignal.mqh definiert.
Kommentieren Sie die obigen drei Zeilen aus. Die Warnungen sind verschwunden.
Georg
Wenn es möglich ist, den exakten, vollständigen und ausführbaren Code dieses Programms neu zu schreiben und seine Fehler zu korrigieren und ihn hier einzustellen
Hier ist er!
Prost, Zarik