![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Datei-Ersatz
Ich möchte einen EA testen, der externe Signale im Strategy Tester verwendet, und der Thread besagt, dass das native Filehandling im Strategy Tester nicht funktioniert. Also habe ich versucht, die in diesem Thread bereitgestellte dll zu verwenden. Die Eingabe, die ich verarbeiten möchte, befindet sich in einer Datei, die wie folgt aussieht:
2007-01-02;EURUSD;2.InstPipDown;;Yes
2007-01-02;USDJPY;1.InstPipUp;;Yes
2007-01-02;USDCHF;1.InstPipUp;;Yes
2007-01-03;EURUSD;2.InstPipDown;;Yes
2007-01-03;EURUSD;4.PipMax1Down;;Yes
2007-01-03;GBPUSD;4.PipMax1Down;;Yes
2007-01-04;USDJPY;8.PipRevBear;;Yes
2007-01-05;EURUSD;5.PipMax2Up;;Yes
2007-01-05;USDJPY;1.InstPipUp;;Yes
Ich erstelle die Datei selbst, so dass ich andere Arten von Trennzeichen verwenden kann.
Wie verwende ich die DLL, um jeweils einen "Datensatz" zu erhalten? Ich kann das Parsing für die einzelnen Felder durchführen.
Woher weiß ich, wann ich EOF erreicht habe?
Ich habe einige Variationen ausprobiert, aber ich erhalte inkonsistente Ergebnisse und manchmal Müll. Das Schreiben von Daten wie im Beispiel funktioniert gut, aber ich möchte Daten lesen.
Nun, Beharrlichkeit ist Trumpf!
Nach mehreren Stunden habe ich folgendes herausgefunden:
Der File Handler weigert sich, eine Datei zu öffnen, die ich mit einem anderen Programm erstellt habe. Öffnen gibt -1 zurück. Wenn ich die Datei benutze, die von der Demo erstellt wurde (mt4.log) und meinen Inhalt hineinkopiere, funktioniert das Öffnen. Ich kann nicht herausfinden, warum. Seltsam
Ich habe meine "Datensätze" auf eine feste Länge eingestellt und lese die Länge des "Datensatzes" plus 2, um das "CRLF" am Ende jedes Datensatzes zu berücksichtigen. Ich habe die Länge der Datei ermittelt, durch die Länge des Datensatzes geteilt und eine Schleife gemacht, um alle Datensätze in ein Array zu bekommen:
Hier ist der Code:
int init()
{
string inArr[500];
int file;
int filesize;
int Datensätze;
int i;
file = gFileOpen("c:\mt4.log",READ);
// Print(file);
filesize = gFileSize(file);
// Print(filesize);
records = filesize/25;
// Print(records);
for(i=1;i<=Datensätze;i++)
{
inArr = gFileRead(Datei,25);
}
gFileClose(file);
Print(inArr[filesize-1]); //Die letzte Datei prüfen
return(0);
}
Indikator mit Fileoutput
Hallo Trader und Programmierer.
ich brauche Hilfe bei einer Codesegemnt für einen neuen Indikator.
der indikator sollte in der lage sein, eine datei mit relevanten informationen zu schreiben, aber er sollte nur nach dem öffnen einer neuen kerze schreiben. nicht bei jedem tick.
Wie kann man das machen? was ich versuche ist, bei jeder neuen Kerze den OHCL der letzten 1000 Bars zu schreiben, um ein PNN zu trainieren. das sollte außerhalb von RAPID-I gemacht werden.
und mit einigen anderen Informationen, um zu lernen, wie hoch die Wahrscheinlichkeit ist, dass eine Kerze schließt.
bitte helfen sie mir. wäre ein tolles projekt, aber so einfache dinge, für die ich zu dumm (oder zu faul) bin :-)
PriNova
datetime timeprev=0; vor init()
und
if(timeprev==Time[0])
return(0);
timeprev=Time[0]; direkt unter start()
und das war's.
schön, das war eine sehr schnelle Antwort.
danke elitecamper
Warum wurde die Verschiebefunktion aus der Bibliothek entfernt?
CodersGuru,
Ich kann Ihnen gar nicht sagen, wie wertvoll Sie für mich sind. Sie verdienen einen Großteil des Lobes, das ich von meinen Kunden erhalte, denn ohne Sie wäre ich nicht in der Lage, meine Arbeit für sie zu erledigen.
Gibt es einen Grund dafür, dass die Verschiebefunktion nicht so implementiert wurde, wie es in Ihrem Tutorial beschrieben ist?
Nochmals herzlichen Dank für Ihren Service
John McGlaughlin
gFileRead
Hallo,
Wenn ich mir den Quellcode von mtguru1.dll ansehe, habe ich festgestellt, dass die Funktion gFileRead() nicht funktionieren sollte. Liege ich falsch?
gFileRead() verwendet eine lokale Variable, um den aus der Datei gelesenen String zu speichern. Wenn die Funktion zurückkehrt, gibt sie einen Zeiger auf diese Variable zurück, aber dieser Zeiger kann ein gültiger Zeiger sein, weil die lokale Variable pbuffer aus dem Bereich herausgeht.
Aus Sicht von MQL4 EA sollte eine Anweisung wie diese zum Absturz führen:
string buffer = gFileRead( handle, 50 );
und wenn es funktioniert, ist es seltsam ...
P.S.: Ich habe dies in den falschen Thread gepostet, bevor. https://www.mql5.com/en/forum/172885.
Errata Corrige:
.... aber dieser Zeiger kann ein gültiger Zeiger sein ....
aber dieser Zeiger KANN NICHT ein gültiger sein
Ausführen einer exe-Datei
Hallo!
ich möchte eine einfache Sache machen (so dachte ich). Ich möchte einfach ein externes Programm aus einem EA öffnen (starten). (nicht im EA)
Also nur mal so als Beispiel. Nehmen wir an, ich möchte Microsoft Word öffnen, wenn etwas Bestimmtes im EA passiert.
Ich habe das schon einmal gemacht, aber ich kann das Skript nicht finden, ich habe 2 Stunden damit verbracht, im Internet zu suchen. Das nächste Mal werde ich den Code an einem sicheren Ort speichern!
eine Frage?
Ich habe diesen Fehler "2008.10.21 01:54:34 Fundamental Trader DailyFX_MQL4 v0.02: handle 2 does not exist in FileClose"
Was kann ich tun?