Errori, bug, domande - pagina 2659

 
Igor Makanu:

controllato tramite l'output a OnTester()

l'immagine è la stessa di sopra

ecco la questione della fiducia che se si passa opzionalmente NS attraverso GA tester - non è sicuro che tutti i core del processore locale non lavoreranno con la stessa configurazione iniziale dei pesi NS - rovina i risultati di formazione, imho

si può provare a usare qualche funzione del numero di passaggio come base di generazione.

Se ci sono alcuni parametri di input che cambiano durante l'ottimizzazione, la loro combinazione (somma, prodotto, grado...) può essere utilizzata per impostare una base per la generazione di numeri pseudorandom. Probabilmente (ma non per certo :D ), un effetto collaterale sarebbe quello di poter riprodurre in un solo passaggio il codice con numeri "casuali" all'interno.

 
Igor Zakharov:

si può provare a usare qualche funzione del numero di passaggio come base di generazione.

Se ci sono alcuni parametri di input, che cambiano durante l'ottimizzazione, la loro combinazione (somma, prodotto, grado...) può essere usata per impostare la base di generazione di numeri pseudo-casuali. Probabilmente (ma non definitivamente :D ), un effetto collaterale sarebbe quello di poter riprodurre in un solo passaggio il codice con numeri "casuali" all'interno.

Si può generare/trovare un array di caratteri, relativamente casuale, da pochi kilobyte (il testo di Pushkin:) ). Tutto si riduce all'implementazione furba della casualità per soddisfare i requisiti del compito, se proposto non è controllato, ricordo tali problemi in molte librerie.

Colleghi, per favore consigliatemi, se apro il grafico ChartOpen(), come posso riportare il focus (attività, visibilità) sul grafico su cui lavora l'Expert Advisor senza chiuderlo.

E chissà perché Bid, Ask non coincide con il prezzo del grafico Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.02.25
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Aleksey Mavrin:

Tutto si riduce ad avere la propria implementazione di randomizzazione abilmente realizzata per soddisfare i requisiti dei compiti

Non credo che sia questo il problema... lo pseudo-casuale stesso funziona abbastanza bene, il problema è nella base di generazione - con ingressi costanti (durante l'ottimizzazione) la base è la stessa, quindi i risultati sono sempre vicini. ho suggerito come massimizzare la dispersione della base di generazione

 
Igor Zakharov:

mi sembra che non sia questo il problema... lo pseudo-casuale stesso funziona bene, il problema è nella base di generazione della serie - con ingressi costanti (durante l'ottimizzazione) la base è la stessa, quindi i risultati sono sempre vicini. ho suggerito come massimizzare la dispersione della base di generazione

Sono d'accordo. Volevo solo dire il fatto, se la memoria serve, che spesso trovato (sono) librerie che non funzionano inizializzazione, cioè per nessun motivo la stessa base, se non controllato e utilizzato, molti non lo sanno.

 
Igor Makanu:

immagine come sopra

soluzione crusty direttamente - impostare il numero per srand nelle proprietà EA. o prendere dall'hash dei parametri, poi almeno i randomi saranno diversi inizializzazione.
 
TheXpert:
soluzione crusty direttamente - impostare il numero per srand nelle proprietà EA. o prendere da hash di parametri, poi almeno randoms sarà diversa inizializzazione.

Ho trovato questa soluzione ieri, funziona correttamente

input int param1 =  2147483647;
//+------------------------------------------------------------------+
int OnInit()
   {
   srand(param1);
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
void OnTick()
   {

   }
//+------------------------------------------------------------------+
double OnTester()
   {
   return(rand());
   }

le mie domande sono in generale sulla correttezza di rand() in teter, ora ho cercato alglib, usaMathRand() una volta in randomreal(), che sarà poi spesso usato all'interno della libreria alglib

 
Igor Makanu:

le mie domande riguardano in generale la correttezza di rand() nel teter

Le domande riguardano esattamente l'inizializzazione. A quanto pare, nel tester non si può inizializzare per tempo per ottenere una buona rand().
 
TheXpert:
A quanto pare, per ottenere una buona casualità nel tester, non si può inizializzare con il tempo.

è esattamente quello che è

ha scritto ieri che questo contraddice la documentazionehttps://www.mql5.com/ru/forum/1111/page2657#comment_15165819 e l'esempio MathSrand() dall'aiuto darà un risultato diverso da quello previsto nel tester


UPD: il mio problema è un po' più profondo - voglio usare tester per l'apprendimento profondo e salvare le migliori configurazioni possibili di NS tramite lo scambio da agente ad agente - ho pianificato tutto in generale, ma volevo gestire le collisioni tramite la pausa di inizio (o fine) dell'agente con valore casuale.... ma ahimè non tutti i valori casuali sono casuali negli agenti tester )))

 
Nella maggior parte dei casi, il tester deve garantire la riproducibilità dei risultati. Il requisito che i risultati siano randomizzati senza cambiare i parametri di input e lo stato dell'ambiente (tutte le funzioni legate al tempo virtuale) è contrario al compito e all'implementazione del tester.
 
Stanislav Korotky:
Nella maggior parte dei casi nel tester è necessario garantire la riproducibilità dei risultati. Il requisito che i risultati siano randomizzati senza cambiare i parametri di input e lo stato dell'ambiente (tutte le funzioni legate al tempo virtuale) contraddice il compito e l'implementazione del tester.

va bene quello che scrivi, ma ho bisogno di separare l'ordine di accesso degli agenti durante il salvataggio nel database

in sostanza avete bisogno di un ID agente locale nel tester, non so perché non c'è questa funzionalità