Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Heikin Ashi einer höheren Zeitebene. (http://www.expert-advisor.com/forum/showthread.php?t=6995)

Mr_Snow 22.05.21 19:48

Heikin Ashi einer höheren Zeitebene.
 
Hi,

nach 5 Stunden Suche, bin ich am Ende. Was in MQL4 mit 4 Codezeilen zu machen ist, scheint in MQL5 einfach unlösbar.

Was habe ich vor: Ich will an jeder Kerze im Chart (M5) prüfen, wie der entsprechnde Heikin Ashi auf Zeitebene M30 aussieht.

Code:

//Holt das Handle
int handleHA = iCustom(Symbol(),PERIOD_M30,"Examples\\Heiken_Ashi");

//Trägt Open und Close für alle Kerzen im Chart in den Buffer
CopyBuffer(handleHA,0,0,Bars(Symbol(), PERIOD_CURRENT),bufferOpen);
CopyBuffer(handleHA,1,0,Bars(Symbol(), PERIOD_CURRENT),bufferClose);

//Holt für die jeweilige abzufragende Kerze den Wert aus dem Array
openH = bufferOpen[shiftHA];
closeH = bufferClose[shiftHA];

Mein Problem ist, das diese Werte für openH und closeH immer Null sind - egal was ich versuche. Das Handel liefert 10 zurück. Wo liegt mein Fehler? Kann da jemand helfen?

Danke vorab.

Indikator-Trading 22.05.21 23:00

Code:

//Holt das Handle
int handleHA = iCustom(Symbol(),PERIOD_M30,"Examples\\Heiken_Ashi");

Das ist jetzt das Handle von dem Heiken_Ashi in M30. Also nur in M30, in keiner anderen Timeframe


Code:

//Trägt Open und Close für alle Kerzen im Chart in den Buffer
CopyBuffer(handleHA,0,0,Bars(Symbol(), PERIOD_CURRENT),bufferOpen);
CopyBuffer(handleHA,1,0,Bars(Symbol(), PERIOD_CURRENT),bufferClose);

Hier kommen wir zu dem ersten Problem. Was ist PERIOD_CURRENT? M30, M15, D1 ???
handleHA bezieht sich nur auf M30. Die verfügbaren Bars aus einer anderen Timeframe als M30 abzufragen, macht also keinen Sinn. Auch stellt sich mir die Frage, ob du wirklich alle HA Bars abfragen musst, oder evtl. nur die letzen X Bars um dein Signal zu generieren.
Bei der Abfrage der aller ersten Bars im M30 TF wirst du sowieso keine sinnvollen Werte erwarten können. Der HA-Indikator braucht ein paar Bars um seine Berechnungen durchzuführen, ich glaube es sind in der Standardeinstellung 6 Bars. Vorher werden keine Sinnvollen Werte aus dem HA Indikator kommen. Das selbe gilt für jeden "laggy" Indikator, also einen Indikator, welcher Daten aus der Vergangenheit zur Ermittlung seiner Signale benötigt. Einfachstes Beispiel: SMA 10, also der Mittelwert von den letzten 10 Werten. Willst du jetzt den Wert vom aller ersten Bar abfragen, dann wird das im Idealfall einfach nur genau dieser Wert sein, was noch der Beste Fall wäre. Dies hängt davon ab wie schäbig das der jeweilige Programmiere umgesetzt hat. Bar 2 wäre dann schon der Mittelwert von den letzten beiden Bars, mehr aber auch nicht. Damit du also immer sinnvolle Werte deiner Indikatoren abfragst, musst du wissen wie viele Bars der jeweilige Indikator mindestes zu Berechnung benötigt. Dies sollte dann im Idealfall bei der Abfrage Rechnung getragen werden.

Code:

//Holt für die jeweilige abzufragende Kerze den Wert aus dem Array
openH = bufferOpen[shiftHA];
closeH = bufferClose[shiftHA];

ist das Array Serial oder nicht, also in welcher Reihenfolge beschrieben?
Dies wird durch den Aufruf von ArraySetAsSeries() mit den entsprechenden Parametern definiert.
Welchen Wert hat shiftHA?

Gruß Timo


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:00 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum