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)
-   -   Frage zum FileOpen/Write (http://www.expert-advisor.com/forum/showthread.php?t=3906)

Dick_Turpin 14.10.14 13:03

Frage zum FileOpen/Write
 
Also, ich möchte z.B. von 20 Währungspaaren und 6 Timeframes jeweils die Werte der letzten 10 aktuellen Bars, incl. Bar 0, in ein csv-File pro WP und TF, schreiben. Das Ganze dann z.B. einmal pro Minute.

Nun meine Frage an die Experten, welche der beiden folgenden Varianten bzw. EA's ist besser:

EA 1:
Holt bei jedem Lauf von allen 20 WP und von allen 6 TF die Daten der letzten 10 Bars (Bar 0 bis 9) und schreibt diese in 120 csv-Files.

EA 2:
Holt bei jedem Lauf zuerst nur die Daten des aktuellen Bar 0 für alle 20 WP und alle 6 TF und schreibt diese Daten dann in 120 Current-csv-Files.
Danach prüft der EA, auf welchem TF ein neuer Bar begonnen hat und schreibt dann nur für diesen TF die Daten der letzten 9 Bars (Bar 1 bis Bar 9) in eines der entsprechenden 120 History-csv-Files.

Nochmal Kurz zusammengefasst:
Ist es besser nur 120 Files anzupacken und dafür bei jedem Lauf immer alle Daten komplett zu schreiben, also alle 10 Bars (Bar 0 bis 9), auch wenn sich z.B. die Bars 1 bis 9 in den höheren TF wie z.B. H4 und D1 nur alle 4 Stunden bzw. einmal am Tag ändern.

oder

ist es besser immer nur die Daten zu schreiben, die sich auch geändert haben, sprich nur die Daten der Bar 0. Und die Daten der Bar 1 bis 9 immer nur dann neu in die History-csv-Files zu schreiben, wenn ein neuer Bar eröffnet wurde. Hier habe ich aber die doppelte Anzahl von csv-Files, einmal 120 mal das Current-csv-File, wo immer nur die Daten des Bar 0 drin stehen, und dann 120 mal das History-csv-File, wo die Daten der Bars 1 bis 9 drin stehen.

Ich hoffe ihr habt verstanden was ich meine...

Gruß
Dick

traderdoc 14.10.14 14:02

Also ich würde nur 20 csv-Files nehmen, die jeweils 6 Zeilen der TimeFrames enthalten.
Und dann würde ich, wenn dann überhaupt die Bar[0] notwendig ist!, jede Minute nur die Bar[0] abspeichern und bei Kerzenwechsel entsprechend dann alle.

traderdoc

pako 14.10.14 17:29

wenn TimeFramesNewBar abspeichern

M1 Bar[0] = 1,31234
M5 Bar[0] = 1,31234
M15 Bar[0] = 1,31234
M30 Bar[0] = 1,31234
usw

Dick_Turpin 14.10.14 18:42

Danke für die schnellen Antworten und sorry, dass ich mich nicht klar genug ausgedrückt habe, was ich genau in den csv-Files speichern will.

Am besten ich zeige Euch mal den Inhalt eines csv-Files:
PHP-Code:

AUDCAD M5
DATE
;HOUR;OPEN;HIGH;LOW;CLOSE;VOLUME
10 October 2014
;22:45;0.9746;0.9747;0.974;0.9741;70
10 October 2014
;22:40;0.9748;0.9749;0.9746;0.9747;46
10 October 2014
;22:35;0.9749;0.9749;0.9748;0.9749;55
10 October 2014
;22:30;0.975;0.9751;0.9748;0.9748;72
10 October 2014
;22:25;0.9755;0.9755;0.975;0.9751;78
10 October 2014
;22:20;0.9753;0.9754;0.9752;0.9754;80
10 October 2014
;22:15;0.9756;0.9758;0.9754;0.9754;106
10 October 2014
;22:10;0.9756;0.9758;0.9755;0.9756;56
10 October 2014
;22:05;0.9758;0.9759;0.9755;0.9756;88
10 October 2014
;22:00;0.976;0.9761;0.9756;0.9757;75
10 October 2014
;21:55;0.9762;0.9762;0.9758;0.9761;82 

Also komme ich mit 20 Files a 6 Zeilen schon mal nicht hin, da ich pro Timeframe DATE;HOUR;OPEN;HIGH;LOW;CLOSE;VOLUME für die letzten 10 Bars speichern will.

Das ganze funktioniert ja auch schon mit den beiden, am Anfang genannten Varianten. Aber vielleicht kann man noch etwas optimieren.

Das ganze soll meine Strength-Tabelle mit einer Art Strength-History für die 6 Timeframes erweitern. D.h. ich lese die o.g. csv-Files dann auch mit Excel aus...

Gruß
Dick

traderdoc 14.10.14 19:01

Ja, so ist das eben, wenn man sich nicht eineindeutig ausdrückt.
Aber man könnte trotzdem nur 20 Files nehmen. Dann sind es halt in jeder csv
6 Blöcke á 13 Zeilen.

traderdoc

Dick_Turpin 14.10.14 20:17

Ja, das geht natürlich auch, und beim Excel-Import kann ich ja auch angeben, ab welcher Zeile ich die Daten einlesen möchte...

Da müsste ich dann, nachdem das csv-File zum Schreiben geöffnet wurde in einer Schleife alle Timeframes eines WP auf einmal in das csv-File schreiben. Ist auch eine Idee...

Gruß
Dick

traderdoc 14.10.14 20:21

Ne, Du mußt nicht alle TimeFrames gleichzeitig immer auf einmal in die csv schreiben. Nur halt so wie die Daten anfallen.

traderdoc

pako 14.10.14 20:35

Nur die erste Zeile schreiben. Die restlichen werden sowieso nicht geändert.

oder noch besser, gar nicht schreiben, mit "EA"die Daten aufrufen und bearbeiten:rolleyes::D

traderdoc 14.10.14 21:11

Nun laß Dir mal nichts von dem pako einreden.
Beim Kerzenwechsel müssen alle Zeilen neu geschrieben werden. Nur solange Bar[0] aufgebaut wird, braucht natürlich nur die erste Zeile jeweils aktualisiert werden. Aber benötigst Du unbedingt Bar[0]?

traderdoc

Dick_Turpin 14.10.14 21:36

Kann ich denn mit dem FileWrite auch mitten im csv-File nur eine Zeile neu schreiben?


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