CopyTicksRange () non funziona correttamente in MQL5. a - pagina 2

 
Alexey Viktorov #:

Ho evidenziato le parole chiave.

NON richiedere zecche che non esistono già per definizione. Se richiedete i tick anche un solo millisecondo oltre il tempo corrente in millisecondi, otterrete proprio g.........y nella forma dei problemi che avete elencato.


Quindi, secondo la tua comprensione, dovrei controllare in primo luogo, se questi tick sono disponibili? per esempio come? posso anche controllare, se l'intervallo richiesto è in vacanza? deve essere fatto dalla funzione CopyTicksRange() . Il mio compito è quello di dargli i parametri di input secondo la documentazione. E può controllarli, e se c'è qualcosa, restituire un errore, ma non qualche schifezza nella risposta.

Puoi pensare a un modo per controllare se una barra esistente contiene tick dal secondo al terzo secondo, per evitare che questa funzione vada in crash?


Sopra ho scritto un esempio di codice dove c'è tutto, ma la risposta è ancora sbagliata.

 
RusPro #:


Quindi, secondo la tua comprensione, dovrei prima controllare se questi tick sono disponibili? Come, per esempio? Dovrei anche controllare se l'intervallo richiesto è nel giorno di riposo? Questo dovrebbe essere fatto dalla funzione CopyTicksRange(). Il mio compito è quello di dargli i parametri di input secondo la documentazione. E può controllarli, e se succede qualcosa, restituirà un errore, ma non qualche schifezza in risposta.


Sopra ho scritto un esempio di codice dove tutto è presente, ma la risposta è ancora sbagliata.

SymbolInfoTick

Restituisce i prezzi correnti per un simbolo specificato in una variabile di tipo MqlTick.

bool  SymbolInfoTick(
   string    symbol,     // символ
   MqlTick&  tick        // ссылка на структуру
   );
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью
  };

Non c'è bisogno di interrogare i tick oltre time_msc

 

1)Nel mio esempio di cui sopra l'intervallo richiesto esiste.

2) ma cosa impedisce di fare questo controllo inCopyTicksRange stesso e rifletterlo anche nella documentazione? perché gli sviluppatori mi chiedono di fare stampelle invece di semplici correzioni dei loro errori?


Parlando diSymbolInfoTick - funziona anche male, almeno per i caratterisintetici:)

Se ricordo bene, restituisce sempre l'ora del primissimo tick invece dell'ultimo

 
RusPro SymbolInfoTick - funziona anche male, almeno per i caratterisintetici:)

Per quanto mi ricordi, restituisce sempre l'ora del primissimo tick invece dell'ultimo.

Non prendo più parte a questo dialogo.

 
Alexey Viktorov #:

Non partecipo più a questo dialogo.

Lei non è nemmeno uno sviluppatore di Metatrader, perché ha assunto il ruolo di loro difensore?

In sostanza i punti sollevati sono corretti, la funzione dovrebbe funzionare correttamente.
 
Sergey Gridnev #:
Lei non è nemmeno uno sviluppatore di Metatrader, perché ha assunto il ruolo di loro difensore?

Essenzialmente i punti sollevati sono corretti, la funzione dovrebbe funzionare correttamente.

Una linea di ritorno al dialogo:

La funzione dovrebbe funzionare nel modo in cui gli sviluppatori l'hanno pensata, non nel modo in cui gli utenti vogliono che funzioni. Uno vuole una cosa, uno ne vuole un'altra, e uno vuole delle sciocchezze.

Questa è la ragione per cui gli sviluppatori non ti rispondono. E io non sono un sostenitore, sto cercando di portarvi una semplice verità, non gravare gli altri se non potete farlo da soli. Tu, invece, hai acceso il "non......... cedere..." e stai inventando miti sulle stampelle.

Questo è davvero TUTTO... gli sviluppatori non ti risponderanno... non farti illusioni.

 
RusPro #:

Ed ecco il bug:

cioè la funzione usata da migliaia di programmatori, mi ha personalmente restituito tutti i tick dall'inizio della barra corrente, ma non inclusi nell'intervallo richiesto

Questo è davvero un bug. Fornire i dati completi per la riproduzione. Se confermato, gli sviluppatori faranno un fix nelle prossime build.

Forse il problema è nell'array statico MqlTick.
 

Alexey Viktorov #:

Non c'è bisogno di richiedere ticks oltre a time_msc

L'ultimo tick storico può essere più recente di SymbolInfoTick (chiamato dopo CopyTicks). Mi imbatto in questo ogni giorno.

Può verificarsi la situazione opposta. Flussi non sincronizzati.
 
fxsaber #:

Questo è davvero un errore. Fornire dati completi per il replay. Se confermato, gli sviluppatori faranno una correzione nelle prossime build.

Forse, il problema è nell'array statico MqlTick.

Ok, cercherò di ridurre il codice al minimo e di postarlo. Anche CopyTicks contiene tali glitch, ma lì si sono verificati in modo meno prevedibile, il che mi ha portato alle stampelle solo per CopyTicksRange. Probabilmente è un errore di qualche funzione interna comune.

Vi farò un esempio anche per SymbolInfoTick.

 
RusPro #:

funzione usata da migliaia di programmatori

Unità.

Motivazione: