Großartiger EA im Backtest! - Seite 115

 
tururo:
Die Datei wird jedes Mal überschrieben, wenn Sie sie öffnen. Eine Lösung ist, die Datei in der Funktion init() zu öffnen und in deinit() zu schließen

also habe ich dies getan...

int init()

{

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');//das ist die einzige Stelle im Code, an der ich FileOpen() verwende, alle anderen habe ich deaktiviert.

return(0);

}

int deinit()

{

FileClose(handle);

return(0);

}

und im Code, wenn ich etwas anhängen möchte, habe ich dies getan...

FileWrite(handle, "SellPossibilityMid:", SellPossibilityMid);

FileWrite(handle, "BuyPossibilityMid:", BuyPossibilityMid);

und ich erhalte die Fehlermeldung "zu viele Dateien geöffnet".

 

bool startfileopen = true;

int init()

{

if(startfileopen)

{

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

startfileopen = false;

}

Dies scheint den Fehler behoben zu haben.

aber es wird immer noch nur ein Eintrag in der Datei angezeigt, von dem ein Teil abgeschnitten ist...

Order Open Time: ;1160137278

SellPossibilityMid*SellPossibilityQuality:;0.00190286

BuyPossibilityMid*BuyPossibilityQuality:;0.00132571

UndefinedPossibilityMid*UndefinedPossibilityQuality:;0.00365143

UndefinedSucPossibilityQuality:;9

SellSucPossibilityQuality:;9

BuySucPossibilityQuality:;7

UndefinedPossibilityQuality:;18

SellPossibilityQuality:;9

BuyPossibilityQuality:;8

UndefinedSucPossibilityMid:;0.00074444

SellSucPossibilityMid:;0.00082222

BuySucPossibilityMid:;0.0008

UndefinedPossibilityMid:;0.00020286

SellPossibilityMid:;0.00021143

BuyPossibilityMid:;0.00016571

ng Short OrderTicket: ;24; Opened @: ;1.2685; Closed @: ;1.2677; Order Open Time: ;1160121599

 

Das könnte helfen

Hallo Aaragorn, tolle Arbeit, die du mit CT leistest. Ich habe diese E.A., die meiner Meinung nach etwas Ähnliches macht wie du, vielleicht gibt es eine Möglichkeit, sie in CT einzubinden. Ich glaube, es sammelt die Tickdaten irgendwie in einer csv-Datei.

Grüße,

mrtools

 

Ein befreundeter Programmierer hat mir gesagt, ich solle das init() deinit()-Zeug vergessen und beim Aufruf ändern in

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE|FILE_READ,';');

Ich muss das hier für eine Weile verlassen, ich schaue später wieder vorbei. Hoffentlich bekommt dudeworks es zum Laufen. Ich weiß nur noch nicht, wie man dieses Datei-Zeug macht.

 
mrtools:
Hallo Aaragorn, tolle Arbeit, die Sie auf CT tun, haben diese E.A., dass ich denke, tut etwas ähnlich wie das, was Sie tun, vielleicht gibt es eine Möglichkeit, diese in CT zu integrieren. Ich glaube, es sammelt irgendwie Tickdaten in einer csv-Datei.

Grüße,

mrtools

ok DANKE! das ist interessant, andere Codes zu sehen, die funktionieren, hilft, ich muss für eine Weile weg, aber ich schaue wieder vorbei.

 

Ungültiger Handle-Fehler

Aaragorn, dieser Experte braucht eine externe Quelle (ich denke), um entweder die Daten zu sammeln oder verteilen sie für die E.A. zu handeln, die ich leider nicht haben und haben keine Ahnung, wie man eine zu erstellen, so dass der Experte nicht handeln nur gibt Fehlermeldung "ungültiges Handle -1 in Datei lesen Nummer", dachte nur der Code könnte helfen.

Grüße

mrtools

 
mrtools:
Aaragorn, dieser Experte braucht eine externe Quelle (glaube ich), um entweder die Daten zu sammeln oder zu verteilen, damit die E.A. handeln kann, die ich leider nicht habe und keine Ahnung habe, wie man eine erstellt, so dass der Experte nicht handeln wird, sondern nur die Fehlermeldung "ungültiges Handle -1 in der Datei-Lese-Nummer" gibt, ich dachte nur, der Code könnte helfen.

Grüße

mrtools

Vielen Dank, ich weiß die Ermutigung zu schätzen.

Soweit ich das beurteilen kann, löscht dieser Code zunächst alle vorherigen Werte der Datei, öffnet dann eine Datei, um etwas hinzuzufügen, und schließt dann die Datei.

Dann öffnet er die Datei, um zu lesen, was er geschrieben hat.

Das Problem, das ich habe, ist, dass ich, wenn ich der Datei etwas anderes hinzufügen möchte, ohne zu löschen oder zu überschreiben, was bereits geschrieben wurde, mit anderen Worten, die neuen Daten an das Ende der Datei anhängen möchte...

Ich brauche ein Beispiel dafür, wie man das macht.

 

Kann mir jemand zeigen, wie man die Funktionen zum Speichern und Abrufen von Dateien richtig nutzt?

Ich habe mir diese Dokumentation angesehen...

int FileOpen( string filename, int mode, int delimiter=';')

Opens file for input and/or output. Returns a file handle for the opened file or -1 (if the function fails). To get the detailed error information, call GetLastError() function.

Notes: Files can only be opened in the terminal_directory\experts\files folder (terminal_directory\tester\files if for expert testing) or in its subfolders.

FILE_BIN and FILE_CSV modes cannot be used simultaneously.

If FILE_WRITE does not combine with FILE_READ, a zero-length file will be opened. If even the file containd some data, they will be deleted. If there is a need to add data to an existing file, it must be opened using combination of FILE_READ | FILE_WRITE.

If FILE_READ does not combine with FILE_WRITE, the file will be opened only if it already exists. If the file does not exist, it can be created using the FILE_WRITE mode.

No more than 32 files can be opened within an executable module simultaneously. Handles of files opened in the same module cannot be passed to other modules (libraries).

Parameters:

filename - Filename.

mode - Opening mode. It can be one or combination of values: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE.

delimiter - Delimiter character for csv files. By default, the ';' symbol applies.

Sample:

int handle;

handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');

if(handle<1)

{

Print("File my_data.dat not found, the last error is ", GetLastError());

return(false);

}

Ich habe mir diese Dokumentation angesehen, aber sie geht nicht detailliert genug darauf ein, um mir die Verwendung zu erklären. Ich nehme an, wenn ich bereits wüsste, wie man es benutzt, würde dieser Link Sinn machen, aber da ich es noch nicht weiß, gibt er nicht viel Aufschluss.

http://www.metatrader.info/node/142

 
mrtools:
Aaragorn, dieser Experte braucht eine externe Quelle (glaube ich), um entweder die Daten zu sammeln oder sie für die E.A. zu verteilen, um zu handeln, was ich leider nicht habe und keine Ahnung habe, wie man eine erstellt, so dass der Experte nicht handelt, sondern nur die Fehlermeldung "ungültiges Handle -1 in der Datei-Lese-Nummer" gibt, ich dachte nur, der Code könnte helfen.

Mit freundlichen Grüßen

mrtools

Vielen Dank für das Stück Code. Ich habe ihn mir angesehen und kann sehen, dass er sowohl Dateien erstellt als auch liest. Ich sehe nicht, dass er etwas an das Ende einer bereits erstellten Datei anhängt. Vielleicht ist es so, und ich sehe es nur nicht, und vielleicht tut es das auch nicht, und es gibt nichts zu sehen. Ich wünschte, ich wüsste ein Stück Code, von dem wir wissen, dass er Daten an das Ende anhängt, damit ich sehen kann, wie er es macht.

 

CT funktioniert nicht

Ich habe diesen Thread von vorne bis hinten gelesen und versucht, eine Lösung zu finden Ich habe die

Cyberia Trader1.85g jpy.mq4 Version. Ich habe es geladen und habe das Gesicht, aber ich habe keine Aufträge auf allen hatte. Ich benutze das USD/CHF-Paar auf 30mins. keine Aufträge macht es wirklich schwer zu tun, alle Forward-Testing. das System läuft seit 4 Tagen und immer noch keine Aufträge.

Etwas Hilfe wäre großartig, danke.

cheers

Beno