Cosa aggiorna RefreshRates()

 
Volevo sapere esattamente quali dati e serie temporali aggiorna RefreshRates() e quando è vero?
 
Una funzione così segreta che gli sviluppatori non ne sono nemmeno a conoscenza)))
 

Non ho la pazienza di rispondere a queste domande.

RefreshRates

Осуществляет обновление данных в предопределенных переменных и массивах-таймсериях.


E cosa sono le variabili predefinite e gli array di serie temporali si possono trovare nella documentazione.

Предопределенные переменные - Справочник MQL4
Предопределенные переменные - Справочник MQL4
  • docs.mql4.com
Предопределенные переменные - Справочник MQL4
 
Alexey Viktorov:

Non ho la pazienza di rispondere a queste domande.


E potete leggere le variabili predefinite e gli array di serie temporali nella documentazione.

Cioè i dati della funzione iClose() non sono influenzati da RefreshRates() in alcun modo. Allora come possiamo fare in modo che la funzioneiClose() emetta informazioni aggiornate?

 
Mikhail Nazarenko:

Quindi i dati in iClose() non sono influenzati da RefreshRates(). Allora come posso fare in modo che la funzioneiClose() emetta informazioni aggiornate?

Quale barra èiClose()?

 
Alexey Viktorov:

iClose() quale barra?

Zero. Periodo di tempo arbitrario.

 
Mikhail Nazarenko:

Zero. Un lasso di tempo arbitrario.

Onestamente, sono sorpreso... e questo è dir poco. Pensavo che iClose() ottenesse i valori dal server del broker, ma no... RefreshRates(); aggiorna i valori ottenuti da iClose()

/********************Script program start function*******************/
void OnStart()
 {
  for(int i = 0; i < 10; i++)
   {
    Print(Bid, " *** ", iClose(_Symbol, PERIOD_CURRENT, 0));
    Sleep(1000);
    RefreshRates();// Без RefreshRates(); значения iClose(_Symbol, PERIOD_CURRENT, 0) не меняются…
                   // То, что без RefreshRates(); не меняются значения Bid, это понятно и нормально…
   }
 }/******************************************************************/

Ecco il risultato dell'esecuzione dello script

2021.02.15 11:39:35.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:34.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:33.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:32.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:31.559 00 EURUSD,M5: 1.2138 *** 1.2138
2021.02.15 11:39:30.559 00 EURUSD,M5: 1.21378 *** 1.21378
2021.02.15 11:39:29.559 00 EURUSD,M5: 1.21379 *** 1.21379
2021.02.15 11:39:28.559 00 EURUSD,M5: 1.21378 *** 1.21378
2021.02.15 11:39:27.559 00 EURUSD,M5: 1.21379 *** 1.21379
2021.02.15 11:39:26.559 00 EURUSD,M5: 1.21379 *** 1.21379

Bene, ok... terrò presente questa caratteristica e inserirò RefreshRates() se necessario;


ps; E iClose(_Symbol, PERIOD_CURRENT, 0) cambia in MT5.

 
Alexey Viktorov:

Onestamente, sono sorpreso... e questo è dir poco. Pensavo che iClose() ricevesse i valori dal server del broker, ma no... RefreshRates(); aggiorna i valori ricevuti da iClose()

Ecco il risultato dell'esecuzione dello script

Bene, OK... Personalmente terrò presente questa caratteristica e inserirò RefreshRates() quando necessario;

Se cambio il timeframe in un altro rispetto a quello attuale, i dati smettono di essere aggiornati in tempo anche con RefreshRates(). Quindi, iClose e altre funzioni fondamentali in MT4 producono un nonsenso irrilevante. Sono sicuro che l'80% delle informazioni non tiene conto di queste caratteristiche uniche di MT4. Come vivere?)))

 
Alexey Viktorov:

Francamente parlando, sono sorpreso... e questo è un eufemismo. Pensavo che iClose() ricevesse i valori dal server del broker, ma no... RefreshRates(); aggiorna i valori ricevuti da iClose()

Ecco il risultato dell'esecuzione dello script

Bene, ok... terrò presente questa caratteristica e inserirò RefreshRates() se necessario;


ps; E iClose(_Symbol, PERIOD_CURRENT, 0) cambia in MT5.

Sempre i valori iXXXXXXXX in quadruplo sono risultati corretti. Non si controlla il risultato della funzione. Quattro lo richiede anche (per quanto strano possa sembrare ad alcuni aderenti alla semplicità assoluta)
 
Qual è la soluzione? Altre stampelle? Tipo, tenere una cronologia dei tick e ricalcolare tutti i timeframe negli EA da soli. Questo è al di là del bene e del male)).
 
Mikhail Nazarenko:
Qual è la soluzione? Altre stampelle? Tipo, tenere una cronologia dei tick e ricalcolare tutti i timeframe negli EA da soli. Questo è al di là del bene e del male))).
No, non lo è. Cosa dice la guida della funzione riguardo al valore di ritorno?