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 MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   iHigh auslesen fehlerhaft (http://www.expert-advisor.com/forum/showthread.php?t=4127)

Ca$hDigger 04.03.15 17:38

iHigh auslesen fehlerhaft
 
Hallo,

Code:

int start()
  {
 
double high = iHigh("EURUSD",1440,0);
double low = iLow("EURUSD",1440,0);
double open = iOpen("EURUSD",1440,0);
double close = iClose("EURUSD",1440,0);

string TEXT = "  high="+high +"  low="+low +"  open="+open+"  close="+close;
Comment("WERTE: ",TEXT);

  }

ich habe ein blödes Problem, im Backtester werden iHigh iLow iOpen iClose falsch ausgelesen. Wenn ich den Backtest zB in GBPUSD durchführe sind alle Werte gleich also falsch. Nur wenn ich es in EURUSD durchführe sind die Werte korrekt in allen anderen Paaren ist es falsch. Im Livebetrieb besteht dieses Problem nicht. Wie bekomme ich im Backtest die korrekten Daten vom anderen Währungspaar?

lg C$D

ForexGT 04.03.15 18:00

Hi Ca$hDigger,

hast Du sicher gestellt, dass Du aus dem History Center die Daten für das Paar GBP/USD vollständig heruntergeladen hast?

traderdoc 04.03.15 18:23

Zitat:

Zitat von ForexGT (Beitrag 29022)
Hi Ca$hDigger,

hast Du sicher gestellt, dass Du aus dem History Center die Daten für das Paar GBP/USD vollständig heruntergeladen hast?

Da er sich laut Code auf Shift 0 bezieht, also auf die aktuelle Kerze, spielt das vollständige Herunterladen eigentlich keine Rolle.
Und ich gehe jetzt mal davon aus, dass Du beim Backtesten von GBPUSD das Symbol auch im Code vorhanden ist!?

traderdoc

Ca$hDigger 04.03.15 19:34

Zitat:

Zitat von ForexGT (Beitrag 29022)
Hi Ca$hDigger,

hast Du sicher gestellt, dass Du aus dem History Center die Daten für das Paar GBP/USD vollständig heruntergeladen hast?


Ja die Daten sind vorhanden. Der Backtest im visuellen Modus wäre sonst auch nicht durchführbar.

Ca$hDigger 04.03.15 19:40

Zitat:

Zitat von traderdoc (Beitrag 29023)
Da er sich laut Code auf Shift 0 bezieht, also auf die aktuelle Kerze, spielt das vollständige Herunterladen eigentlich keine Rolle.
Und ich gehe jetzt mal davon aus, dass Du beim Backtesten von GBPUSD das Symbol auch im Code vorhanden ist!?

traderdoc

Nein GBPUSD ist in diesem Test-Code nicht vorhanden. Auf GBPUSD und anderen habe ich getestet aber die korrekten Daten von EURUSD kommen nur rüber wenn ich im EURUSD selbst teste. Auch wenn GBPUSD im Code nutze und dort teste kommen nicht die korrekten EURUSD daten rüber.

Ca$hDigger 04.03.15 21:18

Liste der Anhänge anzeigen (Anzahl: 1)
Live gehts aber hier sieht man im Backtest sind alle Werte gleich also komplett falsch ausgelesen...:confused:

ForexGT 05.03.15 10:34

Zitat:

Zitat von Ca$hDigger (Beitrag 29027)
Live gehts aber hier sieht man im Backtest sind alle Werte gleich also komplett falsch ausgelesen...:confused:

Hi, sag mal, über welchen Zeitraum testest Du denn?

Ca$hDigger 05.03.15 15:56

Liste der Anhänge anzeigen (Anzahl: 2)
Zeiträume hab ich verschiedene getestet, es ist immer das gleiche, die Werte ändern sich zwar hin und wieder mal aber High Low Close Open haben immer den selben Wert.

Ich hänge mal mq4 und ex4 an dann kann man es einfach mal selbst ausprobieren (auf visuell stellen dann sieht man die Werte). Egal ob Build 765 oder 509 es ist immer das selbe, im Backtester ist das Auslesen eines chartfremden Währungspaares fehlerhaft! :confused:

ForexGT 06.03.15 10:41

Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Ca$hDigger,

ich bin mir (noch) nicht sicher, ob dies weiterhilft. Ich schlage vor, Du änderst Deinen Code wie unten ab (siehe fett gedruckte Passagen):

int start()
{

double high = iHigh(NULL,1440,0);
double low = iLow(NULL,1440,0);
double open = iOpen(NULL,1440,0);
double close = iClose(NULL,1440,0);

string TEXT = " high="+high +" low="+low +" open="+open+" close="+close;
Comment("WERTE: ",TEXT);

return(0);

}

Ich habe eine kleine Variante Deines Ansatzes geschrieben, wo die Ergebnisse im Journal sichtbar werden (der besseren Verfolgbarkeit wegen). Wie gesagt, ich weiss noch nicht so richtig, ob dir das weiterhilft....

Ca$hDigger 06.03.15 11:26

Ziel ist es ein Währungspaar auszulesen das im Backtest nicht ausgewählt wurde. Also ich teste im Strategietester GBPUSD und möchte auch Daten von zB EURUSD bekommen. Wenn NULL statt "EURUSD" eingetragen ist werden bei einem Test unter GPBUSD auch nur GPBUSD Werte ausgelesen und nicht die von zB EURUSD.

traderdoc 06.03.15 11:44

Das ist korrekt,da nutzt es auch nichts, wenn die Werte über die aktuelle Kerze ausgelesen werden. D.h. auch die Benutzung von Close[0] etc? bringen nur die Werte des im Tester eingestellten WP.
Ich werde der Sache mal heute Abend nachgehen.

traderdoc

ForexGT 06.03.15 12:27

Zitat:

Zitat von Ca$hDigger (Beitrag 29052)
Ziel ist es ein Währungspaar auszulesen das im Backtest nicht ausgewählt wurde. Also ich teste im Strategietester GBPUSD und möchte auch Daten von zB EURUSD bekommen. Wenn NULL statt "EURUSD" eingetragen ist werden bei einem Test unter GPBUSD auch nur GPBUSD Werte ausgelesen und nicht die von zB EURUSD.

Hi nochmal,

also, es sieht so aus, als ob immer nur die Open-Preise angezeigt werden. Evtl. ist Dein vorhaben ja auch gar nicht mit dem Strategietester möglich?

traderdoc 06.03.15 20:02

Nun, es sieht wie folgt aus, wenn der Tester z.B. im WP GBPUSD läuft:

Benutzt man
double high = iHigh("EURUSD",1440,0);
d.h die Werte der aktuellen Kerze, dann werden bei alle OHLC-Werte immer nur der Wert vom Open der aktuellen Kerze angezeigt.

Benutzt man
double high = iHigh("EURUSD",1440,1);
d.h die Werte der ersten geschlossenen Kerze, dann werden alle OHLC-Werte korrekt angezeigt.

Das liegt daran, weil der Tester bei der ersten geschlossenen Kerze auf die historisch vorliegenden 4 Werte zurückgreifen kann.
Das kann er aber bei der aktuellen Kerze nicht, weil die o.g. Funktion in ihrer Struktur eine starre!!, eben statische Abfrage ist.
Wird nun double high = iHigh("EURUSD",1440,0); abgefragt, dann kann der Tester keine Werte außer für iOpen() liefern, weil der Tester nicht in die Zukunft sehen kann. (wäre aber gar nicht so schlecht!!). Erst wenn die aktuelle Kerze zur geschlossenen wird, werden die OHLC-Werte wie gewohnt auslesbar sein.
Der Tester rastert immer nur die aktuelle Kerze des WP ab, die auch im Tester unter "Symbol" eingestellt. ist.

traderdoc


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:01 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