Errori, bug, domande - pagina 2490

 
Slava:

Ha letto attentamente la mia citazione nel post qui sotto?

Questo comportamento è sempre stato presente dall'introduzione dell'impostazione " numero massimo di barre per grafico", cioè dall'inizio di MT4. E abbiamo spiegato molte volte in questi 15 anni perché non riduciamo ogni volta il numero di barre in base a quell'impostazione. E ora non tagliamo ogni volta.

Nessuno legge la documentazione. Ma è un paradosso. Ci chiedono ancora di scrivere qualcos'altro nella documentazione che non leggono.

Slava, non ho lamentele. Ho letto attentamente e non solo la tua citazione e questa

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

Slava, 2019.06.29 18:25

rates_total mostra sempre il numero di barre disponibili sul grafico corrente.

Non capisco il significato della sua affermazione

e questo

Forum sul trading, sistemi di trading automatico e test di strategia

Bug, bug, domande

Slava, 2019.06.29 18:42

Non ho il terminale client a portata di mano in questo momento per citare la guida. Da dispositivo mobile in due clichttps://www.metatrader5.com/ru/terminal/help/startworking/settings#max_bars

Paragrafo appositamente evidenziato.

Per un calcolo più economico, gli indicatori possono avere più barre disponibili di quanto specificato nel parametro "Max bars in window". Man mano che arrivano nuove barre, quelle più vecchie non vengono immediatamente rimosse dalla cache dei dati. Questo permette di non ricalcolare completamente l'indicatore ad ogni nuova barra, ma solo di calcolare ulteriormente i suoi valori per le nuove barre.

Ho letto la documentazione più di una volta. Ma ho fatto delle foto sul terminale avviato di recente. C'erano solo 5000 barre nella finestra, quelle nuove non hanno ancora avuto il tempo di essere caricate.

Naturalmente, non capisco qualcosa, è per questo che chiedo di nuovo e cerco di capire. Credo che non ci saranno cambiamenti. Per favore, non prendete le mie dichiarazioni come una lamentela.

 
Igor Makanu:

Il riferimento non è corretto, è fuorviante, ho scrittohttps://www.mql5.com/ru/forum/304239/page57#comment_11519307

In MQL5 i buffer in generale funzionano come i soliti array, in MT4 il terminale trattava i buffer - li resettava a EMPTY_VALUE, poi ... Non ricordo dove ho scritto della differenza tra gli indicatori MT5 e MT4

Devi cancellare i buffer - li cancelli come un normale array, il terminale imposta solo la dimensione dell'array-buffer stesso.

Igor, puoi spiegare in russo semplice: se ogni buco del buffer dell'indicatore sarà riempito con alcuni valori, che sostituiranno la spazzatura contenuta lì, qual è lo scopo di forzare questi buchi prima di riempirli con i valori giusti? Per la perdita di velocità di esecuzione?

 
Alexey Viktorov:

Igor, puoi spiegare in un semplice russo: se ogni buco del buffer dell'indicatore sarà riempito con alcuni valori che sostituiranno la spazzatura ivi contenuta, qual è lo scopo di pulire forzatamente questi buchi prima di riempirli con i valori necessari? Per la perdita di velocità di esecuzione?

Il riempimento dei "buchi" è critico solo in un indicatore con "frecce", in MT4 durante l'inizializzazione dell'indicatore questi "buchi" saranno riempiti automaticamente dal valore EMPTY_VALUE

in MT5 deve essere fatto dal programmatore

o in MT5 il programmatore dovrebbe riempire i buffer degli indicatori tramite il costrutto if() else

cioè questo funzionerà in MT4:

if(...) Buf[i] = high[i];

in MT5 si deve scrivere:

if(...) Buf[i] = high[i]; else Buf[i] = EMPTY_VALUE;

o in MT5 è necessario cancellare i buffer dell'indicatore, altrimenti l'indicatore disegnerà "spazzatura" dall'array, che è legato al buffer dell'indicatore ...., quando si passa al TF. è una questione di gusto come scrivere e cosa prendere in considerazione


SZY: velocità? Beh, misurate la velocità, nel 99% dei casi le funzioni integrate sono più veloci, ma non c'è differenza di prestazioni tra riempire ogni barra nel ciclo EMPTY_VALUE e una inizializzazione con ArrayInitialize(Buf,EMPTY_VALUE)

 
Igor Makanu:

Il riempimento dei "buchi" è critico solo in un indicatore con "frecce", in MT4 durante l'inizializzazione dell'indicatore questi "buchi" saranno riempiti automaticamente dal valore EMPTY_VALUE

in MT5 deve essere fatto dal programmatore

o in MT5 il programmatore dovrebbe riempire i buffer degli indicatori tramite il costrutto if() else

cioè questo funzionerà in MT4:

in MT5 si deve scrivere:

o in MT5 è necessario cancellare i buffer dell'indicatore, altrimenti l'indicatore disegnerà "spazzatura" dall'array, che è legato al buffer dell'indicatore ...., quando si passa al TF. è una questione di gusto come scrivere e cosa prendere in considerazione


Bene, misurate la velocità, nel 99% dei casi le funzioni incorporate girano più velocemente, ma non c'è differenza di prestazioni tra riempire ogni barra nel ciclo EMPTY_VALUE e inizializzarla una volta con ArrayInitialize(Buf,EMPTY_VALUE).

Tutto questo è solo un assillo. È così che era, è così che voglio, è difficile cambiare le mie abitudini e altre ragioni.

Il costrutto if else può essere facilmente sostituito con

Buf[i] = условие ? high[i] : EMPTY_VALUE;
 
Alexey Viktorov:

È solo un assillo. È così che è stato, è così che voglio, è difficile cambiare le mie abitudini e altre ragioni.

Il costrutto if else è facilmente sostituibile con

Se siete pignoli, i consigli per aumentare le prestazioni in C++ o C# raccomandano solo di non usare "l'operatore condizionale ? Credo di aver letto un articolo su Habra una volta (non l'ho provato, scrivo il più conveniente possibile)

;)

 
Igor Makanu:

Se devo essere pignolo, il consiglio su come migliorare le prestazioni in C++ o C# è di non usare "l'operatore condizionale ? Credo di aver letto un articolo su Habra una volta (non l'ho testato, io stesso scrivo il più convenientemente possibile)

;)

Il compilatore non è un idiota e ottimizza meglio di un guru su Habra.
 
Artyom Trishkin:
Beh, il compilatore qui non è un idiota, e ottimizza meglio dei "guru" su hubr

In queste occasioni ripeto sempre: "Il sole sorge al mattino e tramonta alla sera..." - Vedi un po' di logica qui? - Sì, è logico, ma ci sono informazioni nella mia frase? - Non c'è.

Non lo testerò? : , compilatore macchina.... Hubr, bene...

 
Igor Makanu:

Non farò il test? :

Testato MT5:

2019.06.30 13:37:04.230 tst (EURUSD,H1) Testing if() cycles=9999999999999999 time=10859 ms

2019.06.30 13:37:15.116 tst (EURUSD,H1) Testing ? : cicli=99999999999999 tempo=10891 ms

2019.06.30 13:38:05.348 tst (EURUSD,H1) Testing if() cycles=9999999999999999 time=10843 ms

2019.06.30 13:38:16.190 tst (EURUSD,H1) Testing ? : cicli=99999999999999 tempo=10844 ms

2019.06.30 13:38:32.111 tst (EURUSD,H1) Testing if() cycles=9999999999999999 time=10860 ms

2019.06.30 13:38:42.955 tst (EURUSD,H1) Testing ? : cicli=99999999999999 tempo=10843 ms

Testato l'MT4:

2019.06.30 13:46:09.087 tst EURUSD,H1: Testing ? : cicli=99999999999999 tempo=33234 ms

2019.06.30 13:45:35.854 tst EURUSD,H1: Testing if() cycles=9999999999999999 time=32953 ms

2019.06.30 13:44:43.421 tst EURUSD,H1: Testing ? : cicli=99999999999999 tempo=333298 ms

2019.06.30 13:44:10.094 tst EURUSD,H1: Testing if() cycles=9999999999999999 time=33016 ms

2019.06.30 13:42:56.925 tst EURUSD,H1: Testing ? : cicli=99999999999999 tempo=33344 ms

2019.06.30 13:42:23.584 tst EURUSD,H1: Testing if() cycles=9999999999999999 time=32953 ms

Gli sviluppatori di MT, come sempre al top!
 
Ho notato da molto tempo che l'evidenziazione dei nomi delle macro personalizzate in un grande progetto non sempre funziona. Molte macro definite in altri file non vengono evidenziate per qualche motivo. Non riesco ancora a capire lo schema. Tutto quello che vedo è che tutte le macro definite in un certo file dopo una certa linea smettono di essere evidenziate in altri file. Qualcun altro lo vede in se stesso?
 
Alexey Navoykov:
Ho notato da molto tempo che l'evidenziazione dei nomi delle macro definite dall'utente in un grande progetto non sempre funziona. Molte macro definite in altri file non vengono evidenziate per qualche motivo. Non riesco ancora a trovare uno schema. Tutto quello che vedo è che tutte le macro definite in un certo file smettono di essere evidenziate in altri file dopo una certa linea. Qualcun altro ha visto questo accadere a se stesso?

Ho notato che se si scrive come parametro di qualsiasi funzione, non si accende. Penso che questo sia dovuto a un tipo di partita non completo. O come chiamarlo più precisamente non so.