Errori, bug, domande - pagina 1680

 

Nel diario di bordo.

2016.09.12 22:20:37.728 Books   invalid book item[RTS-9.16,buy,99040.00000,-4]
BCS-MetaTrader5, reale, 1415. È successo quando si è passati da un conto demo a un conto reale. Non sono stati eseguiti Expert Advisors o indicatori. La finestra del manichino era aperta.
 
fxsaber:

Nella rivista.

BCS-MetaTrader5, reale, 1415. È successo quando sono passato dalla demo al conto reale. Nessun Expert Advisors o indicatore era in esecuzione. La finestra del Calderone era aperta.

Ho scritto di questo bug

https://www.mql5.com/ru/forum/95131

invalid book transaction
invalid book transaction
  • recensioni: 2
  • www.mql5.com
Раньше не было, появилось сегодня (реал). Что это...
 
prostotrader:
Cosa sono quegli asterischi sotto il titolo dell'argomento? E anche il numero di recensioni.
 
fxsaber:
Cosa sono quegli asterischi sotto il titolo dell'argomento? E il numero di recensioni.
A proposito, è da molto tempo che mi chiedo dove dovrebbero essere messe queste stelle per i temi.
 

In modalità debug, come posso scoprire da dove viene chiamata la funzione in cui mi trovo attualmente?

In parole povere, vorrei avere accesso a un albero di chiamate di funzioni/metodi annidati. È possibile?

 
fxsaber:
In modalità debug, come faccio a scoprire da dove è stata chiamata la funzione in cui mi trovo attualmente?

In modalità "Passo dopo passo", visualizzate la scheda "Debug" una alla volta:

passi

 
Karputov Vladimir:

In modalità "Passo dopo passo", visualizzate la scheda "Debug" una alla volta:

Grazie. Non riesco a capire perché l'indicatore chiama OnCalculate due volte all'inizio. Mi piacerebbe scoprire a quale evento reagisce. Sfortunatamente, non riesco a vedere nessun evento nella scheda di debug.
 
fxsaber:
Grazie. Non riesco a capire perché all'inizio l'indicatore chiama OnCalculate due volte. Vorrei scoprire per quale evento è questa risposta. Nessun evento è visibile nel debug, purtroppo.

A volte succede due volte, a volte una, forse anche tre volte: mettete questo codice in Oncalculate() -

//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   Print(__FUNCTION__,", rates_total ",rates_total,", prev_calculated ",prev_calculated);

sarà chiaro quando la storia viene scambiata (quando la storia viene scambiata prev_calculated==0).

 
Karputov Vladimir:

A volte succede due volte, a volte una, forse anche tre volte: mettete questo codice in Oncalculate() -

sarà chiaro quando avviene lo scambio della storia (quando history swap prev_calculated==0).

No, lo sto facendo funzionare su RTS ora, quando i kotir sono in piedi. Ho capito che viene chiamato una volta, e il debugger mente, mostrando come se fossero due. Codice per giocare (eseguire su un personaggio in cui non ci sono ticchettii)

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1

int Func(){ return(0); }

int OnCalculate( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[] )
{
//  return(0); // если расскоментировать и здесь поставить точку останова, то отладчик отработает, как надо
  return(Func()); // здесь поставить точку останова (F9)
}

Dopo aver premuto F5, il sistema raggiungerà un punto di interruzione. E dopo una seconda pressione su F5 - allo stesso modo. Anche se questo non dovrebbe essere - come conferma, potete accorciare la linea che è nel codice e provare con quella.

 
fxsaber:

No, lo sto facendo funzionare su RTS ora, quando i kotir sono in piedi. Ho capito che viene chiamato una volta, e il debugger mente, mostrandolo come se fossero due. Codice per giocare (eseguire su un personaggio in cui non ci sono ticchettii)

Dopo aver premuto F5, il sistema raggiungerà un punto di interruzione. E dopo una seconda pressione su F5 - allo stesso modo. Questo non dovrebbe essere il caso però - come conferma, puoi scartare la linea che è nel codice e provare con quella.

Non fa alcuna differenza se le citazioni vanno o stanno in piedi. Dovete controllare la condizione prev_calculate==0 nell'indicatore - questo è lo swap della storia e il secondo punto - il modo parsimonioso di ricalcolo delle barre modificate, cioè in effetti, rates_total -prev_calculate+1.