Errori, bug, domande - pagina 454

 
Interesting:
Mi sembra che dovreste tradurre ogni elemento dell'array individualmente.

Vorrei un aiuto, non uno sproloquio. Lasciami chiarire, ho provato a tradurre usando CharArrayToString con CP_UTF16, ma non sembra essere supportato. Forse ho bisogno di un'altra pagina di codice?

Domanda agli sviluppatori - è scritto nell'aiuto che le pagine che non sono nelle costanti standard possono essere aggiunte manualmente. Sono tutti supportati o no?

 
TheXpert:

Vorrei un aiuto, non uno sproloquio. Fammi capire bene, ho provato a usare CharArrayToString da CP_UTF16, ma ho la sensazione che non sia supportato. Forse ho bisogno di un'altra pagina di codice?

Domanda agli sviluppatori - nell'aiuto è scritto che le pagine che non sono nelle costanti standard possono essere aggiunte manualmente. Sono tutti supportati o no?

Ho frainteso la domanda. Se ho capito bene la documentazione per CP_UTF16 bisogna specificare il codice numerico richiesto (resta da vedere quale).

Beh, questa è probabilmente una domanda per gli sviluppatori.

 
Oltre alla domanda - https://www.mql5.com/ru/forum/1111/page455#comment_80246 - alla quale vorrei ancora una risposta, specificherò la situazione. Ho un indicatore multicurrency, lo sto testando su MetaQuotes e Alpari. Lo uso per Alpari ma con MetaQuotes restituisce spesso BarsCalculated per diversi simboli e in particolare l'errore 4806 o solo 0 barre contate. Per favore, indicatemi dove posso leggere di più su quali potrebbero essere le cause del 4806 e come risolverle. Sto usando il codice metaquote per la sincronizzazione dei dati - funzione CheckLoadHistory dalla pagina https://www.mql5.com/ru/docs/series/timeseries_access. Gli errori di BarsCalculated avvengono dopo che questa funzione si è azzerata (cioè i dati per il calcolo dovrebbero sembrare a posto). Ci si può fidare del tutto o è necessario qualcos'altro? Per essere sicuri, vorrei chiarire che l'indicatore utilizza barre standard per il calcolo ed è la loro prontezza che viene controllata chiamando BarsCalculated.
 
marketeer:
Oltre alla domanda - https://www.mql5.com/ru/forum/1111/page455#comment_80246 - alla quale vorrei ancora una risposta, specificherò la situazione. Ho un indicatore multicurrency, lo sto testando su MetaQuotes e Alpari. Lo uso per Alpari ma con MetaQuotes restituisce spesso BarsCalculated per diversi simboli e in particolare l'errore 4806 o solo 0 barre contate. Per favore, indicatemi dove posso leggere di più su quali potrebbero essere le cause del 4806 e come risolverlo. Sto usando il codice metaquote per la sincronizzazione dei dati - funzione CheckLoadHistory dalla pagina https://www.mql5.com/ru/docs/series/timeseries_access. Gli errori di BarsCalculated si verificano dopo che questa funzione si è azzerata (cioè i dati per il calcolo dovrebbero sembrare a posto). Ci si può fidare del tutto o è necessario qualcos'altro? Per essere sicuri, vorrei chiarire che l'indicatore utilizza le maschere standard per il calcolo ed è la loro prontezza che viene controllata chiamando BarsCalculated.

Se la risposta non è da BarsCalculated, i dati vengono sincronizzati dopo una frazione di secondo di intervallo. Catturato al momento della sincronizzazione, BarsCalculate=0.
 
Swan:
Se il refresh non viene da Sami, i dati si sincronizzano dopo un tempo del cazzo. Catturato in sincronia, BarsCalculate=0.

Grazie per l'informazione, anche se posso dire a "se stessi" che non sono molto contento di tale comportamento - impone una significativa incertezza nella funzionalità del software. Per esempio, già più di un'ora fa ho appeso un indicatore, in cui ho indicato un paio di nuovi ticker - nella revisione del mercato sono - se il riferimento alle funzioni di cui sopra avrebbe dovuto avviare il download e il conteggio, allora tutto avrebbe dovuto essere completato molto tempo fa, ma non è stato così. Almeno sarebbe auspicabile vedere nel diario di sistema ogni starnuto del terminale sul caricamento e altre azioni "sotterranee", altrimenti non è chiaro per quale motivo si "spegne" - l'ultima voce nell'"Expert" con l'errore 4806, ma nel sistema - dice che il terminale è fuori sincrono. Considerando che non ci sono zecche nel fine settimana, ho cambiato le impostazioni diverse volte, ma ancora nessun dato.

Per esempio, ho preso RTS-9.11, ma la funzione refresh di MetaQuotes, menzionata sopra, restituisce regolarmente Load failed.

 
Un'altra domanda. In quarto potreste scrivere array multidimensionale func(int array[][]) come argomento della funzione. Nella quinta il compilatore genera un errore di valore di indice non valido - richiede che la dimensionalità sia specificata. Ho scritto func(int &array[][3]) - nessun errore, ma non è una soluzione. Come scrivere funzioni allora? Per definizione, il loro senso è quello di allocare un frammento di codice astratto applicabile a diversi dati, diversi array.
 
marketeer:
Un'altra domanda. In Quaternario potreste scrivere un array multidimensionale func(int array[][]) come argomento della funzione. Nella quinta il compilatore genera un errore di valore di indice non valido - richiede che la dimensione sia specificata. Ho scritto func(int &array[][3]) - nessun errore, ma non è una soluzione. Come scrivere funzioni allora? Il loro senso è, per definizione, quello di allocare un frammento di codice astratto applicabile a diversi dati, diversi array.

Questo è quello che faccio:

class cArray2
  {
   double            _Data[];
   int               _ColumnsCount;
   int               _RowsCount;
   ...
   ...
  }

Passo oggetti di questa classe come argomenti.

In altre parole, uso un array unidimensionale come archivio di dati di qualsiasi dimensione, mentre ricalcolo gli indici "multidimensionali" in quelli "unidimensionali" (e viceversa).

Funziona con una velocità abbastanza accettabile.

Puoi capire le meta-citazioni. Se non introducete il vincolo "solo una dimensione è indefinita", allora non potete generare codice ad alta velocità per accedere a un elemento dell'array in fase di compilazione.

 
marketeer:

Grazie per l'informazione, anche se posso dire a "se stessi" che non sono molto contento di tale comportamento - impone una significativa incertezza nell'operatività del software. Per esempio, già più di un'ora fa ho appeso un indicatore, in cui ho indicato un paio di nuovi ticker - nella revisione del mercato sono - se il riferimento alle funzioni di cui sopra avrebbe dovuto avviare il download e il conteggio, allora tutto dovrebbe essere finito da tempo, ma non è così. Almeno sarebbe auspicabile vedere nel diario di sistema ogni starnuto del terminale sul caricamento e altre azioni "sotterranee", altrimenti non è chiaro per quale motivo si "spegne" - l'ultima voce nell'"Expert" con l'errore 4806, ma nel sistema - dice che il terminale è fuori sincrono. Considerando che non ci sono zecche nel fine settimana, ho cambiato le impostazioni diverse volte, ma ancora nessun dato.

Per esempio, ho preso RTS-9.11, ma la funzione di aggiornamento di MetaQuotes, menzionata al link, restituisce regolarmente Load failed.

Riferimento:

L'accesso ai dati degli indicatori e delle serie temporali è implementato indipendentemente dal fatto che i dati richiesti siano pronti (il cosiddetto accesso asincrono ). Questo è fondamentale per il calcolo degli indicatori personalizzati, quindi in assenza dei dati richiesti le funzioni comeCopy...() restituiscono immediatamente un errore.

Non ci sono tick nel fine settimana, l'indicatore viene avviato e viene restituitoun errore...

imho, c'è solo una soluzione, cioè eseguire un Expert Advisor addizionale, che carichi la storia richiesta...

Cioè se i dati sono disponibili per l'Expert Advisor, saranno disponibili per l'indicatore. Non ho controllato, la soluzione sembra storta.


Ripeterò la mia domanda:

Aiuto:

La funzione Sleep() non può essere chiamata dagliindicatori personalizzati perché gli indicatori sono eseguiti nel thread dell'interfaccia e non devono rallentarlo.

Non si può assolutamente, o se proprio si vuole, si può, ma con attenzione? :)


C'è un problema con l'accesso ai dati di un altro simbolo dall'indicatore.

se non ci sono zecche)
cioè non c'è modo per l'indicatore di recuperare i dati sul fine settimana, non il suo TF, non il suo simbolo...
 
Swan:
cioè non c'è modo che l'indicatore possa ottenere i suoi dati nel fine settimana, non il suo TF, non il suo simbolo...
Secondo me, questi sono tutti bug. I tick sono tick, ma nulla impedisce (al terminale) di caricare dati e calcolare indici in assenza di tick. Più interessante è che lo stesso codice funziona in modo diverso su diversi server demo. Per esempio, su Alpari sia l'oro che l'argento vengono tirati su, e l'indice viene ricalcolato. Quindi il problema sembra essere più ampio.
 
MetaDriver:

I metacvots sono comprensibili. A meno che il vincolo "solo una dimensione è indefinita" sia imposto, allora non si può generare codice ad alta velocità per accedere a un elemento dell'array a tempo di compilazione.

Beh, non riesco a capirlo ;-). Molto tempo fa ho suggerito che la quinta doveva essere resa massimamente compatibile con la quarta (per quanto riguarda la sintassi e il supporto delle funzioni API precedenti, in particolare). Naturalmente, si potrebbero aggiungere nuove caratteristiche, come la generazione veloce del codice, ma questo potrebbe essere fatto per nuovi costrutti sintattici (limitazioni) - per esempio, con questi parametri-array: chi vuole l'ottimizzazione della velocità - specificare le dimensioni, e chi vuole portare rapidamente e facilmente il vecchio codice - lasciarlo com'è, e al diavolo se sarebbe più lento. Ci sarebbe un compromesso tra velocità e convenienza, oppure si potrebbe offrire l'assembler come mql5. ;-).
Motivazione: