Das große Problem sind die mit vollkommen Unnötigem überladenen Beispiele in der Dokumentation.
Ich wollte sowieso eine zynische Anfrage starten, ob Metaquotes dem Ein- oder Umsteiger absichtlich diese Prügel vor die Beine wirft.
Des Pudels Kern wird unter unnötigen, unübersichtlichen Kommentaren versteckt.
Das die OnInit() den Indi/EA initialisiert braucht man doch nicht immer in einem riesigen Kasten wiederholen.
Kurz zu iCustom und CopyBuffer, da gibt es schon gemeine Fallstricke.
1. Die Parameter in iCustom müssen, sofern angegeben, Datentypmässig passen.
Oft werden beim Indi trennende Leerzeilen (string) angegeben. Die müssen bei iCustom mitberücksichtigt werden, sofern man Parameter hinter diesen setzen will !!!!!
2. In CopyBuffer muss man lt. Reference die Buffernummer anführen.
Gemeint ist aber der Bufferindex!!!!!!
Eine Nummer beginnt bei mir mit 1 ein Index bei 0. Das hat mich viel Zeit gekostet.
Die Buffer sollten (mit Ausnahmefällen) immer als ArraySetAsSeries(buffer,true) indexiert werden.
Das genügt 1x in der OnInit, nicht jedesmal in der OnTick.
Bei Indikatoren hingegen muß in der OnCalculate JEDES mal ArraySetAsSeries(high,true) usw. ausgeführt werden.
Abschließend: es besteht kein großer Unterschied ob man einen integrierten Indi (zB iMA) oder einen eigenen mit iCustom verwendet.
Besonders wichtig bei iCuston: handle auf Gültigkeit prüfen.
string indiname="MySuperIndicator" handel=iCustom(_Symbol,_Period,indiname) if(handle==INVALID_HANDLE) { Alert("*ERROR* creating handle for "+indiname); return(INIT_FAILED); }
Viel Erfolg, und bleib dran. (der Code den du gepostet hast hat mit einem EA aber nix zu tun ;)
Hier ist trotzdem ein Link den du wahrscheinlich noch nicht kennst, der ist OK https://www.mql5.com/de/articles/496
- 2016.01.27
- Dmitriy Parfenovich
- www.mql5.com
Danke, für die Antwort, das Problem lag jetzt aber darin, dass ich im EA und im indicator folgende Zeile hatte:
logfile=FileOpen("log.txt",FILE_WRITE|FILE_TXT|FILE_ANSI);
Beim Zweiten Versuch die Datei anzulegen im Indicator, hat er einfach gestoppt. Also nicht versuchen die selbe Datei an zwei Stellen öffnen.
Problem gelöst
Das große Problem sind die mit vollkommen Unnötigem überladenen Beispiele in der Dokumentation.
Ich wollte sowieso eine zynische Anfrage starten, ob Metaquotes dem Ein- oder Umsteiger absichtlich diese Prügel vor die Beine wirft.
Des Pudels Kern wird unter unnötigen, unübersichtlichen Kommentaren versteckt.
Das die OnInit() den Indi/EA initialisiert braucht man doch nicht immer in einem riesigen Kasten wiederholen.
Du sprichst mir aus der Seele Otto, und die Kommentare von machen Moderatoren sind genauso sinnlos wie die Dokumentation, wenn diese lesbar wäre, dann würden sich viele Fragen gar nicht stellen.
- 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.
Ich habe einen ganz einfachen, meinen ersten EA aufgesetzt, der nichts anders macht als zu prüfen, ob EURUSD Periode M1 geöffnet ist. Ist das der Fall rufe ich die Funktion iCustom auf. Aber der Indicator wird dadurch nicht meinem Chart zugeordnet. Ich vermute, beim Debuggen wird der Indicator irgendeinem Chart zugeordnet, aber nicht meinem. Dieses Problem konnte ich dann noch lösen, aber der Indikator liefert mit CopyBuffer keine Daten aus meinem Indikator. Die Funktion CopyTime liefert mir die richtigen Daten. Letztlich scheint das Problem zu sein, dass der Indikator, den ich über den EA meinem Chart zuordne, nicht arbeitet. Habe natürlich jede Menge Sleep eingebaut, um das Problem einzugrenzen.
Der Indikator selbst arbeitet hervorragend, wenn ich ihn einfach dem Chart zuordne, aber aus dem EA heraus arbeitet er nicht.
Meine Fragen sind:
Wie starte ich einen selbst geschriebenen Indikator und hänge ihn an genau den Chart, für den er geschrieben ist, aus einem EA heraus, so dass ich die Daten, die ich im Indikator berechne, im EA mit CopyBuffer einlesen kann?
Bitte nicht einen Link auf "Wie schreibt man einen Indikator" oder "EA & Indikator" Beispiel. Denn genau da habe ich meine Infos her. Mein Problem ist ja auch nicht der Indikator. Sondern wie starte ich den Indikator aus dem EA.
Hier noch ein Codefragment, das zeigt wie ich den Indikator starte, der dann aber nicht arbeitet. Das mit CopyBuffer habe ich weggelassen, da der Indikator eh nicht arbeitet. (Siehe OnInit() Funktion)