¡Gran EA en backtest! - página 116

 
Beno:
He leído este hilo de principio a fin tratando de encontrar una solución tengo el

Cyberia Trader1.85g versión jpy.mq4 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

Te ayudaría si supiera hacer mejor que el 70% pero no lo sé. Corro en el gráfico de 1hr, prueba eso.

 
Aaragorn:
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.

Echa un vistazo a este hilo:

https://www.mql5.com/en/forum/175496

 

Realmente he estado hackeando este código y lo he dejado bastante desordenado..pero...

mis esfuerzos por conseguir que esto se imprima en un archivo están siendo infructuosos por el momento.

Supongo que pediré a los que quieran ayudar en la recopilación de datos que hagan el intento de hacerlo manualmente.

Tengo este EA adjunto configurado para imprimir en el diario los mínimos lógicos del TC. Esto no es agarrar ningún indicador pero tal vez sólo mirando las lógicas de CT nos dará algo para ir con.

Para recoger estos datos, lo que hay que hacer es ejecutar el EA en el backtester configurado tal cual. sin embargo, mientras se ejecuta hay que controlar la pestaña del diario. Dado que el diario no puede contener más que los datos de unas pocas órdenes sin empezar a truncar y dejar caer los datos del extremo inferior, tendrá que detener la prueba muy rápidamente cuando llegue a cada 5 - 7 órdenes sucesivas. Entonces copie y pegue los datos en un bloc de notas y reinicie el probador observando cuando llegue al lugar donde hizo la copia/pega anterior. Hay que tener cuidado de capturar todos los datos al pegar que se ven así para una orden...

2006.11.10 10:22:52 2004.03.05 03:02 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: close #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 at price 1.2210

2006.11.10 10:22:52 2004.03.05 03:02 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Recorded Winning Long 56 Opened: 1.2188 Closed: 1.221

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Ticket: 56 DV: -0.0051 CCI: 57.9346 Long order is opened @: 1.2188 StopLoss= 1.2171 TakeProfit= 1.2285

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Buy @ Minute 40

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: open #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 ok

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid:0.0004

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid:0.0004

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid:0.0009

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityMid:0.002

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityMid:0.0021

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityMid:0.0021

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityQuality:8

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityQuality:8

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityQuality:19

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityQuality:7

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityQuality:7

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityQuality:14

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid*UndefinedPossibilityQuality:0.0164

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid*BuyPossibilityQuality:0.0032

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid*SellPossibilityQuality:0.0034

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Hour: 18 Minute: 40

ejecuta esto en un gráfico de una hora y captura los datos. luego envíame el archivo .txt del bloc de notas por correo electrónico ¿quizás si islandhome empezara en la primera orden e hiciera las primeras 500 traeds de 2005 y AZBOfin empezara con la trade 500 de 2005 y hiciera las siguientes 500?

ah! bollay eso. dejame probar lo que el gurú del codificador acaba de publicar.

Archivos adjuntos:
 
codersguru:
Dale un vistazo a este hilo: https://www.mql5.com/en/forum/175496

wow usted puede tener sólo me salvó un montón de problemas aquí ...

podría mirar el EA que he publicado y ver donde estoy tratando de imprimir a un archivo en 4 lugares en el código. Dos veces donde se abre órdenes y luego en funciones separadas cuando se cierra órdenes. ¿Ves lo que estoy tratando de extraer de esto? ¿Podríais ayudarme a codificar esto para que registre la información de cada orden, la lógica del programa cuando abre y el resultado cuando cierra la orden?

si hago este fileflush después de cada vez ¿se borrará algo? Sigo sin entender cómo funciona lo del flush.

 

¡Eureka! ¡Oh, tío, gracias gurú de la codificación, buen rescate!

Ahora estoy un poco desconcertado aquí... observe el archivo .txt no está imprimiendo una línea de resultado para cada orden. ¿por qué se salta eso para algunas órdenes me pregunto?

¿Puedo suponer que si no imprime la línea de resultado es que es una posición perdedora?

Archivos adjuntos:
 

Nunca vas a poder descifrar esos datos en ese formato, necesitas que estén en filas, intenta incorporar estas.

Todavía estoy teniendo un problema con él diciendo demasiados archivos están abiertos ... pero aquí está la forma básica de su dumpp necesita ser formados para que pueda ver en Excel

//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file

string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";

File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');

if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",

"SellPossibilityMid*SellPossibilityQuality",

"BuyPossibilityMid*BuyPossibilityQuality",

"UndefinedPossibilityMid*UndefinedPossibilityQuality",

"UndefinedSucPossibilityQuality",

"SellSucPossibilityQuality",

"BuySucPossibilityQuality",

"UndefinedPossibilityQuality",

"SellPossibilityQuality",

"BuyPossibilityQuality",

"UndefinedSucPossibilityMid",

"SellSucPossibilityMid",

"BuySucPossibilityMid",

"UndefinedPossibilityMid",

"SellPossibilityMid",

"BuyPossibilityMid",

"Decision" ) < 0)

{

PrintError();

return (Error);

}

//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data

//Record statistics at time of Order - Added by DudeWorks

void RecordTickets ()

{

if (Error > 0)

return (Error); //stop on error

FileSeek(File,0,SEEK_END);

if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,

SellPossibilityMid*SellPossibilityQuality,

BuyPossibilityMid*BuyPossibilityQuality,

UndefinedPossibilityMid*UndefinedPossibilityQuality,

UndefinedSucPossibilityQuality,

SellSucPossibilityQuality,

BuySucPossibilityQuality,

UndefinedPossibilityQuality,

SellPossibilityQuality,

BuyPossibilityQuality,

UndefinedSucPossibilityMid,

SellSucPossibilityMid,

BuySucPossibilityMid,

UndefinedPossibilityMid,

SellPossibilityMid,

BuyPossibilityMid,

Decision) < 0)

{

PrintError();

return (Error);

}

FileFlush(File);

return(0);

}

 
DudeWorks:
Nunca vas a poder descifrar esos datos en ese formato, necesitas que estén en filas, intenta incorporar estas.

Sigo teniendo el problema de que dice que hay demasiados archivos abiertos... pero aquí está la forma básica en que su dumpp necesita ser formateado para que pueda verlo en Excel

//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file

string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";

File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');

if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",

"SellPossibilityMid*SellPossibilityQuality",

"BuyPossibilityMid*BuyPossibilityQuality",

"UndefinedPossibilityMid*UndefinedPossibilityQuality",

"UndefinedSucPossibilityQuality",

"SellSucPossibilityQuality",

"BuySucPossibilityQuality",

"UndefinedPossibilityQuality",

"SellPossibilityQuality",

"BuyPossibilityQuality",

"UndefinedSucPossibilityMid",

"SellSucPossibilityMid",

"BuySucPossibilityMid",

"UndefinedPossibilityMid",

"SellPossibilityMid",

"BuyPossibilityMid",

"Decision" ) < 0)

{

PrintError();

return (Error);

}

//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data

//Record statistics at time of Order - Added by DudeWorks

void RecordTickets ()

{

if (Error > 0)

return (Error); //stop on error

FileSeek(File,0,SEEK_END);

if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,

SellPossibilityMid*SellPossibilityQuality,

BuyPossibilityMid*BuyPossibilityQuality,

UndefinedPossibilityMid*UndefinedPossibilityQuality,

UndefinedSucPossibilityQuality,

SellSucPossibilityQuality,

BuySucPossibilityQuality,

UndefinedPossibilityQuality,

SellPossibilityQuality,

BuyPossibilityQuality,

UndefinedSucPossibilityMid,

SellSucPossibilityMid,

BuySucPossibilityMid,

UndefinedPossibilityMid,

SellPossibilityMid,

BuyPossibilityMid,

Decision) < 0)

{

PrintError();

return (Error);

}

FileFlush(File);

return(0);

}

eso no es un problema para mí.

la función de importación de datos externos en excel lo pone en filas bastante bien. sólo dile que está delimitado por ";" El reto que me gustaría conseguir con el formato es que no está imprimiendo una línea de resultado para las posiciones perdidas. Esto significa que los datos en las filas no son los mismos para cada orden lo que hace difícil diseñar un identificador que reconozca las entradas perdedoras. ahora mismo puedo separar los datos ganadores del resto bien, tal vez eso sea suficiente, creo que puedo trabajar con lo que tengo, pero no tengo datos de indicadores en esto todavía.

 

Mira esto...le he dado a esta cosa su propia función ahora para guardar la línea de resultado de la operación perdedora y TODAVÍA no imprime la línea???? oy, vamos una línea ¿es mucho pedir?

void RecordLongLOutcomes()

{

//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{

if(OrderType()==OP_BUY)

{

if(OrderOpenPrice() + Spread >= OrderClosePrice())

{

datetime blorderOpen=OrderOpenTime();

handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);

if(handle!=-1)

{

FileSeek(handle,0,SEEK_END);

FileWrite(handle,"Losing Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",blorderOpen);

FileWrite(handle," ");

Print("Recorded Losing Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);

FileFlush(handle);

FileClose(handle);

}

else

{

int err1;

err1=GetLastError();

Print("error(",err1,"): ",ErrorDescription(err1));

return(0);

}

}//if win or lose

}//if buy

}//if symbol and magic number

return (0);

}//record long outcomes[/PHP]

what gives???

see this? this works fine...

[PHP]void RecordLongOutcomes()

{

//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{

if(OrderType()==OP_BUY)

{

if(OrderOpenPrice() + Spread < OrderClosePrice())

{

datetime borderOpen=OrderOpenTime();

handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);

if(handle!=-1)

{

FileSeek(handle,0,SEEK_END);

FileWrite(handle,"Winning Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",borderOpen);

FileWrite(handle," ");

Print("Recorded Winning Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);

FileFlush(handle);

FileClose(handle);

}

else

{

int err;

err=GetLastError();

Print("error(",err,"): ",ErrorDescription(err));

//return(0);

}

}//if win or lose

}//if buy

}//if symbol and magic number

RecordLongLOutcomes();

return (0);

}//record long outcomes

¡Es el mismo código! (prácticamente) ¡Este lenguaje mql es increíblemente temperamental!

Archivos adjuntos:
 

hola Aaragorn

por favor, suba el mejor archivo de conjunto

para el ciber

tnx

bye

 
nanoc:
hola Aaragorn

por favor, suba el mejor archivo de conjunto

para el ciber

tnx

adiós

está en este...

https://www.mql5.com/en/forum/174700/page71