Errori, bug, domande - pagina 2584

 
Georgiy Merts:

Ecco una domanda.

A volte ottengo un errore di overrun dell'array quando ottimizzo un certo set di parametri. L'errore si verifica piuttosto raramente e non riesco a riprodurlo. Ho bisogno di conoscere l'insieme di parametri in cui si verifica questo errore. Come determinare questo insieme di parametri? C'è un numero di passaggio nel log del tester, ma questo set di parametri non è presente nel rapporto. Dove posso vedere quali parametri sono stati usati in questa esecuzione?

Modificate questa bibbia per scrivere le stampe nel file Common.

 
E un altro bug - se uno dei parametri è ENUM_TIMEFRAMES periodo, poi su un grafico 1D o 2D da questo parametro - non ho visualizzazione per qualche motivo. Sono solo io?
 
fxsaber:

Modificare questa biblio per scrivere le stampe nel file Common.

Sì, se non ci sono altre opzioni, è una soluzione giusta. Grazie.

E manteniamo il nome di battesimo, ci conosciamo virtualmente da molto tempo.

 
Ho capito bene che i puntatori a una variabile non funzionano in mql?
void OnStart()
{ 
   int *ptr;
}

Il compilatore dice che il puntatore non può essere usato.

 
Roman:
Ho capito bene che i puntatori a una variabile non funzionano in mql?

Il compilatore dice che il puntatore non può essere usato.

Sembra che i puntatori possano essere solo ad oggetti, e si ottengono chiamando GetPointer()

 
Georgiy Merts:

Sembra che i puntatori possano essere solo ad oggetti, e si ottengono chiamando GetPointer()

Grazie. Sì, nessun problema con gli oggetti di classe, ecco perché ero sorpreso che non funzionasse con le variabili, è triste però.

 

Non ho un posto dove mettere i conti di intermediazione nel mio computer personale.

Quando apro "Preferiti", c'è solo una pagina bianca.

Cosa c'è?

Non posso vedere gli account su mql5 o iscrivermi a qualcuno.

 

L'indicatore non chiama OnDeinit quando cancella l'indicatore, se ha la funzioneChartIndicatorGet, che semplicemente legge un handle di se stesso senza aggiungerlo a una variabile.

#property indicator_chart_window

int OnInit() {
   for (int i=0; i<ChartIndicatorsTotal(0,0); i++)  
       ChartIndicatorGet(0,0,ChartIndicatorName(0,0,i));
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+

void OnDeinit(const int reason) {
   Print("Deinit");
}

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) {
   return(rates_total);
}

E se ricompilate l'indicatore dopo averlo cancellato, si verifica la chiamata ritardata di OnDeinit (Print("Deinit");).

Va bene?


Costruire 2168

File:
 
Nikolai Semko:

Un indicatore non chiama OnDeinit quando cancella un indicatore se ha la funzione ChartIndicatorGet, che legge semplicemente il proprio handle anche senza mettere l'handle in una variabile.

IndicatorRelease è obbligatorio se ha ricevuto il proprio handle.

 
fxsaber:

IndicatorRelease è obbligatorio se si ottiene il proprio manico.

Hm...
E dove e a che punto posso cancellare una maniglia dell'indicatore?

Sarebbe logico usare OnDeinit, ma non funziona.

ZS È una strana immagine.
Ho provato: se cancello l'handle subito dopo averlo ottenuto, viene cancellato, ma l'indicatore stesso no, il nome rimane, e ha già un nuovo handle e continua a funzionare. E, infatti, poi quando si cancella l'indicatore OnDeinit viene eseguito.

Ho provato con un indicatore senza buffer, però. Non so come si comporterà il buffer di dati quando l'handle viene cancellato.
Non capisco...