Il problema del trasferimento da MT4 a MT5. O, più precisamente, l'impossibilità di eseguire alcuni algoritmi in MT5 senza 'err. - pagina 5

 
Andrey Khatimlianskii:

Il suggerimento era di farlo con un timer ogni minuto e mezzo. Non prima di ogni tick, e certamente non su un evento del grafico.

L'accesso alle serie temporali in MT5 non è infatti ideale. Ma se devi risolvere un problema e non trovare una scusa, allora è possibile.

Nessuno sta cercando una scusa. Non conosci il livello di difficoltà del compito. Ecco perché si parla così facilmente di una scusa.

È stato suggerito di aggiornare con un timer ogni 2 minuti. Questo è quello che ho fatto.

Ma... Questo non è sufficiente. Anche dopo questo aggiornamento del timer, quando si creava un evento su un grafico tramite la GUI succedeva spesso che chiamando iBarShift si otteneva -1 . Ciò causa di conseguenza un'uscita fuori dai confini dell'array o qualche altro errore. Così ho provato a fare un controllo di accessibilità sulla serie temporale prima di entrare in OnChartEvent. Per una migliore comprensione, dirò, abbiamo bisogno di controllare l'accesso a tutte le 21 serie temporali. Se almeno una serie temporale non è accessibile, è quasi il 100% probabile che i grafici siano fatti con qualche tipo di errore.

Il programma è complesso, con circa 50.000 linee. Su un tale volume ci sono molti accessi in serie temporali diverse.

I lag si verificano sempre (nella variante MT5). Funziona come un orologio in MT4.

MT5 non è interessante per me. Non lo uso nel trading. Io uso solo MT4. Ho iniziato a tradurre il programma solo su richiesta degli utenti. Di fronte a un tale dolore al collo ho deciso che è meglio fare ciò che è interessante.

Durante i 14 anni di sviluppo del programma sono apparse alcune idee interessanti. Ora sto implementando queste idee.

 
Eugeni Neumoin:

È stato suggerito di aggiornarlo con un timer ogni 2 minuti. Questo è quello che ho fatto.

Ma. Questo non è sufficiente. Anche dopo questo aggiornamento del timer, quando si crea un evento su un grafico tramite la GUI, spesso si scopre che chiamando iBarShift si ottiene -1 .

L'esatto diiBarShift non è vero per caso?

Anch'io ho avuto difficoltà con la sincronizzazione, anche dopo gli aggiornamenti a tempo. Ma non sono riuscito a riprodurlo ironicamente, il problema è fluttuante.


Eugeni Neumoin:

MT5 non è interessante per me. Non lo uso nel trading. Solo MT4. Ho iniziato a tradurre il programma solo su richiesta degli utenti. Quando mi sono trovato di fronte a una tale spina nel fianco, ho deciso che è meglio lavorare con le cose che sono interessanti.

Durante i 14 anni di sviluppo del programma sono apparse alcune idee interessanti. Ora sto implementando queste idee.

Non sto sostenendo MT5. Ho notato subito che non hai un gran desiderio di capirlo).

Naturalmente, è meglio fare ciò che è interessante!

 
Eugeni Neumoin:

Nessuno sta cercando una scusa. Non conosci il livello di difficoltà del compito. Ecco perché si parla di scuse così facilmente.

Il suggerimento era di aggiornare con un timer ogni 2 minuti. Questo è quello che ho fatto.

Ma... Questo non è sufficiente. Anche dopo questo aggiornamento del timer, quando si creava un evento su un grafico tramite la GUI succedeva spesso che chiamando iBarShift si otteneva -1 . Ciò causa di conseguenza un'uscita fuori dai confini dell'array o qualche altro errore. Così ho provato a fare un controllo di accessibilità sulla serie temporale prima di entrare in OnChartEvent. Per una migliore comprensione, dirò, abbiamo bisogno di controllare l'accesso a tutte le 21 serie temporali. Se almeno una serie temporale non è accessibile, è quasi il 100% probabile che i grafici siano fatti con qualche tipo di errore.

Il programma è complesso, con circa 50.000 linee. Su un tale volume ci sono molti accessi in serie temporali diverse.

I lag si verificano sempre (nella variante MT5). Funziona come un orologio in MT4.

MT5 non è interessante per me. Non lo uso nel trading. Io uso solo MT4. Ho iniziato a tradurre il programma solo su richiesta degli utenti. Di fronte a un tale dolore al collo ho deciso che è meglio fare ciò che è interessante.

Durante i 14 anni di sviluppo del programma sono apparse alcune idee interessanti. Ora sto implementando queste idee.

Metti in cache la serie temporale.
 
Artyom Trishkin:
Metti in cache la serie temporale.

Cosa vuoi dire? Creare manualmente le proprie cache?

 
Andrey Khatimlianskii:

Cosa vuoi dire? Creare manualmente le proprie cache?

Una volta che si contano tutte le serie temporali, e poi solo aggiungere di più. Questo può essere fatto in una finestra.
Sì, nei loro array. Puoi farlo con SB. La classe delle serie temporali è la vostra.
 
Andrey Khatimlianskii:

Il valore esatto di iBarShift è vero?

vero. Ho bisogno di sapere il numero esatto della barra.

 
Artyom Trishkin:
Conta tutte le serie temporali una volta, e poi aggiungine solo altre. Puoi farlo nella finestra.

Quindi suggerisci di non usare i buffer, ma di lavorare con i tuoi array?

A cosa servono allora i buffer?

Così proponi di fare la tua stampella, invece dei buffer :(

E invece di iTime, iLow, ecc. fate le vostre funzioni... Riscrive tutto a modo suo, bypassando le funzioni che non funzionano da MT5...

Questo è drastico. Ma lasciate che gli appassionati lo facciano. Mi faccio da parte. Non guarderò nemmeno il processo.

 
Eugeni Neumoin:

Quindi suggerisci di non usare i buffer, ma di lavorare con i tuoi array?

Date un'occhiata al SB. Lì c'è un lavoro con indicatori. Se non volete fare il vostro. In generale, dovete creare una classe una volta e poi usarla per qualsiasi messaggio di testo. E i dati saranno sempre disponibili. Solo che dovrete aggiungerne di nuovi indiscriminatamente.
 
Eugeni Neumoin:

Quindi suggerisci di non usare i buffer, ma di lavorare con i tuoi array?

A cosa servono allora i buffer?

Quindi proponi di fare la tua stampella, invece dei buffer :(

E invece di iTime, iLow, ecc. fate le vostre funzioni... Riscrivono tutto a modo loro, bypassando le funzioni che non funzionano da MT5...

Lì tutto funziona. Ma a volte l'accesso è negato. Forse a causa degli aggiornamenti delle serie temporali - non lo so. Se si rifiuta, dovete ripetere la richiesta, perché la prima richiesta attiva lo scambio di dati.
 
Eugeni Neumoin:

vero. Ho bisogno di sapere il numero esatto della barra.

Allora c'è un errore di logica, forse. Potrebbe non esserci un bar.

Motivazione: