MT4 Dateien Funktionen Ersetzung. - Seite 10

 

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?