|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Fehler im MT4?
Ich habe beim testen eines eigenen EAs ein nicht korrektes verhalten festgestellt . Bei der näheren Analyse habe ich festgestellt, dass der EA einen Angeforderten Close Wert einfach bei einigen Timeframes nicht einliest.
Daraufhin ab ich einen EA mit dem Assistenten erstellt, der nur wenige Zeilen Code enthält. //+------------------------------------------------------------------+ //| a1.mq4 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- double xClose1 = iClose(NULL,1,0); double xClose60 = iClose(NULL,60,0); double xClose240 = iClose(NULL,240,0);; Comment("M1 = ",xClose1," M60 = ",xClose60," M240 = ",xClose240); //+------------------------------------------------------------------+ } Lasse ich den nun laufen, steht bei M1 immer 0.0. Die anderen Werte werden korrekt eingelesen. Habe es auf verschiedenen Währungen laufen lassen, schwerpunkt EURUSD immer das selbe M1 wird immer mit 0.0 angezeigt. Ich habe auf Periode H1 gestellt - es geht nicht -, stelle ich die Periode auf M1 um funktioniert alles so wie es soll. Nur leider benötige ich für für meine Strategie, die auf H1 läuft, für einige Berechungen einfach den aktuellen Close auf M1. Ist das ein Problem des Testers? Ober besser gefragt, was mache ich falsch?
__________________
...tu nicht selbst, was andere für dich tun können... [I] alte Programmierer-Philosophie /I] |
|
|||
Wenn Du Close Bar 0 meinst, also die ganz ganz rechte, die sich stets verändert, kann der ja eigentlich nur den selben Wert in allen Timeframes haben. Ausser ich verwechsel irgendwas...
|
|
|||
Zitat:
Wenn ich jetzt nicht den Close brauche sondern High oder Low, dann geht das nicht mehr, dass ich einfach einen Wert aus einer anderen Zeiteinheit nehme. Da Die Werte ja auf das Timeframe gesehen zurückgegeben werden.
__________________
...tu nicht selbst, was andere für dich tun können... [I] alte Programmierer-Philosophie /I] |
|
|||
Ich hab da eine Vermutung:
Bei der aktuellen Kerze ist doch der Close-Kurs noch nicht festgelegt und deshalb null. Versuch mal iOpen, der müsste feststehen. iHigh und iLow müssten Werte zurückgeben, die sich jedoch noch ändern können. |
|
|||
Aber klar funktioniert das, warum auch nicht? Mit iClose() auf der aktuellen Kerze wird immer der Wert des aktuellen Bid genommen, denn dieser Wert stellt sozusagen immer das temporäre Close der Kerze dar, da es der letzte Kurswert ist.
Da wird wohl mit Deinem Tester oder Deiner MT-Version was nicht in Ordnung sein. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
@traderdoc
ist logisch. hab das nicht getestet. Also müsste iClose gleich dem aktuellen Bid sein !? |
Lesezeichen |
Stichworte |
code fehler, fehler, metatrader fehler, mql4, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|