Errori, bug, domande - pagina 2572

 
Vict:

Come si crea un CJVal, probabilmente new CJVal()?

È improbabile che il terminale lo prenda.

No, come nell'esempio dell'autore biblico, sulla pila

CJAVal js(NULL, jtUNDEF);
 

Ho scoperto che nella mia modalità di test visivo SymbolInfoTick() restituisce un valore ma la serie temporale Close[0] ha un valore diverso.

È un mio errore? Sto facendo qualcosa di sbagliato?

Sembra che dovrebbero essere gli stessi valori:

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[])
  {
//---

   MqlTick mtLastTick;
   SymbolInfoTick(Symbol(),mtLastTick);
   
   ArraySetAsSeries(close,true);


   Comment("Close[0] = " + DoubleToString(close[0],5) + "\nLastBid = " + DoubleToString(mtLastTick.bid,5));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Di solito la differenza è di 1-2 punti, ma nei movimenti bruschi può essere di più.

Sono solo io?

Finora ho preso la serie temporale come "più corretta". Se risulta che SymbolInfoTick() dà un valore diverso da Close[0], assumo che quello corretto sia Close[0] e lascio lo spread come è stato restituito da SymbolInfoTick().

Tuttavia, voglio sapere quale prezzo è corretto e se è Close[0] o SymbolInfoTick().

File:
TestTick.mq5  2 kb
 
Georgiy Merts:

Ho scoperto che nella mia modalità di test visivo SymbolInfoTick() restituisce un valore ma la serie temporale Close[0] ha un valore diverso.

È un mio errore? Sto facendo qualcosa di sbagliato?

Sembra che dovrebbero essere gli stessi valori:

Di solito la differenza è di 1-2 punti, ma nei movimenti bruschi può essere di più.

Sono solo io?

Per ora ho preso la serie temporale come "più corretta". Se si scopre che SymbolInfoTick() dà un valore diverso da Close[0], allora penso che il valore corretto sia Close[0] e lascio lo spread come è stato restituito da SymbolInfoTick().

Ma voglio sapere quale prezzo è corretto - se è SymbolInfoTick() o Close[0].

C'è anche SymbolInfoDouble(_Symbol,SYMBOL_BID).

 
Andrey Barinov:

C'è anche SymbolInfoDouble(_Symbol,SYMBOL_BID)

Sì, restituisce lo stesso di SymbolInfoTick().

 

Alcuni consigli sulle variabili globali. Risolto il problema del salvataggio dei tick da Market Watch.

Ogni nuovo tick aumenta di uno la variabile globale corrispondente. A occhio, Market Watch riceve circa 100 tick al secondo.

In totale, le variabili globali sono aggiornate ad una frequenza di 100 Hz. Mi sto chiedendo se influisce negativamente sull'SSD?

Sto scrivendo le zecche stesse ogni 1000 (~1 Gb per una settimana). Quindi, mi sta bene. Ma con globale - non hanno pensato prima, che sono scritti a SSD con ogni aggiornamento.

Ecco perché avevo questa domanda.

 
fxsaber:

Alcuni consigli sulle variabili globali. Risolto il problema del salvataggio dei tick da Market Watch.

Ogni nuovo tick aumenta di uno la variabile globale corrispondente. Ad occhio, Market Watch riceve circa 100 tick al secondo.

In totale, le variabili globali sono aggiornate ad un tasso di 100 Hz. Mi sto chiedendo se influisce negativamente sull'SSD?

Sto scrivendo le zecche stesse ogni 1000 (~1 Gb per una settimana). Quindi, mi sta bene. Ma con globale - non hanno pensato prima, che sono scritti a SSD con ogni aggiornamento.

Ecco perché avevo questa domanda.

Non vengono scritti su disco ad ogni aggiornamento

 
fxsaber:

Alcuni consigli sulle variabili globali. Risolto il problema del salvataggio dei tick da Market Watch.

Ogni nuovo tick aumenta di uno la variabile globale corrispondente. Ad occhio, Market Watch riceve circa 100 tick al secondo.

In totale, le variabili globali sono aggiornate ad un tasso di 100 Hz. Mi sto chiedendo se influisce negativamente sull'SSD?

Sto scrivendo le zecche stesse ogni 1000 (~1 Gb per una settimana). Quindi, mi sta bene. Ma con globale - non hanno pensato prima, che sono scritti a SSD con ogni aggiornamento.

Ecco perché è sorta questa domanda.

Penso che le variabili globali del terminale siano implementate tramite risorse con salvataggio automatico periodico su disco. Non credo che il salvataggio automatico avvenga più spesso di una volta ogni 3 secondi, molto probabilmente molto meno spesso, ed è anche possibile che solo quando si verifica un evento di deinit.

 

Non voglio cercare quello che ho letto nell'aiuto sulle variabili globali del terminale, ma sembra che vengano salvate quando il terminale viene chiuso - anche se potrei dimenticare, è passato molto tempo da quando l'ho letto

è più facile da controllare, in Windows Task Manager c'è un diagramma dell'uso del disco rigido


 
Igor Makanu:

Non voglio cercare quello che ho letto nell'aiuto sulle variabili globali del terminale, ma sembra che vengano salvate quando il terminale viene chiuso - anche se potrei dimenticare, è passato molto tempo da quando l'ho letto

è più facile da controllare, nel Task Manager di Windows c'è un grafico di utilizzo del disco rigido


Probabilmente nella nota a piè di pagina qui.

 
Grazie a tutti quelli che hanno risposto. La funzione di risciacquo ha immediatamente respinto qualsiasi interpretazione ambivalente.