Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 28

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

Renat Fatkhullin, 2017.03.31 09:10

Usa ArraySize per gli oggetti dinamici e applica sizeof solo agli oggetti statici. Sizeof conta a tempo di compilazione ed è sempre una costante.

 

Forum sul trading, sistemi di trading automatico e test di strategia

SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) e SymbolIsSynchronized(_Symbol)

Slawa, 2017.04.04 08:05

Negli esperti e negli script quando si chiamano le funzioni Copy vengono fatti diversi tentativi - viene controllata la prima data nel server, viene controllata la prima data nel terminale client, confrontata con la data richiesta, viene controllata la sincronizzazione dei simboli, viene inviata la richiesta di ripresa, piccola attesa e giro con controllo della sincronizzazione. Se il simbolo non è ancora sincronizzato, allora viene dato quello che lo è e soddisfa le condizioni della richiesta. La serie temporale richiesta non viene controllata per la sincronizzazione, poiché viene completata al volo durante la paginazione dei dati.

Negli indicatori viene fatta solo una richiesta - nessun ciclo! Poi tutto ciò che è stato gestito per essere preso viene dato immediatamente.

 

Nel tester MT5 in modalità "real ticks" la base della storia non sono ticks reali, ma barre M1. Questo significa che se i tick reali non corrispondono a barre, vengono ignorati, e invece vengono generati tick artificiali, che devono corrispondere a barre.

Allo stesso tempo, se CopyTicks è richiesto per più di 128K, allora nel tester, saranno presi non dalla cache (tick reali + generati), ma da un database - tick reali. E ottenere la mancata corrispondenza nel tester della storia dei tick e ciò che il tester stava generando.

 
fxsaber:

Nel tester MT5 in modalità "real ticks" la base della storia non sono ticks reali, ma barre M1. Questo significa che se i tick reali non corrispondono a barre, vengono ignorati, e invece vengono generati tick artificiali, che devono corrispondere a barre.

Allo stesso tempo, se CopyTicks è richiesto per più di 128K, allora nel tester, saranno presi non dalla cache (tick reali + generati), ma da un database - tick reali. E ottenere una mancata corrispondenza nel tester tra la storia delle zecche e ciò che il tester stava mettendo su.

Che cosa terribile, è davvero così? - Hai scritto in SD?

Cosa credere ora, come vivere... (quasi senza triste ironia)

 
Andrey Dik:

Che cosa terribile, è davvero vero? - L'hai scritto in SD?

Questa è una parafrasi molto abbreviata delle risposte degli sviluppatori non della mia domanda a SR.
 
fxsaber:

Allo stesso tempo, se CopyTicks è richiesto per più di 128K pezzi di bordo,

Quale bordo? Gli ultimi 128K?

O il primo?

 
George Merts:

Qual è il vantaggio? 128K dell'ultimo ?

O il primo?


Il più recente.
 
Andrey Dik:

Che cosa terribile, è davvero vero? - Hanno scritto nella SD?

Cosa credere ora, come vivere... (quasi senza triste ironia)

https://www.mql5.com/ru/docs/runtime/testing#real_ticks
 

Nei test, i dati al minuto sono considerati più affidabili.

Le barre di minuti sono più affidabili? I dati delle zecche non sono l'ultima risorsa? Perché avete bisogno di dati di tick reali se non vengono presi in considerazione?

Ero ingenuo quando facevo i test sui minuti, poi ho fatto i test sui tic, poi sui tic reali come controllo finale di precisione. Ora capisco che non c'è molto senso nel terzo controllo.

 
Andrey Dik:

Nei test, i dati al minuto sono considerati più affidabili.

Le barre di minuti sono più affidabili? I dati delle zecche non sono l'ultima risorsa? Perché abbiamo bisogno di dati reali di tick se non vengono presi in considerazione?

Ingenuamente, facevo così: testavo sui minuti, poi testavo sui tick, poi testavo sui tick reali come controllo finale di precisione. Ora capisco che il terzo controllo non ha molto senso.


Non c'è bisogno di togliere la frase dal contesto. La frase suona così:

Per garantire la massima accuratezza nei test, le barre dei minuti sono utilizzate anche nella modalità real tick. I dati delle zecche sono controllati e corretti da loro. Aiuta anche ad evitare la divergenza dei grafici nello Strategy Tester e nel terminale client.

Il tester controlla la conformità dei dati dei tick con i parametri della barra dei minuti: un tick non deve andare oltre i prezzi High/Low, i tick aperti e chiusi devono coincidere con i prezzi Open/Close della barra. Il volume è anche confrontato. Se viene rilevata una mancata corrispondenza, tutti i tick corrispondenti a quella barra dei minuti saranno scartati. Le zecche generate saranno invece utilizzate (come nella modalità "Tutte le zecche").

Se c'è una barra dei minuti nella storia del simbolo, ma nessun dato di tick per quel minuto, il tester genererà i tick nella modalità "Tutti i tick". Questo permette al tester di costruire il grafico corretto in caso di dati tick incompleti al broker.

Se non c'è una barra dei minuti nella storia del simbolo, ma ci sono dati di tick per quel minuto, possono essere usati nel tester. Per esempio, le barre dei simboli azionari sono formate usando gli ultimi prezzi. Se dal server arrivano solo tick con prezzi Bid/Ask senza Last price, la barra non verrà formata. Il tester userà questi dati in tick, poiché non contraddicono i dati in minuti.

I dati dei tick possono non coincidere con le barre dei minuti per vari motivi. Per esempio, a causa di interruzioni di connessione o altri guasti durante la trasmissione dei dati dalla fonte al terminale client. Durante i test, i dati al minuto sono considerati più affidabili.

Come potete vedere, se non cercate di manipolare, risulterà che avete interpretato male il riferimento.
Motivazione: