Ottimo EA in backtest! - pagina 115

 
tururo:
Il file viene sovrascritto ogni volta che lo si apre. Una soluzione è aprire il file nella funzione init() e chiuderlo in deinit()

così ho fatto questo...

int init()

{

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');//questo è l'unico posto nel codice che uso FileOpen() ho spento tutti gli altri.

return(0);

}

int deinit()

{

FileClose(handle);

return(0);

}

e nel codice quando voglio aggiungerci qualcosa ho fatto così...

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

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

e ottengo il messaggio di errore "troppi file aperti".

 

bool startfileopen = true;

int init()

{

if(startfileopen)

{

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

startfileopen = false;

}

Questo sembra aver risolto il problema.

ma continua a mostrare solo una voce nel file di cui una parte è troncata...

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

 

Questo potrebbe aiutare

Ciao Aaragorn grande lavoro che stai facendo su CT, ho questo E.A. che penso faccia qualcosa di simile a quello che stai facendo, forse c'è un modo per incorporarlo in CT. Penso che questo raccolga i dati di tick in un file csv in qualche modo.

saluti,

mrtools

 

Ho un amico programmatore che mi ha detto di dimenticare la roba init() deinit() e cambiare quando lo chiamo in

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

Devo lasciare questo per un po', tornerò a controllare più tardi. Speriamo che dudeworks riesca a farlo funzionare. Solo che non so ancora come fare questa roba dei file.

 
mrtools:
Ciao Aaragorn grande lavoro che stai facendo su CT, ho questo E.A. che penso faccia qualcosa di simile a quello che stai facendo, forse c'è un modo per incorporarlo in CT. Penso che questo raccolga i dati di tick in un file csv in qualche modo.

saluti,

mrtools

Ok GRAZIE! Questo è interessante, vedere altro codice che funziona aiuta, devo andare via per un po' ma tornerò a controllare.

 

Errore di maniglia non valida

Aaragorn, questo esperto ha bisogno di una fonte esterna (credo) per raccogliere i dati o distribuirli per l'E.A. per fare trading, che purtroppo non ho e non ho idea di come crearne uno, quindi l'esperto non farà trading dà solo il messaggio di errore "invalid handle -1 in file read number", pensavo solo che il codice potesse aiutare.

saluti

mrtools

 
mrtools:
Aaragorn, questo esperto ha bisogno di una fonte esterna (credo) per raccogliere i dati o distribuirli per il commercio dell'E.A., che purtroppo non ho e non ho idea di come crearne uno, quindi l'esperto non commercia e dà solo il messaggio di errore "invalid handle -1 in file read number", pensavo solo che il codice potesse aiutare.

saluti

mrtools

Grazie, apprezzo l'incoraggiamento.

per quanto posso dire questo codice prima cancella qualsiasi valore precedente del file, poi apre un file per aggiungere qualcosa e poi chiude il file.

Poi apre il file per leggere ciò che ha scritto.

La sfida che ho è che quando voglio aggiungere qualcosa al file senza cancellare o sovrascrivere ciò che è già scritto, in altre parole aggiungendo i nuovi dati alla fine del file...

Ho bisogno di un esempio di come farlo.

 

Qualcuno può insegnarmi come usare correttamente le funzioni di memorizzazione e richiamo dei file?

Ho guardato questa documentazione.

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);

}

Ho dato un'occhiata a questo, ma non va abbastanza in dettaglio per insegnare come usarlo. Suppongo che se sapessi già come usarlo questo link avrebbe senso, ma dato che non lo so già, non dà molte informazioni.

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

 
mrtools:
Aaragorn, questo esperto ha bisogno di una fonte esterna (credo) per raccogliere i dati o distribuirli per l'E.A. da scambiare, che purtroppo non ho e non ho idea di come crearne una, quindi l'esperto non scambia solo dà il messaggio di errore "invalid handle -1 in file read number", ho solo pensato che il codice potrebbe aiutare.

saluti

mrtools

Grazie per questo pezzo di codice. L'ho guardato e vedo che crea e legge i file. Non vedo che aggiunge qualcosa alla fine di un file già creato. Forse lo fa e io non lo vedo e forse non lo fa e non c'è niente da vedere. Vorrei conoscere un pezzo di codice che sappiamo essere un'aggiunta di dati alla fine, così potrei vedere come lo fa.

 

CT non funziona

Ho letto questo thread da cima a fondo cercando di trovare una soluzione.

Cyberia Trader1.85g versione jpy.mq4 l'ho caricato e ho la faccia ma non ho avuto nessun ordine. Sto usando la coppia USD/CHF su 30mins. non avere ordini rende davvero difficile fare qualsiasi test in avanti. il sistema è stato in esecuzione per 4 giorni e ancora nessun ordine.

Un po' di aiuto sarebbe fantastico, grazie.

saluti

Beno