|
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 |
|
|||
Zitat:
Ich tue all das gerade und habe dafür speziell diese Code-Beispiele ausgewählt weil diese, im Gegensatz den meisten anderen Funden, wenig mit zusätzlichen Features überfrachtet sind, die ich im Moment gerade nicht brauche und die nur vom Wesentlichen ablenken. |
|
|||
Zitat:
Habe jetzt auch mal den von Dir geposteten Code ausprobiert (in geringfügig abgewandelter Form, s.u.). Auch bei Deinem Code wird keine Datei im Zielordner angelegt. Habe dann den Wert für den Handle mit Print ausgeben lassen (Codezeile rot markiert), der Wert für den Handle ist -1. Suche somit immer noch nach einer Lösung. Code:
//+------------------------------------------------------------------+ //| Schreibe in Datei v2.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { testfunktion(); return(INIT_SUCCEEDED); } void testfunktion() { int handle=FileOpen("D://TEST/my_data.csv" ,FILE_WRITE|FILE_CSV); Print("Der Wert des Handle ist: " + handle); } |
|
|||
Zitat:
Eine Datei wird angelegt, wenn sie nicht vorhanden ist UND man was reinschreiben will; wenn man nur was rauslesen will, ist es nicht notwendig, eine nicht vorhandene Datei anzulegen. Also bevor Du was lesen willst, muß erst mal was zum Lesen da sein. Die Bemerkung der Hilfe zu FileOpen sagt genau, wo solch eine Datei liegen kann/darf. AVT |
|
|||
Richtig, wenn man denn weiß, was das Wesentliche ist :-)
|
|
|||
... im Tester wird die Datei im "Tester" Ordner abgelegt Vielleicht liegts daran
|
|
|||
Ansonsten.... nutze ich den Code
Code:
void InDatei() { double SPREAD=Bid-Ask; string QQ; int Mag; string symbol=Symbol(); string TextDatei; TextDatei=StringConcatenate("SPREAD","-",symbol,".","txt"); if(TimeCurrent() == Time[0]) int T=Day(); int M=Month(); int J=Year(); QQ=StringConcatenate(T,M,J); //zuerst als String verketten Mag=(StrToInteger(QQ)); //und später wieder als Zahl umwandeln { int handle; handle = FileOpen(TextDatei,FILE_READ|FILE_WRITE|FILE_TXT,"/t"); // Datei wird unter \MQL4\Files abgelegt FileSeek(handle, 0, SEEK_END); FileWrite(handle,TimeToString(Time[0]),symbol,"SPREAD: ",NormalizeDouble(SPREAD,1)); /*nach “handle,” kommt das was in die Datei geschrieben wir mit Komma getrennt */ FileClose(handle); if(handle<1) { Print("File my_data.dat not found, the last error is ", GetLastError()); } //Print(str); } } |
|
|||
Besten Dank. Die von Dir gepostete Lösung führt allerdings bereits beim compilieren zu einer Fehlermeldung:
Zitat:
|
|
|||
Jaja stimmt ... dann halt so
Code:
void InDatei() { double SPREAD=Bid-Ask; string symbol=Symbol(); string TextDatei; TextDatei=StringConcatenate("SPREAD","-",symbol,".","txt"); if(TimeCurrent() == Time[0]) { int handle; handle = FileOpen(TextDatei,FILE_READ|FILE_WRITE|FILE_TXT,"/t"); // Datei wird unter \MQL4\Files abgelegt FileSeek(handle, 0, SEEK_END); FileWrite(handle,TimeToString(Time[0]),symbol,"SPREAD: ",NormalizeDouble(SPREAD,1)); /*nach “handle,” kommt das was in die Datei geschrieben wir mit Komma getrennt */ FileClose(handle); if(handle<1) { Print("File my_data.dat not found, the last error is ", GetLastError()); } //Print(str); } } |
|
|||
Beim Compilieren und zur Laufzeit wird jetzt kein Fehler mehr angezeigt. Allerdings wird auch keine neue txt-Datei erzeugt. Weder ist im angegebenen Ordner /mql4/files die Datei zu finden, noch lässt sich an einem anderen Ort auf dem Computer mit der Suche eine neue erzeugte Text-Datei finden. |
|
|||
Wenn Du das im Strategietester laufen lässt wird die Datei im Tester angelegt, also gehe im MT4 auf DATEI>DATEIORDNER ÖFFNEN und dann im Ordner "tester" und dann den Unterordner "files" - und im Live Betrieb unter Ordner "MQL4" und dann in "Files"
|
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|