Errori, bug, domande - pagina 977

 
Renat:
Non viene chiamato nessun metodo GDI.

Voglio dire TextOut, non è un sistema?

Capisco l'etichetta, non la associo in nessun modo a GDI

 
voix_kas:

Il testo cambia in tutte (metà) le etichette destinate a visualizzare il valore dell'indicatore, non la sua descrizione. Lo si può vedere quando si esegue lo script.

O non ti capisco. Di quale linea stiamo parlando esattamente?

Scusa, stavo guardando il posto sbagliato dal mio cellulare e ho fatto un errore.

Eseguirò i miei test nelle prossime ore e posterò il codice sorgente e i risultati dettagliati.

 
sergeev:

Voglio dire TextOut, non è un sistema?

Capisco l'etichetta, non la associo in nessun modo a GDI

Pensavo che con GDI si trattasse di etichette.

La modifica dei parametri dell'etichetta non è altro che stipare massicciamente il flusso di comandi in una coda dedicata senza alcuna reale aggiunta di quei dati agli oggetti reali (gli oggetti appartengono al grafico, non a MQL5), finché i dati dell'oggetto non vengono resi o letti di nuovo. Cioè, la modifica reale degli oggetti è rimandata. Abbiamo volutamente applicato tale ottimizzazione per permettere agli sviluppatori di operare con decine di migliaia di oggetti senza rallentamenti.

Cioè, quando si modificano gli oggetti l'esecuzione effettiva è ritardata, il che dà una sensazione di velocità. Bene e tutto l'onere del disegno è portato sul filo dell'interfaccia (grafica) dell'applicazione. E durante il rendering, i metodi di ottimizzazione e di taglio dei limiti di visibilità funzionano, il che permette di lavorare normalmente con 300 000-500 000 oggetti per grafico.

Ma quando si lavora con i bitmap, l'intero lavoro viene fatto in MQL5 in una volta sola, senza alcun ritardo, ma dopo viene fatto istantaneamente quando si effettua il rendering. E il tempo totale di "modifica + rendering" di una bitmap è probabilmente più veloce per un dato numero di oggetti. Soprattutto perché la bitmap viene salvata tra una chiamata e l'altra e si può disegnare solo quello che serve invece di ricostruire l'intera tela.

Farò dei test dettagliati e posterò i risultati mostrando come si comportano gli oggetti e le bitmap in diverse modalità.

 

Postato i risultati in un thread separato: Test delle prestazioni di singole etichette di testo e bitmap su un grafico

L'autore aveva un serio bug nel suo script di gestione delle bitmap - in realtà usava due bitmap invece di una e le copiava costantemente l'una nell'altra, il che riduceva le prestazioni.

[Eliminato]  
Renat:

Postato i risultati del test in un thread separato: Test delle prestazioni di singole etichette di testo e bitmap su un grafico

L'autore aveva un grave difetto nel suo script quando lavorava con le bitmap - in realtà usava due bitmap invece di una e le copiava costantemente l'una nell'altra, il che riduceva le prestazioni.

Quindi il modo per accelerare la produzione effettiva è un difetto? :)

Ho già descritto in precedenza lo scopo per cui sono state introdotte la tela dei modelli e la tela di lavoro.

 

Viviamo a lungo.

Il manuale MQL5 dice tipo datetime https://www.mql5.com/ru/docs/basis/types/integer/datetime:

"Gamma di valori dal 1° gennaio 1970 al 31 dicembre 3000. "

in realtà il valore massimo a 32535244799 è 3001.01.01 07:59:59

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - Документация по MQL5
 
Il test è basato sulle prestazioni, quindi non dovrebbe essere intasato da ulteriori operazioni.
[Eliminato]  

Per migliorare la purezza della programmazione, vorrei chiedere al pubblico un parere in merito.

Supponiamo che ci sia un flag (bool Flag) dichiarato globalmente. Quando si verificano certi eventi/condizioni, deve essere impostato su un certo valore.

La prima variante:

if (некое условие) {
  Flag = false;
}

Seconda opzione:

if (некое условие) {
  if (Flag) Flag = false;
}

Quale opzione:

1. più veloce in termini di prestazioni?

2. Se posso dire così, "più professionale"?

Si presume che questa sezione di codice venga controllata abbastanza spesso, per esempio ogni tick.

 
voix_kas:

Per migliorare la purezza della programmazione, vorrei chiedere al pubblico un parere in merito.

Supponiamo che ci sia un flag (bool Flag) dichiarato globalmente. Quando si verificano alcuni eventi/condizioni, deve essere impostato su un certo valore.

Naturalmente, la prima variante è più veloce. Meno istruzioni e un confronto/raccordo in meno.
[Eliminato]  
Renat:
Naturalmente, la prima opzione è più veloce. Meno istruzioni e anche un confronto/raffronto in meno.
Grazie.