¡Gran EA en backtest! - página 115

 
tururo:
El archivo se está sobrescribiendo cada vez que se abre. Una solución es abrir el archivo en la función init() y cerrarlo en deinit()

así que hice esto...

int init()

{

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');//este es el único lugar del código en el que uso FileOpen( ) He desactivado todos los demás.

return(0);

}

int deinit()

{

FileClose(handle);

return(0);

}

y en el código cuando quiero anexar algo hice esto...

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

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

y recibo el mensaje de error "demasiados archivos abiertos"

 

bool startfileopen = true;

int init()

{

if(startfileopen)

{

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

startfileopen = false;

}

esto parece haber solucionado el fallo.

pero sigue mostrando sólo una entrada en el archivo parte de la cual está truncada...

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

 

Esto podría ayudar

Hola Aaragorn gran trabajo que está haciendo en la TC, tiene este E.A. que creo que hace algo un poco similar a lo que está haciendo, tal vez hay una manera de incorporar esto en la TC. Creo que esto recoge los datos de las garrapatas en un archivo csv de alguna manera.

Saludos,

mrtools

 

Tengo un amigo programador que me ha dicho que me olvide de lo de init() deinit() y que cambie cuando lo llame a

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

Tengo que dejar esto un rato, luego lo reviso. Espero que dudeworks lo haga funcionar. Es que aún no sé cómo hacer esto de los archivos.

 
mrtools:
Hola Aaragorn gran trabajo que está haciendo en CT, tiene este E.A. que creo que hace algo un poco similar a lo que está haciendo, tal vez hay una manera de incorporar esto en CT. Creo que esto recoge los datos de las garrapatas en un archivo csv de alguna manera.

saludos,

mrtools

ok GRACIAS! eso es interesante, ver otro código que está trabajando ayuda, tengo que salir por un tiempo, pero voy a comprobar de nuevo.

 

Error de mango inválido

Aaragorn, este experto necesita una fuente externa (creo) para recopilar los datos o distribuirlos para que el E.A. opere, que desafortunadamente no tengo y no tengo idea de cómo crear una, por lo que el experto no operará solo da mensaje de error "handle inválido -1 en el número de lectura del archivo", solo pensé que el código podría ayudar.

saludos

mrtools

 
mrtools:
Aaragorn, este experto necesita una fuente externa (creo) para reunir los datos o distribuirlos para que el E.A. pueda operar, que desafortunadamente no tengo y no tengo idea de cómo crear una, por lo que el experto no operará solo da mensaje de error "handle inválido -1 en el número de lectura del archivo", solo pensé que el código podría ayudar.

saludos

mrtools

Gracias, te agradezco los ánimos.

por lo que veo este código primero borra cualquier valor anterior del archivo, luego abre un archivo para añadir algo y luego cierra el archivo.

luego abre el archivo para leer lo que escribió.

el reto que tengo es que cuando quiero añadir algo más al archivo sin borrar o sobrescribir lo que ya está escrito en otras palabras anexar los nuevos datos al final del archivo...

Necesito un ejemplo de cómo hacerlo.

 

¿Puede alguien enseñarme a utilizar correctamente las funciones de almacenamiento y recuperación de archivos?

He mirado esta documentación..

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

}

He mirado esto pero no entra en suficiente detalle como para enseñar a usarlo. Supongo que si ya supiera cómo usarlo este enlace tendría sentido pero como no lo sé no da mucha información.

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

 
mrtools:
Aaragorn, este experto necesita una fuente externa (creo) para recoger los datos o distribuirlos para que el E.A. comercie, que por desgracia no tengo y no tengo ni idea de cómo crear uno, por lo que el experto no comercia sólo da mensaje de error "mango inválido -1 en el número de lectura del archivo", sólo pensé que el código podría ayudar.

saludos

mrtools

Gracias por ese trozo de código. Lo he mirado y veo que crea y lee archivos. No veo que añada nada al final de un archivo ya creado. Tal vez lo hace y yo no lo veo y tal vez no lo hace y no hay nada que ver. Me gustaría conocer un trozo de código que supiéramos que anexa datos al final para poder ver cómo lo hace.

 

El TC no funciona

He leído este hilo de principio a fin tratando de encontrar una solución Tengo la

Cyberia Trader1.85g jpy.mq4 versión lo he cargado y tengo la cara pero no he tenido ninguna orden en absoluto. Estoy utilizando el par USD/CHF en 30mins. no tener ninguna orden hace que sea muy difícil hacer cualquier prueba a futuro. el sistema ha estado funcionando durante 4 días y todavía no hay órdenes.

alguna ayuda sería genial gracias.

saludos

Beno