Errori, bug, domande - pagina 2586

 
Slava:

Cominciate a leggere l'articolo https://www.mql5.com/ru/articles/239

Leggete. Ma non ho visto nessuna risposta, perché CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time); legge 30k barre invece di 100k barre nel tester. Allo stesso tempo nel terminale legge tutto correttamente.
 
elibrarius:
Leggere. Tuttavia, non ho ricevuto una risposta, perché il tester di CopyTime ha calcolato 30 barre invece di 100 000 barre. Allo stesso tempo, nel terminale, legge tutto correttamente.

Lo storico per gli strumenti utilizzati viene scaricato dal tester dal terminale client (non dal server di trading!) automaticamente quando si accede per la prima volta a questo strumento.

L'agente di test scarica solo la storia mancante con un piccolo margine, al fine di fornire i dati necessari sulla storia per calcolare gli indicatori al momento del test. La quantità minima di storia da scaricare dal server di trading per i timeframe D1 e inferiori è un anno. Così, se iniziate il test sull'intervallo 2010.11.01-2010.12.01 (test sull'intervallo di un mese) con il periodo M15 (ogni barra è di 15 minuti), il terminale richiederà la storia per l'intero anno 2010. Per il timeframe Weekly, richiederemo la storia di 100 barre, che è circa due anni (ci sono 52 settimane in un anno). Per i test su base mensile l'agente richiederà la cronologia per 8 anni (12 mesi * 8 anni = 96 mesi).


Riassunto

Nelle impostazioni di test impostare l'intervallo di tempo mensile

 
Slava:

La cronologia dei simboli utilizzati viene scaricata dal tester automaticamente dal terminale del cliente (non dal server commerciale!) la prima volta che accede a questo simbolo.

L'agente di test scarica solo la storia mancante con un piccolo margine per fornire i dati necessari sulla storia per calcolare gli indicatori all'inizio del test. La quantità minima di storia da scaricare dal server di trading per i timeframe D1 e inferiori è un anno. Così, se iniziate il test sull'intervallo 2010.11.01-2010.12.01 (test sull'intervallo di un mese) con il periodo M15 (ogni barra è di 15 minuti), il terminale richiederà la storia dello strumento per l'intero anno 2010. Per il timeframe Weekly, richiederemo la storia di 100 barre, che è circa due anni (ci sono 52 settimane in un anno). Per i test su base mensile l'agente richiederà la cronologia per 8 anni (12 mesi * 8 anni = 96 mesi).


Riassunto

Nelle impostazioni di test impostare l'intervallo di tempo mensile

È chiaro - risparmia risorse.

Cosa succede se voglio testare su M15, ma ho bisogno di diversi anni di dati (per addestrare una rete neurale)? Dobbiamo memorizzare le barre nei nostri file?

 
Roman:

memcpy usato come mostrato nell'articolo di esempiodi Renate.
L'uso di altre funzioni di copia causa gli stessi problemi.
Il comportamento con queste funzioni è descritto in questo post e in questo
Sono state provate tutte le possibili funzioni di copia.

Cosa sai sulla condivisione dei dati da più thread?

 
Ilyas:

Cosa sai della condivisione dei dati multi-thread?

Il codice usa lock_guard
Ma se viene commentato, non c'è nessun cambiamento
.

recursive_mutex mtx;
const wchar_t* data;
bool success ;
                
while (condition)
{
        
   if (DataAvailable())
   {
      lock_guard<recursive_mutex> locker(mtx);
      success = ReadData();
   }
        
   if (success)
   {
      lock_guard<recursive_mutex> locker(mtx);
      data = getData();
                
      memcpy(out, data, wcslen(data) * (sizeof(char)*3));
   }
        
   Sleep(1);
}
Ancora ha iniziato a perdere, ma è comprensibile il perché, a causa della dimensione sbagliata di
File:
222.PNG  13 kb
 
elibrarius:

Vedo - risparmio di risorse.

Ma cosa succede se hai bisogno di testare su M15, ma hai bisogno di diversi anni di dati (per addestrare una rete neurale)? Avete bisogno di memorizzare le barre nei vostri file?

Dobbiamo solo aspettare:

input int InpBars = 100000;

void OnTick()
{  int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

}
 
elibrarius:

Vedo - risparmio di risorse.

Ma cosa fare se ho bisogno di testare su M15, ma ho bisogno di dati per diversi anni (per addestrare una rete neurale)? Dobbiamo memorizzare le barre nei nostri file?

Qual è il problema? È possibile accedere ai dati da qualsiasi periodo di tempo.
 
Slava:
Qual è il problema? È possibile accedere ai dati da qualsiasi periodo di tempo.

Se eseguo il test su M15, perché il trade nel tester sarà su M15, non sarò in grado di contare 100000 barre dalla storia. Ma abbiamo bisogno di testare il trading su M15.

Se lo gestisco su Мonthew per avere una storia per 8 anni, non sarò in grado di scambiare più di una volta al mese.

 
elibrarius:

Se eseguo il test su M15, perché il trade nel tester sarà su M15, non sarò in grado di contare 100.000 barre dalla storia. E ho bisogno di testare il trading su M15.

Se lo gestisco su Мonthew per avere una storia per 8 anni, allora non sarò in grado di scambiare più di una volta al mese.

Perché no?

 
Alexey Viktorov:

Perché?

I prezzi di apertura vengono testati. La zecca verrà una volta al mese.
Se si esegue su tutti i tick reali, è possibile con una forte riprogettazione e complicazione del codice. Sprecherà anche risorse. Penso che sarebbe più facile leggere le barre dai file.