Errori, bug, domande - pagina 2976

 
Nikolai Semko:
Di quale inconveniente parla?
Sull'intensità delle risorse?
Era un'affermazione fuorviante.
Il commento consuma altrettante risorse.
Ci vogliono 1-3 millisecondi per generare e visualizzare una tela con testo per tutta la finestra.
In MT5, l'uscita del commento richiede un po' più tempo. Se state per aggiornare le informazioni di testo 30 volte al secondo, non vedrete alcun ritardo.

Non ho indagato in dettaglio sul perché Kanvas possa essere lento, ma penso che sia per la stessa ragione... I pixel della matrice non possono essere cambiati selettivamente e dare un comando di ridisegno. Prima si fanno le modifiche all'array, e poi si deve ResourceCreate. Che copia i pixel uno per uno e poi, allo stesso modo, li disegna uno per uno e poi aggiorna il grafico (ChartRedraw) ancora un po'. Quante operazioni inutili... Questo ucciderà in ogni caso il carico del processore quando è occupato con l'elaborazione di dati utili. Mentre le etichette richiedono almeno meno pixel (e quindi un output più veloce). E poi, il loro meccanismo di output è interamente all'interno del grafico (non c'è bisogno di passare un array). Anche se non sono deltutto sicuro del loro algoritmo, penso che siano più veloci. Facevo un pannello di output di testo basato su un canvas. Mentre provavo visivamente l'Expert Advisor con tale pannello nel tester, non sono rimasto molto impressionato dal risultato. Oltre al carico proprio dell'EA, il ridisegno del pannello era piuttosto fastidioso. Il pannello viene costantemente aggiornato(ResourceCreate -ChartRedraw) ad ogni tick. Mentre non ho notato tali rallentamenti con le etichette.

 

O sono un pazzo o gli sci non si muovono? mt4 build 1320

double LotStep = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
double Lot=0.7;
PrintFormat("LotStep %f, lot %f, %f, %f %f",LotStep,Lot,Lot/LotStep,MathFloor(Lot/LotStep),(int)double(Lot/LotStep));
//Print
//2021.03.07 23:42:46.507	2021.02.25 07:36:40  EA_CCIcross_v1.0 AUDJPY,M5: LotStep 0.010000, lot 0.070000, 7.000000, 6.000000 6.000000

p/s// Capisco che 7 è 6,9999 ma perché allora 0,7 diviso per 0,1 Stampa esce come 7,000 non 6,9999, fuorviante.
 
Mihail Matkovskij:

Non ho elaborato in dettaglio il motivo per cui Kanvas potrebbe essere lento, ma penso che sia per la stessa ragione... I pixel della matrice non possono essere cambiati selettivamente e ricevere un comando di ridisegno. Prima si fanno le modifiche all'array, e poi si deve ResourceCreate. Che copia i pixel uno per uno e poi, allo stesso modo, li disegna uno per uno e poi aggiorna il grafico (ChartRedraw) ancora un po'. Quante operazioni inutili... Questo ucciderà in ogni caso il carico del processore quando è occupato con l'elaborazione di dati utili. Mentre le etichette richiedono almeno meno pixel (e quindi un output più veloce). E poi, il loro meccanismo di output è interamente all'interno del grafico (non c'è bisogno di passare un array). Anche se non sono deltutto sicuro del loro algoritmo, penso che siano più veloci. Facevo un pannello di output di testo basato su un canvas. Quando ho testato visivamente l'Expert Advisor con tale pannello nel tester, non sono rimasto molto impressionato dal risultato. Oltre al carico proprio dell'EA, il ridisegno del pannello era piuttosto fastidioso. Il pannello viene costantemente aggiornato(ResourceCreate -ChartRedraw) ad ogni tick. Allo stesso tempo non ho mai notato tali rallentamenti con le etichette.

È solo la tua immaginazione.
Naturalmente nulla è gratis, ma il kanvas è il modo più veloce per visualizzare il testo in MT5, perché il kanvas è una base e i commenti e le etichette sono secondari al kanvas.
Usa l'unprinter se sei così avido di risorse della tua CPU...
 
Mihail Matkovskij :

Non ho elaborato in dettaglio il motivo per cui Kanvas potrebbe essere lento, ma penso che sia per la stessa ragione... I pixel della matrice non possono essere cambiati selettivamente e ricevere un comando di ridisegno. Prima si fanno le modifiche all'array, e poi si deve ResourceCreate. Che copia i pixel uno per uno e poi, allo stesso modo, li disegna uno per uno e poi aggiorna il grafico (ChartRedraw) ancora un po'. Quante operazioni inutili... Questo ucciderà in ogni caso il carico del processore quando è occupato con l'elaborazione di dati utili. Mentre le etichette richiedono almeno meno pixel (e quindi un output più veloce). E poi, il loro meccanismo di output è completamente all'interno del grafico (non c'è bisogno di passare un array ). Anche se non sono del tutto sicuro del loro algoritmo, penso che siano più veloci. Facevo un pannello di output di testo basato su un canvas. Quando ho testato visivamente l'EA con tale pannello nel tester, non sono rimasto molto impressionato dal risultato. Oltre al carico proprio dell'EA, il ridisegno del pannello era piuttosto fastidioso. C'è un aggiornamento costante ( ResourceCreate - ChartRedraw ) su ogni tick. Non ho notato tali rallentamenti con le etichette.

Per favore, non parlate di ciò che non sapete. @Nikolai Semko ha assolutamente ragione, e Canvas funziona velocemente e senza problemi o difetti.
 

@Ilyas

Bug del compilatore? Costruire 2817.

   const ushort AN_USHORT_CONSTANT = 1;
//---
   ushort avariable = 1;

   switch(avariable)
     {
      case AN_USHORT_CONSTANT :
         Print("Compiler bug ?");
         break;
     }


 
Nikolai Semko:
Sembra solo a voi.
Ovviamente, niente è gratis, ma il kanvas è il modo più veloce per visualizzare il testo in MT5, poiché il kanvas è la base e i commenti e le etichette sono secondari al kanvas.
Usa il primer se sei così avido di risorse della CPU...

Come sapete che le etichette sono basate su canva, se canva stesso è un add-on di OBJ_BITMAP_LABEL e l'etichetta è OBJ_LABEL?

Mentre chiacchieravo qui sul forum, ho già abbozzato il pannello di uscita sulle etichette, con un numero qualsiasi di righe e colonne. E per la tela ho altri compiti, nelle mie altre applicazioni. E funziona molto bene anche lì.

Alain Verleyen:
Per favore, non parlate di ciò che non sapete. @Nikolai Semko ha assolutamente ragione, e Canvas funziona rapidamente e senza problemi o difetti.

Quindi probabilmente sai tutto? Allora forse condividi le tue conoscenze o i link dove puoi leggere sui grafici in MetaTrader, così anch'io so quello che sai? :)

 
Alain Verleyen:

@Ilyas

Bug del compilatore? Costruire 2817.

In MQL, const non è affatto const. Infatti, constpuò esserescritto solo attraverso una macro

//const ushort AN_USHORT_CONSTANT      = 1; //(*)
#define         AN_USHORT_CONSTANT ushort(1) //(**)
void main()
{
        int i[AN_USHORT_CONSTANT];      //(1) нормально
        ushort avariable = 1;
        switch(avariable) {
        case AN_USHORT_CONSTANT:        //(2) нормально
                break;
        }
}
void f( int = AN_USHORT_CONSTANT ) {}   //(3) нормально
enum { e = AN_USHORT_CONSTANT };        //(4) нормально    
 
A100 :

In MQL, const non è affatto const. Infatti const può essere scritto solo attraverso una macro

Questo è un errore :-D
 
Alain Verleyen:
Sì, quindi è un errore :-D

Notate che questo non è in un solo caso, ma in tutti (1) (2) (3) (4) è progettato in questo modo: con (*) ci sarà un errore, ma con (**) è OK. Cioè le costanti mancano come entità

 
A100 :

Notate che questo non è in un solo caso, ma in tutti (1) (2) (3) (4) è progettato in questo modo: con (*) ci sarà un errore, ma con (**) è OK. Cioè le costanti mancano come entità

Lo so. Ecco perché chiedo agli sviluppatori di sistemarlo.