Errori, bug, domande - pagina 760

 
Karlson:

Mi sembra che i bar dei vecchi TF raramente "spariscano".

Un'altra variante è quella di ottenere il tempo di questa barra simultaneamente attraverso CopyTime().

E la terza opzione (probabilmente la più semplice) usare CopyRates nella struttura in una volta sola.

Grazie... La questione è che lavoro con M1 e spesso vedo barre asincrone con lo stesso indice su diversi simboli. Anche il confronto delle date è un'opzione. Vedrò quale variante è migliore per la velocità di calcolo...
 
Alex5757000:
Grazie... Il fatto è che lavoro su M1 e spesso osservo barre asincrone con lo stesso indice su strumenti diversi. Anche il confronto delle date è un'opzione. Guarderò quale variante è più ottimale in termini di velocità di calcolo.
Qui c'è qualcosa sulla sincronizzazione.
 
Lizar:
Qui c'è qualcosa sulla sincronizzazione.

Grazie! Articolo utile... Cioè, per ogni barra del simbolo corrente usando la funzione CopyTime otteniamo il tempo e poi copiamo i dati di un altro simbolo da questo tempo.

Ma invece di eventi personalizzati userei la funzione OnTimer, perché è molto ingombrante appendere un "indicatore-agente" su ogni simbolo...

 
Alex5757000:

Grazie! Articolo utile... Cioè, per ogni barra del simbolo corrente usando la funzione CopyTime per ottenere il tempo, e poi copiare i dati di un altro simbolo da questo tempo.

Si può fare in questo modo, se si è soddisfatti della sincronizzazione relativamente al simbolo corrente.

Ma invece di eventi personalizzati userei la funzione OnTimer, perché è troppo ingombrante appendere un "indicatore-agente" su ogni simbolo...

Usa OnTimer, tutto dipende dalle tue esigenze di qualità della sincronizzazione.
 
Новая версия MetaTrader 4 Client Terminal build 432 - MQL4 форум
  • www.mql5.com
Новая версия MetaTrader 4 Client Terminal build 432 - MQL4 форум
 

Probabilmente la più grande delusione per me è il comportamento delle funzioni SeriesInfoInteger, CopyTime, CopyOpen e simili.

Si scopre che anche nei fine settimana, quando non si ricevono nuove quotazioni, e i dati esistenti vengono aggiornati,

queste funzioni possono dare risultati diversi con gli stessi parametri. C'è un problema con il controllo dei dati delle serie temporali già presenti nel terminale.

È stato notato che il problema si verifica quando si lavora in modalità multicurrency dopo aver ricompilato gli indicatori, così come quando si cambia timeframes e si riavvia il terminale.

CopyOpen() non produce un errore se cerchiamo di copiare dati da un pezzo di storia non esistente, specificando la data del suo inizio. La funzione produce il valore di quotazione di una barra sconosciuta.

Questo comportamento della funzione è stato rilevato nella coppia USDHKD, per la quale non ci sono dati negli ultimi mesi sul server MQ.

Grazie a MQ per le nuove trappole!

 

void OnStart()

 {

   Alert("start");

   string arr1[178365];

   char arr2[178365];

   arr1[100002]="hello";

   Alert(arr1[100002]);

   Alert("finish");

  }

In fase di compilazione dà avvisiche la dimensione delle variabili locali è troppo grande (più di 512kb) 55.mq5 27 6

On execution2012.07.01 14:37:26 55 (GBPUSD,MN1) stack overflow

Non posso usare 2 piccoli array? È davvero così tanto?

Io uso Metatrader non per il trading, lo uso per altri calcoli.

 

Stasikusssss:

...

Io proverei questo: mettete gli array in una classe o in una struttura (non ricordo se potete allocare memoria dinamica per una struttura), allocate la memoria per la classe tramite new;

Oppure mettete la definizione degli array in una funzione separata, e giocate con la #proprietà stacksize https://www.mql5.com/ru/docs/basis/preprosessor/compilation. Se è la seconda variante, gli array non possono essere statici.

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Riguardo alle citazioni inesistenti: per favore, fornisci un esempio riproducibile nel tuo codice. Ci deve essere un errore nel vostro codice.
 
È irragionevole fare array enormi nello stack (oltre 512 Kb), come il compilatore ci ha avvertito subito.

Se sono necessari array di grandi dimensioni, dovrebbero essere resi dinamici con un'allocazione di memoria esplicita.
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5