
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
Wie bekomme ich den aktuellen "ExtHBuffer[i-2]" Wert von OnCalculate in OnTick?
Da gibt es einen Artikel "Leitfaden zur Verwendung technischer Indikatoren in Expert Advisors", dort ist es recht einfach erklärt.
Hi Pennyhunter,
zunächst herzlichen Dank für die erste konstruktive Antwort in diesem Thread :-)
Einen funktionierenden EA auf Basis eines normalen EA's habe ich bereits. Heißt, ich versuche lediglich, den iMA durch HeikenAshi-Werte zu ersetzen.
Mit der iCustom Funktion habe ich gestern auch rumprobiert und mit einem Code-Schnipsel auch erste Erfolge gehabt. Wenn ich das als Skript ausführe, werden die gewünschten Werte (OHLC + letzte Candle Colour) geprintet:
Wenn ich diesen Code nun in meinen (mit iMA-funktionierenden) EA einsetze, wird der Array für die Heiken Ashi Werte nicht richtig aus dem Buffer befüllt. Ich habe zu Versuchszwecken mal das ganze Order-Gedöns auskommentiert und in die OnTick Stelle den letzten HA-Low Wert ausgeben lassen und als Skript gestartet. In der Ausgabe wird mein Wert bei jedem Tick mit 0.0 ausgegeben und nicht mit dem korrekten Low-Wert der letzten Kerze. Hast du eine Idee was bei dem Übertrag schief geht? Ich meine das Konzept zwischen OnCalculate aus einem Indikator und dem OnTick Verhalten eines EA's mittlerweile verstanden zu haben :-)
Was meinst Du denn mit: " Wenn ich diesen Code nun in meinen (mit iMA-funktionierenden) EA einsetze, wird der Array für die Heiken Ashi Werte nicht richtig aus dem Buffer befüllt. "?
Hast Du die Werte Deines EAs auf einem Chart mit denen des Indikators auf demselben Chart verglichen?
Hast Du einfach mal nach Heiken Ashi EA gesucht? Ich finde allein 7 in der CodeBase. Warum alles selber machen, wenn es das doch bereits gibt?
Zumindest kann man dort schauen, wie die das machen.
Was meinst Du denn mit: " Wenn ich diesen Code nun in meinen (mit iMA-funktionierenden) EA einsetze, wird der Array für die Heiken Ashi Werte nicht richtig aus dem Buffer befüllt. "?
Hast Du die Werte Deines EAs auf einem Chart mit denen des Indikators auf demselben Chart verglichen?
Hast Du einfach mal nach Heiken Ashi EA gesucht? Ich finde allein 7 in der CodeBase. Warum alles selber machen, wenn es das doch bereits gibt?
Zumindest kann man dort schauen, wie die das machen.
Also ich habe mir ein Skript erstellt (siehe erster Code Teil), der sich aus dem Standard Heiken Ashi Indikator von MT5 die Buffer-Werte abholt. Das Skript gibt die Werte der letzten Candle so aus wie gewollt.
Im nächsten Schritt versuche ich, den Inhalt dieses Scripts in meinen EA aufzunehmen. Der originale EA verwendet MA-Werte, ich muss also "nur" diese Teile durch die HA-Informationen austauschen. Man sollte meinen, dass das jetzt kein Ding ist, aber leider wird in dem EA nicht mehr der korrekte Heiken Ashi Wert verwendet, sondern 0.0 --> Ich vermute, dass ich irgendetwas falsch mache beim Zugriff auf den Buffer Wert bzw. bei der Zuweisung der Variable HA_Low?
Mein Anspruch ist nicht, dass ich jemanden beauftrage oder mir einen fertigen EA kaufe. Ich möchte es gerne selber lernen und dazu muss ich verstehen, was passiert. Wenn ich beim ersten Problem mir einen fertigen Code kaufe, ist der Lerneffekt leider nicht so groß. Das Trading ist für mich nur zu 50% von Bedeutung, da ich versuche ebenfalls andere Programmiersprachen zu lernen. Daneben ist eine Weiterentwicklung des EA's auch schwierig wenn man nicht versteht, wie der funktioniert.
Aber danke für den Tipp mit der Codebase. Ich schaue mir die EAs mal an, vielleicht fällt dann ja der Groschen :-)
Ist mir zwar nicht ganz klar, weil mit diesem Befehl ja nur der Indikator konfiguriert wird (?) und nicht mit Bufferwerten befüllt wird, oder? Dass der Handle nun bei jedem Tick aufs neue erstellt wird, scheint mir nicht ganz logisch. Wenn mich jemand aufklären kann, wäre das super :-)
Hab die Ursache scheinbar gefunden. Wenn ich den folgenden Teil in den "OnTick" Bereich schiebe und nicht im "OnInit" lasse, werden korrekte Werte berechnet und im OnTick korrekt weiter verarbeitet
Ist mir zwar nicht ganz klar, weil mit diesem Befehl ja nur der Indikator konfiguriert wird (?) und nicht mit Bufferwerten befüllt wird, oder? Dass der Handle nun bei jedem Tick aufs neue erstellt wird, scheint mir nicht ganz logisch. Wenn mich jemand aufklären kann, wäre das super :-)
iCustom in OnTick ist ein Ticket zum Crash. Denn es wird mir jedem Aufruf ein neues Handle erzeugt, bis das Maximum erreicht ist und das Terminal aufgibt.
Das hab ich bereits vermutet, macht auch keinen Sinn. Das war aber scheinbar auch nicht der Grund.
Ich hatte den Variablen
zweimal den Typ double zugewiesen. Nachdem ich im OnInit Bereich den Typ entfernt hatte, ging es :-)
Das hab ich bereits vermutet, macht auch keinen Sinn. Das war aber scheinbar auch nicht der Grund.
Ich hatte den Variablen
zweimal den Typ double zugewiesen. Nachdem ich im OnInit Bereich den Typ entfernt hatte, ging es :-)
Ich hatte den Variablen
zweimal den Typ double zugewiesen. Nachdem ich im OnInit Bereich den Typ entfernt hatte, ging es :-)
Das hätte man in weniger als 1 Minute mit dem Debugger herausgefunden:
https://www.mql5.com/de/articles/654 // Zur Fehlerbehebung von MQL5-Programmen (Debugging)
Vielleicht hilft das Dir ja auch:
https://www.mql5.com/de/articles/10 // MQL5: Erstellen Ihres eigenen Indikators
https://www.mql5.com/en/forum/296230 // How to start with MQL5: Usefull Hints and lots of code!!
https://www.mql5.com/de/articles/9266 // Tips from a professional programmer (Part I): Code storing, debugging and compiling. Working with projects and logs
https://www.mql5.com/de/articles/9327 // Tips from a professional programmer (Part II): Storing and exchanging parameters between an Expert Advisor, scripts and external programs
https://www.mql5.com/de/articles/567 Grundlagen der Programmierung in MQL5: Arrays
Die Handles müssten auch int sein. Bin mir nicht sicher ob Du mit double überhaupt etwas angezeigt kriegst, da das Handle eigentlich nicht richtig initialisiert ist, wie Carl übrigens schon sagte. Aber in der OnInit sollten sie schon sein, da es sich um eine einmalige Sache handelt. Es liefe auch in der Tick, aber dann wären es viele unnötige Ausführungen, das hat ja Carl auch schon gesagt.
Der Handle funktioniert auch als double, schmeißt dann allerdings ein paar warnings, die dann weg sind wenn man das richtige Datenformat verwendet.
--> Ja, nachdem ich dem Handle nur einmal einen Datentyp zugewiesen hatte, waren die Werte korrekt. Der EA funktioniert so wie gewollt, zumindest mit dem jetzt vorhandenen rudimentären Inhalt.
So wie ich sehe, zeigt der Wert [1] die Daten von der letzten abgeschlossenen Kerze an. [0] zeigt die aktuellen Werte der nicht abgeschlossenen Kerze an, welche für meine Handelsstrategie irrelevant sind.
So wie ich den Pfad in iCustom angegeben hab, wird der im EA Ordner und dann im Stammverzeichnis der Indikatoren gesucht (da hab ich meinen HA-Indikator abgelegt).