Errori, bug, domande - pagina 208

 
Ashes:

Poco sopra hai scritto:

Questa può essere stata l'intenzione, ma... Fare un esperimento sul campo (build 358).

Ho cancellato tutti i simboli dalla cartella "C:\Programmi\MetaTrader 5\Basi\Alpari-Demo\history"

Mi collego ad Alpari-Demo (il terminale ha 5 grafici aperti: EURUSD H1, EURCHF H1, USDJPY H1, GPBUSD H1+M1).

Qualche minuto dopo posso vedere l'immagine (la cronologia viene ancora scaricata):

Contenuto della cartella C:\Program Files\MetaTrader 5\Bases\Alpari-Demo\history

Grazie per il suo messaggio. Ci occuperemo della questione.
 
Interesting:

...

Se ho capito bene, la dimensione dei file della cronologia è nella directory del terminale, che è indicata dalla posizione della directory di "lavoro" - C:\Program Files\MetaTrader 5\Bases\Alpari-Demo\history\EURJPY

Il tester ha una propria cartella per questi dati - C:\Programmi\MetaTrader 5\tester\Agente(numero di agenti)\base\DC o un altro broker (server)\storia\....

Qual è il problema allora?

Il problema è la mancanza di volontà di leggere attentamente il messaggio originale ;)

Ci sono veramente 2 file (2009, 2010) nella cartella del tester, ma al primo avvio del tester per un simbolo specifico l'intera cronologia viene scaricata (se non è stata scaricata o cancellata prima) nella cartella "x:\Program Files\MetaTrader 5\Bases\...", e finché queste informazioni non sono completamente scaricate, il test non inizia.

Non mi dispiace duplicare i dati da\MetaTrader 5\Bases\ in MetaTrader 5\tester\Agent(per numero di agenti)\bases, poiché capisco che questa è un'istantanea dello stato dei tick per assicurare l'identità assoluta delle quotazioni durante l'enumerazione dell'ottimizzazione. Ma perché caricare dati che al momento non sono assolutamente necessari?

 
Ashes:

Il problema è la mancanza di volontà di leggere attentamente il post originale ;)

Ci sono veramente 2 file (2009, 2010) nella cartella del tester, ma al primo lancio del tester ad un simbolo specifico l'intera cronologia viene scaricata (se non è stata scaricata o cancellata prima) nella cartella "x:\Program Files\MetaTrader 5\Bases\...", e finché non riempie queste informazioni inutili, il test non parte.

Non mi dispiace duplicare i dati da\MetaTrader 5\Bases\ in MetaTrader 5\tester\Agent(per numero di agenti)\bases, poiché capisco che questa è un'istantanea dello stato dei tick per assicurare l'identità assoluta delle quotazioni durante l'enumerazione dell'ottimizzazione. Ma perché caricare dati che al momento non sono assolutamente necessari?

Controllerò, forse mi sbaglio davvero e c'è qualcosa su cui riflettere.
 
Renat:
La storia è caricata correttamente - significa che c'è stata una richiesta per il 2004. E quando si usa il tester, l'intera storia è sicuramente e correttamente caricata alla massima profondità - questa è una decisione assolutamente corretta e consapevole. Basta guardare le esclamazioni "incomprensibili" degli utenti di MT4 per capire - se non ci occupiamo della storia, allora gli utenti non saranno nemmeno in grado di controllare la storia.

Rileggi la mia risposta, per favore.

Non ci limitiamo a scaricare e ricontrollare tutta la storia. Se si usa un tester, inevitabilmente (non in questo test, ma nel prossimo) significa un lavoro completo e incondizionato con tutta la storia, indipendentemente dal fatto che questo particolare test userà un piccolo periodo di storia. Pertanto, il terminale prepara in anticipo e ricontrolla completamente la profondità e la correttezza di tutta la storia del simbolo desiderato. Naturalmente, solo l'intervallo di storia necessario viene passato/sincronizzato a un agente di test specifico per un particolare test.

Poiché i commercianti tendono a non notare le regole della corretta preparazione delle condizioni per il test, il terminale cerca di preparare e ri-testare l'ambiente il più possibile. In MetaTrader 5, abbiamo specificamente rimosso la limitazione sul volume e la profondità dei dati richiesti, in modo che i trader non debbano scaricare e sincronizzare manualmente i dati.

Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
  • www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
 
Interesting:

1. tester di strategia

Durante il test, il tester carica solo una coppia specificata nei parametri del tester. Se l'ottimizzazione viene eseguita per tutti i simboli, ogni simbolo sarà caricato in modo sequenziale.

Se l'Expert Advisor è multivaluta, gli altri simboli devono essere caricati indipendentemente.

L'idea è la seguente

а. Il tester ha una propria panoramica del mercato, in cui inizialmente è impostata solo la coppia specificata nei parametri del tester.

б. Se necessario, altre coppie possono essere aggiunte alla panoramica del mercato del tester da un EA, usando Select.

в. Il tester di strategia sincronizza i dati con il terminale, che a sua volta li sincronizza con il server di trading (dove il conto è aperto).

In questo caso, viene caricata la storia di tutto il periodo di test + una certa quantità di informazioni precedenti alla data del test (se non sbaglio, 1 anno).

в. Se l'Expert Advisor (voi) non è soddisfatto della profondità richiesta la storia dovrebbe essere caricata indipendentemente. Per esempio nel blocco di inizializzazione, dopo aver controllato la storia e la sincronizzazione dei dati.

a. logicamente

b. cioè nel caso generale, è IMPOSSIBILE scaricare tutto ciò di cui l'Expert Advisor ha bisogno durante i test (a meno che non si scarichi assolutamente tutto).

c. cioè prima dell'inizio dell'EA nel tester, le coppie corrispondenti non sono ancora disponibili nella panoramica del mercato del tester (secondo il punto a.)

c(2). la profondità è ok, non ho chiesto di più.

Così, è più logico (ma un po' più complicato) scaricare i dati secondo b, c, c(2) quando accediamo ai dati nell'EA.

Suggerisco di aggiungere #property tester_symbol per riempire la tabella dal punto a (se l'idea è descritta correttamente), con la possibilità di impostarne diverse, come #property description. Ma ancora convinto che in assenza di #proprietà tester_symbol la paginazione dovrebbe andare "come gioco" (tranne che per il carattere di base), in quanto la loro REALTÀ dipende esclusivamente dall'algoritmo dell'EA stesso.

Interessante:

2. terminale

Qui la storia si forma in un modo simile (per quanto ho capito, secondo i simboli indicati nella revisione del mercato del terminale, tenendo conto dei grafici aperti). Quando si inizia a lavorare con il terminale, si forma un minimo necessario di storia per i simboli con cui si lavora (non ricordo il numero esatto di barre, ma è stato ripetutamente menzionato sul forum).

Se questa profondità di storia non è conveniente, i dati dovrebbero essere caricati manualmente. Per fare questo passa al mese massimo (una delle opzioni raccomandate) e usando lo scroll sinistro del grafico carica la storia alla profondità massima.

Sarebbe anche auspicabile impostare il numero richiesto di barre sul grafico nei parametri del terminale.

Come si è scoperto, in questo caso non è necessario un minimo, ma l'intera storia del simbolo, con cui stiamo lavorando.

Un'osservazione (la build è cambiata di 360): se modifichiamo leggermente le condizioni - non cancellare l'intera cartella history dopo il download iniziale e lasciare l'anno corrente in essa, gli anni precedenti non verranno scambiati automaticamente! Finché il tester non viene eseguito su questo personaggio.

 
Renat:

Rileggi la mia risposta, per favore.

Non scarichiamo e ritestiamo l'intera storia per una ragione. Se si usa un tester, inevitabilmente (non in questo test, ma nel prossimo) significa un lavoro completo e incondizionato con tutta la storia, indipendentemente dal fatto che questo particolare test userà un piccolo periodo di storia. Pertanto, il terminale prepara in anticipo e ricontrolla completamente la profondità e la correttezza di tutta la storia del simbolo desiderato. Naturalmente, solo l'intervallo di storia necessario viene passato/sincronizzato a un agente di test specifico per un particolare test.

Poiché i commercianti tendono a non notare le regole della corretta preparazione delle condizioni per il test, il terminale cerca di preparare e ri-testare l'ambiente il più possibile. In MetaTrader 5, abbiamo volutamente rimosso la limitazione del volume e della profondità dei dati richiesti, in modo che i trader non debbano scaricare e sincronizzare manualmente i dati.

Questo è solo per "avere"! Con il prossimo uso del tester, la storia potrebbe essere corretta (soprattutto ora, quando ha un sacco di difetti in diverse società di intermediazione, dalla completa assenza, ai dati storti).

L'utente non capisce la felicità che è caduta su di lui! Aggiungete nelle impostazioni la casella di controllo "NON VOGLIO, lo voglio solo quando richiesto dall'utente o dall'esperto/script/indicator". E anche "NON voglio aggiornamenti automatici forzati di MT5".

 
Ashes:

a. logicamente

b. cioè, in generale, è IMPOSSIBILE pompare tutto ciò di cui l'EA avrà bisogno durante i test PRIMA DI INIZIARE (a meno che non sia assolutamente tutto pompato).

c. cioè prima dell'inizio dell'EA nel tester, le coppie corrispondenti non sono ancora disponibili nella panoramica del mercato del tester (secondo il punto a.)

c(2). la profondità è ok, non ho chiesto di più.

Così, è più logico (ma un po' più complicato) scaricare i dati secondo b, c, c(2) quando accediamo ai dati nell'Expert Advisor.

Suggerisco di aggiungere #property tester_symbol per riempire la tabella dal punto a (se l'idea è descritta correttamente), con la possibilità di impostarne diverse, come #property description. Ma ancora convinto che in assenza di #proprietà tester_symbol paging dovrebbe andare "come gioco" (tranne il carattere di base), come la loro REALTÀ dipende esclusivamente dall'algoritmo dell'EA stesso.


Queste funzioni sono convenienti (e abbastanza sufficienti) per formare la lista dei simboli nel tester

Ottenere dati di mercato

Funzioni per ottenere informazioni sulle condizioni del mercato.

La funzione

Azione

SimboliTotale

Restituisce il numero di simboli disponibili (selezionati in MarketWatch o tutti)

SymbolName

Restituisce il nome del simbolo specificato

SymbolSelect

Seleziona un simbolo in MarketWatch o rimuove il simbolo dalla finestra

 
"Usate spesso il ridimensionamento dell'array? A volte il tuo cervello è in ebollizione, e non sai perché il messaggio"Array out of range in..." salta fuori? "Allora veniamo noi da te!" :D

-Controllare se ArrayResize() restituisce "-1"?

Prima, un messaggio come "Out of memory" appariva e il programma andava in crash - ora non lo fa più.

Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
 

Costruire 360. Sembra un errore in CTrade:

2010.10.04 18:59:00 CTrade::PositionOpen: instant buy 0.10 EURUSD a 1.36890 sl: 1.36390 tp: 1.37890 [fatto a 0.00000]

2010.10.05 09:43:00 CTrade::PositionModify: modifica acquisto 0,00 EURUSD (sl: 1,36897, tp: 1,37861) [done]

 

Costruire 360. Diverse volte nel tester c'erano messaggi "agente tester fallito".

GK 0 Tester 18:26:31 EURUSD: storia preliminare di download iniziata

CL 0 Tester 18:28:55 EURUSD: storia preliminare di download completata

GH 0 Core 2 18:28:59 processo agente iniziato

HP 0 Core 2 18:29:00 connessione a 127.0.0.1:3000

OI 2 Tester 18:29:05 tester agent got failed

LI 0 Core 2 18:29:05 connect closed

GN 0 Core 2 18:34:14 agent process started

KJ 0 Core 2 18:34:14 connecting to 127.0.0

.

1:3000

RJ 0 Core 2 18:34:15 connesso

OP 0 Core 2 18:34:15 autorizzato (agent build 360)

NH 0 Tester 18:34:15 EURUSD,M1 (Alpari-Demo): test di experts\third.ex5 da 2010.10.04 00:00 a 2010.11

.

05 00:00:00 da avviare

...

HQ 0 Core 2 19:27:47 processo agente avviato

II 0 Core 2 19:27:48 connessione a 127.0.0.1:3000

CP 2 Tester 19:27:53 agente tester fallito

HP 0 Core 2 19:27:53 connessione chiusa

KI 0 Core 2 19:28:10 connessione a 127.0.0.1:3000

QL 0 Core 2 19:28:10 connesso

PN 0 Core 2 19:28:10 autorizzato (agent build 360)

RJ 0 Tester 19:28:10 EURUSD,M1 (MetaQuotes-Demo): test di experts\third_alptest2.ex5 da 2010.10.04 00:00 a 2010.11.05 00:00 da avviare

MF 0 Core 2 19:28:11 sincronizzazione comune completata

IM 0 Core 2 19:28:11 3124 bytes di informazioni sul conto

caricate