Fragen von einem "Dummy" - Seite 108

 

Mein Expert Advisor übernimmt Musterwerte aus einer CSV-Datei. Beim Handel funktioniert alles, aber nicht im Tester. Wo sollte ich die CSV-Datei ablegen und welchen Ordner sollte ich erstellen?

Ich habe es so gemacht

Die Datei wird im Unterordner MQL5\files des Client-Terminals geöffnet (oder im Falle von Tests im Ordner_Testing_agent\MQL5\files).

Aber es funktioniert nicht, und wo befindet sich das Verzeichnis des Testagenten?

 
openlive:
Mein Expert Advisor übernimmt Musterwerte aus einer CSV-Datei. Beim Handel funktioniert alles, aber nicht im Tester. Wo sollte ich die CSV-Datei ablegen und welchen Ordner sollte ich erstellen?
Die Beschreibung der Konstante tester_file finden Sie im Referenzhandbuch
 
Yedelkin:
Im Referenzhandbuch finden Sie eine Beschreibung der Konstante tester_file

Ich habe es mir angesehen und die Datei in Mql5\Tester\Files abgelegt.

aber das Prüfgerät steht einfach still.

Hier ist die Testerdatei selbst.

Dateien:
 
openlive:

Ich habe es mir angesehen und die Datei in Mql5\Tester\Files abgelegt.

In der Beschreibung der Funktion FileOpen() heißt es: "Die Datei wird im Client-Terminal-Ordner im Unterordner MQL5\files (bzw. im Falle von Tests im Verzeichnis agent_tester\MQL5\files ) geöffnet". Versuchen Sie es:

a) Geben Sie einen vollständigen Pfad zu der Datei an, z. B.

string filename=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Tester\\Files\\"+"file.csv";

b)legen Sie die Datei in das Verzeichnis des Agenten .

Ich bin selbst noch nicht darauf gestoßen. Aus der Beschreibung anderer Funktionen für die Arbeit mit Dateien geht hervor, dass im Falle von Tests die Datei in Mql5\Tester\Files gesucht werden muss.

Ein Zusatz. Ja, Sie haben dort mehrere Dateien geöffnet. Und in tester_file gibt es nur eine.

 
Yedelkin:

In der Beschreibung der Funktion FileOpen() heißt es: "Datei öffnet sich im Ordner des Client-Terminals im Unterordner MQL5\files (oder catalog_agent_testing\MQL5\files im Falle von Tests)". Versuchen Sie es:

a) Geben Sie den vollständigen Pfad zu der Datei an wie

b)legen Sie die Datei in das Verzeichnis des Agenten .

Ich bin selbst noch nicht darauf gestoßen. Ich habe im Handbuch keine direkte Anweisung gefunden, wo die Datei für die Prüfung abgelegt werden sollte.

Nachtrag. Ja, Sie haben dort mehrere Dateien geöffnet. Und in der tester_file ist nur eine angegeben.

a) hat es getan - hat nicht geholfen.

b) Ich verstehe nicht, wie ich das machen soll. Ich habe nur den Ordner MQL5\Tester\Files und kann nicht herausfinden, welcher Ordner untertesting_agent_folder\MQL5\files gemeint ist.

 

Hier ist mehr: https://www.mql5.com/ru/forum/1111/page182#comment_31599 Siehe zwei Beiträge. Es hat irgendwie funktioniert, wenn die Datei in \MQL5\Files war.

Nun, Sie können versuchen, es in den gemeinsamen Ordner unter TerminalInfoString(TERMINAL_COMMONDATA_PATH) zu verschieben. Und wenn Sie die Datei selbst öffnen, setzen Sie das Flag FILE_COMMON.

 

Yedelkin:

Hier ist mehr: https://www.mql5.com/ru/forum/1111/page182#comment_31599 Siehe zwei Beiträge. Es hat irgendwie funktioniert, wenn die Datei in \MQL5\Files war.

Nun, Sie können versuchen, es in den gemeinsamen Ordner unter TerminalInfoString(TERMINAL_COMMONDATA_PATH) zu verschieben. Und setzen Sie das Flag FILE_COMMON beim Öffnen der Datei selbst.

Legen Sie die Datei in C:\ProgramData\MetaQuotes\Terminal\Common\Files ab, setzen Sie dasFILE_COMMON-Flag

Der Prüfer sagt sowieso nichts.

Ich weiß nicht, was ich sonst tun soll

 

Mit anderen Worten, die Datei ist weder in Mql5\Tester\Files, noch in Mql5\Files, noch im freigegebenen Ordner der Client-Terminals zu finden?

FileIsExist()-Prüfung mit Ausgabe einfügen.

Haben Sie die anderen vom Programm verwendeten Dateien mit tester_file geschrieben?

Eine Bemerkung, die nichts mit der Hauptfrage zu tun hat. Haben Sie

int handle16=FileOpen("signal10000.csv",FILE_WRITE|FILE_CSV,";");
int handle17=FileOpen("signal10000.dat",FILE_WRITE|FILE_BIN,";"); 
int handle=FileOpen(filename,FILE_READ|FILE_CSV,";");

usw.

Werden bei jeder Zecke aufgerufen. Dies ist sehr umständlich. Wenn es keinen besonderen Grund gibt, sollte das Dateihandle in der OnInit()-Funktion erhalten werden, auf Unfähigkeit geprüft werden und dann mit dem offenen Dateihandle anstelle derFileOpen()-Funktion gearbeitet werden.

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Yedelkin:

Mit anderen Worten, die Datei ist weder in Mql5\Tester\Files, noch in Mql5\Files, noch im freigegebenen Ordner der Client-Terminals zu finden?

FileIsExist()-Prüfung mit Ausgabe einfügen.

Haben Sie die anderen vom Programm verwendeten Dateien mit tester_file geschrieben?

Eine Bemerkung, die nichts mit der Hauptfrage zu tun hat. Haben Sie

usw.

Werden bei jeder Zecke aufgerufen. Dies ist sehr umständlich. Wenn es keinen besonderen Grund gibt, sollte das Datei-Handle in der OnInit()-Funktion erhalten werden, auf Unfähigkeit geprüft werden und dann mit dem offenen Datei-Handle gearbeitet werden, nicht mit derFileOpen()-Funktion.

Die Dateien werden nicht bei jedem Tick aufgerufen... es gibt ein Häkchen für eine neue Leiste. aber trotzdem danke, ich werde es korrigieren

Ich werde FileIsExist() ausprobieren

 
openlive:

Die Dateien werden nicht bei jedem Tick aufgerufen... Es gibt ein Häkchen für eine neue Leiste. aber trotzdem danke, ich werde es korrigieren

Ja, ich habe es mir nicht genau angesehen. Aber Sie haben das Wesentliche richtig verstanden :)
Grund der Beschwerde: