Mercato chiuso - pagina 8

 
fxsaber:

Lo script nel commento del grafico mostra questo bug

C'è un'applicazione per questo problema nella SD? Non ne avete più di un centinaio non ancora chiusi?
 

Vasiliy Pushkaryov:
В СД есть заявка по этой проблеме?

Squadra di supporto2018.01.24 07:13

Bisogna tenere a mente che Windows (anche Unix) non è mai stato un sistema operativo in tempo reale. Ciò significa che la misurazione del tempo in un tale sistema non è una priorità e permette delle imprecisioni.

In secondo luogo, il timer del sistema è basato sui messaggi e sulle loro code. In un'applicazione winds tutti i messaggi vengono elaborati nel thread principale. Sono trattati in modo sequenziale. Con tutte le sue implicazioni.

Nel vostro caso dovreste scegliere un campione di timer critico. Se scegliete il più piccolo - 1 millisecondo, allora siate pronti a sprecare 1000 volte di più nella generazione dei messaggi, nel recupero dei messaggi e nell'elaborazione dei messaggi che se scegliete un campione di 1000 msec. Quindi, cercate un compromesso ragionevole.

Non ne avete più di un centinaio ancora aperti?

Sì.

 

fxsaber:

Ho provato a sincronizzarmi in questo modo

Non funziona. E ho cattivi pensieri verso il ritardo di MT5. Guardate voi stessi come si comporterà il vostro script con questi cambiamenti.

Provato con il tuo codice, ancora lag. Aspettiamo che più persone o dipendenti più influenti dell'azienda vi prestino attenzione, dato che SD scrive che i ritardi sono la norma.


 
Vasiliy Pushkaryov:

Ho provato con il tuo codice, ancora in ritardo. Aspetteremo che più persone o dipendenti più influenti dell'azienda prestino attenzione a questo, dato che la SD scrive che i ritardi sono la norma.

Beh, sembra logico, nel Market Watch il tempo dell'ultimo tick su qualsiasi simbolo, e nella finestra del simbolo - il tempo del tick sul simbolo. Ecco perché c'è disaccordo, le zecche non arrivano nello stesso momento

 
Vitaly Muzichenko:

Beh, sembra avere senso, nella panoramica del mercato il tempo dell'ultimo tick per qualsiasi simbolo, e nella finestra del simbolo - il tempo del tick per il simbolo. Ecco perché c'è disaccordo, le zecche non arrivano nello stesso momento

TimeCurrent - vedi Aiuto.

 
fxsaber:

TimeCurrent - vedi Aiuto.

Bene, proprio così: l'ultima ora del server. Nessun tick - nessun tempo, ma c'è sempre un tick nella panoramica del mercato per qualche coppia, quindi il tempo non corrisponde al tempo sul simbolo, dove il tick era "molto tempo fa".

 
Vitaly Muzichenko:

Proprio così: l'ultima ora del server. Nessun tick - nessun tempo, ma c'è sempre un tick nella revisione del mercato per qualche coppia, quindi il tempo non corrisponde al tempo sul simbolo, dove il tick era "molto tempo fa".

TimeCurrent produce gli stessi valori per qualsiasi MQL-prog in qualsiasi momento.

 
Vitaly Muzichenko:

Proprio così: l'ultima ora del server. Nessun tick - nessun tempo, ma c'è sempre un tick nella panoramica del mercato per qualche coppia, quindi il tempo non corrisponde al tempo sul simbolo dove il tick era "molto tempo fa"

Mi sono ricordato anche di questo. Ma il riferimento lì aggiunto:

"In altri casi (chiamata nei gestori OnInit(), OnDeinit(), OnTimer() e così via) questo è il tempo di arrivo dell'ultima quotazione per qualsiasi simbolo disponibile nella finestra Market Watch, lo stesso tempo che viene mostrato nel titolo di questa finestra".

Nel codice è OnTimer con un intervallo di 0,5 secondi. Come potete vedere nello screenshot qui sopra, posso facilmente catturare manualmente su PrintScreen quando il tempo mostrato nel titolo della finestra non corrisponde a TimeCurrent().

 
Vasiliy Pushkaryov:

Mi sono ricordato anche di questo. Ma lì l'aiuto ha aggiunto:

"In altri casi (chiamata nei gestori OnInit(), OnDeinit(), OnTimer() e così via) questo è il tempo di arrivo dell'ultima quotazione di qualsiasi simbolo disponibile nella finestra Market Watch, lo stesso tempo che viene mostrato nel titolo di questa finestra".

L'aiuto inizialmente ha mentito:

Nel gestoreOnTick(), questa funzione restituirà il tempo di arrivo del tick gestito

Questo, ovviamente, non è vero. La sceneggiatura, per essere sicuri
void OnTick()
{
  Print(TimeCurrent());
  
  Sleep(10000);

  Print(TimeCurrent());  
}
 
fxsaber:

Il certificato ha inizialmente mentito:

Certamente non lo era. Uno script per assicurarsi
Non è del tutto chiaro cosa c'è di sbagliato qui.
Motivazione: