Ottimo EA in backtest! - pagina 116

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

grazie

Beno

Ti aiuterei se sapessi come fare meglio del 70% ma non lo so. Funziono sul grafico a 1 ora, prova quello.

 
Aaragorn:
Grazie per quel 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.

Dai un'occhiata a questo thread:

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

 

Ho lavorato molto su questo codice e l'ho lasciato un po' in disordine, ma...

i miei sforzi per farlo stampare su file si stanno rivelando infruttuosi al momento.

Credo che chiederò a coloro che vogliono assistere nella raccolta dei dati di fare il tentativo di farlo manualmente.

Ho questo allegato EA impostato per stampare sul giornale le logiche minime del CT. Questo non è afferrare alcun indicatore, ma forse solo guardando le logiche del CT ci darà qualcosa per andare con.

Per raccogliere questi dati, quello che dovete fare è eseguire l'ea nel set up di backtester così com'è. Tuttavia, mentre viene eseguito è necessario monitorare la scheda journal. Dal momento che il diario non può contenere più dei dati di alcuni ordini senza iniziare a troncare e far cadere i dati dalla parte inferiore. dovrai fermare il test molto rapidamente quando raggiungi circa ogni 5 - 7 ordini successivi. Poi copiate e incollate i dati in un blocco note e riavviate il tester guardando quando arriva al punto in cui avete fatto il precedente copia/incolla. Devi fare attenzione a catturare tutti i dati quando incolli che assomigliano a questo per un ordine...

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

esegui questo su un grafico di un'ora e cattura i dati. poi mandami il file .txt notepad per email forse se islandhome partisse dal primo ordine e facesse i primi 500 traeds del 2005 e AZBOfin partisse dal trade 500 del 2005 e facesse i prossimi 500?

ah! che palle. fammi provare quello che il guru dei codificatori ha appena postato.

 
codersguru:
Dai un'occhiata a questo thread: https://www.mql5.com/en/forum/175496

Wow, potresti avermi appena salvato un sacco di problemi qui...

Potresti guardare l'EA che ho postato e vedere dove sto cercando di stampare su file in 4 posti nel codice. Due volte dove apre gli ordini e poi in funzioni separate quando chiude gli ordini. Vedi cosa sto cercando di estrarre da questo? Potreste aiutarmi a codificare questo in modo che registri le informazioni di ogni ordine, la logica del programma quando si apre e il risultato quando l'ordine si chiude?

Se faccio questo fileflush dopo ogni volta si cancella qualcosa? Non ho ancora capito come funziona la cosa del flush.

 

Eureka! Oh amico, beh, grazie guru dei codificatori, bel salvataggio!

Ora sono ancora un po' perplesso... notate che il file .txt non stampa una riga di risultato per ogni ordine. perché lo salta per alcuni ordini, mi chiedo?

Posso supporre che se non stampa la riga di esito che si tratta di una posizione perdente?

 

Non sarai mai in grado di decifrare quei dati in quel formato, hai bisogno che siano in righe, prova a incorporare queste.

Sto ancora avendo un problema con esso che dice che troppi file sono aperti... ma ecco il modo di base in cui il vostro dumpp deve essere formattato in modo da poterlo visualizzare in 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:
Non sarai mai in grado di decifrare quei dati in quel formato, hai bisogno che siano in righe, prova a incorporare questi.

Ho ancora un problema con il fatto che dice che ci sono troppi file aperti... ma ecco il modo in cui il vostro dumpp deve essere formattato in modo da poterlo visualizzare in 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);

}

Questo non è un problema per me.

La funzione di importazione di dati esterni su excel li mette in righe abbastanza bene. basta dirgli che sono delimitati da ";" La sfida che vorrei ottenere con la formattazione è che non sta stampando una linea di risultato per le posizioni perdenti. Questo significa che i dati nelle righe non sono gli stessi per ogni ordine, il che rende difficile progettare un identificatore che riconosca le voci perdenti. In questo momento posso separare i dati vincenti dal resto bene, forse è abbastanza, penso di poter lavorare intorno a quello che ho, ma non ho ancora nessun dato indicatore in questo.

 

Guardate qui... ho dato a questa cosa una funzione tutta sua ora per salvare la linea del risultato del trade perdente e ancora non stampa la linea???? oy, andiamo su una linea è troppo da chiedere?

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

E' lo stesso codice! (praticamente) Questo linguaggio mql è incredibilmente temperante!

 

ciao Aaragorn

pls caricare il file migliore set

per cyber

tnx

ciao

 
nanoc:
ciao Aaragorn

pls caricare il miglior file set

per cyber

tnx

ciao

è in questo...

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