Fehler, Irrtümer, Fragen - Seite 2976

 
Nikolai Semko:
Von welchem Nachteil sprechen Sie?
Über die Ressourcenintensität?
Das war eine missverständliche Aussage.
Kommentare verbrauchen ebenso viele Ressourcen.
Es dauert 1-3 Millisekunden, um eine Leinwand mit Text für das gesamte Fenster zu erstellen und anzuzeigen.
Im MT5 dauert die Ausgabe des Kommentars etwas länger. Wenn Sie Textinformationen 30 Mal pro Sekunde aktualisieren, werden Sie keine Verzögerungen feststellen.

Ich habe nicht im Detail untersucht, warum Kanvas langsam sein könnte, aber ich denke, es ist aus dem gleichen Grund... Die Pixel im Array können nicht selektiv geändert und mit einem Redraw-Befehl versehen werden. Sie nehmen zuerst Änderungen an dem Array vor und müssen dann ResourceCreate durchführen. Die Pixel werden einzeln kopiert und dann in ähnlicher Weise einzeln in einem Diagramm dargestellt und das Diagramm (ChartRedraw) erneut aktualisiert. Wie viele unnötige Operationen... Dadurch wird der Prozessor auf jeden Fall entlastet, wenn er mit der Verarbeitung nützlicher Daten beschäftigt ist. Während Etiketten zumindest weniger Pixel benötigen (und daher schneller ausgegeben werden). Der Ausgabemechanismus befindet sich dann vollständig innerhalb des Diagramms (es muss kein Array übergeben werden). Ich bin mir zwar nichtganz sicher, was ihren Algorithmus angeht, aber ich glaube, sie sind schneller. Ich habe ein Textausgabefeld auf der Grundlage einer Leinwand erstellt. Als ich den Expert Advisor mit einem solchen Panel im Tester visuell testete, war ich von dem Ergebnis nicht sehr beeindruckt. Neben der Belastung durch den EA selbst war auch das Neuzeichnen des Panels ziemlich lästig. Das Panel wird ständig aktualisiert(ResourceCreate -ChartRedraw) und zwar bei jedem Tick. Bei den Etiketten habe ich solche Verlangsamungen nicht bemerkt.

 

Entweder bin ich ein Idiot oder die Skier bewegen sich nicht? 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/ Ich verstehe, dass 7 gleich 6,9999 ist, aber warum wird dann 0,7 geteilt durch 0,1 als 7,000 und nicht als 6,9999 gedruckt, was irreführend ist.
 
Mihail Matkovskij:

Ich habe noch nicht im Detail herausgefunden, warum Kanvas langsam sein könnte, aber ich denke, es ist derselbe Grund... Die Pixel im Array können nicht selektiv geändert und mit einem Redraw-Befehl versehen werden. Sie nehmen zuerst Änderungen an dem Array vor und müssen dann ResourceCreate durchführen. Die Pixel werden einzeln kopiert und dann in ähnlicher Weise einzeln in einem Diagramm dargestellt und das Diagramm (ChartRedraw) erneut aktualisiert. Wie viele unnötige Operationen... Dadurch wird der Prozessor auf jeden Fall entlastet, wenn er mit der Verarbeitung nützlicher Daten beschäftigt ist. Während Etiketten zumindest weniger Pixel benötigen (und daher schneller ausgegeben werden). Der Ausgabemechanismus befindet sich dann vollständig innerhalb des Diagramms (es muss kein Array übergeben werden). Ich bin mir zwar nichtganz sicher, was ihren Algorithmus angeht, aber ich glaube, sie sind schneller. Ich habe ein Textausgabefeld auf der Grundlage einer Leinwand erstellt. Als ich den Expert Advisor mit einem solchen Panel im Tester visuell testete, war ich von dem Ergebnis nicht sehr beeindruckt. Neben der Belastung durch den EA selbst war auch das Neuzeichnen des Panels ziemlich lästig. Das Panel wird ständig aktualisiert(ResourceCreate -ChartRedraw) und zwar bei jedem Tick. Gleichzeitig habe ich noch nie eine solche Verlangsamung bei Etiketten festgestellt.

Das ist nur deine Phantasie.
Natürlich ist nichts umsonst, aber Kanvas ist der schnellste Weg, um Text in MT5 anzuzeigen, denn Kanvas ist eine Basis und Kommentare und Labels sind für Kanvas sekundär.
Verwenden Sie den Unprinter, wenn Sie so gierig nach den Ressourcen Ihrer CPU sind...
 
Mihail Matkovskij :

Ich habe noch nicht im Detail herausgefunden, warum Kanvas langsam sein könnte, aber ich denke, es ist derselbe Grund... Die Pixel im Array können nicht selektiv geändert und mit einem Redraw-Befehl versehen werden. Sie nehmen zuerst Änderungen an dem Array vor und müssen dann ResourceCreate durchführen. Die Pixel werden einzeln kopiert und dann in ähnlicher Weise einzeln in einem Diagramm dargestellt und das Diagramm (ChartRedraw) erneut aktualisiert. Wie viele unnötige Operationen... Dadurch wird der Prozessor auf jeden Fall entlastet, wenn er mit der Verarbeitung nützlicher Daten beschäftigt ist. Während Etiketten zumindest weniger Pixel benötigen (und daher schneller ausgegeben werden). Und dann ist ihr Ausgabemechanismus vollständig innerhalb des Diagramms (keine Notwendigkeit, ein Array zu übergeben). Ich bin mir zwar nicht ganz sicher, was ihren Algorithmus angeht, aber ich glaube, sie sind schneller. Ich habe ein Textausgabefeld auf der Grundlage einer Leinwand erstellt. Als ich den EA mit einem solchen Panel im Tester visuell testete, war ich von dem Ergebnis nicht sehr beeindruckt. Neben der Belastung durch den EA selbst war auch das Neuzeichnen des Panels ziemlich lästig. Es gibt eine konstante Aktualisierung ( ResourceCreate - ChartRedraw ) bei jedem Tick. Bei den Etiketten habe ich keine solche Verlangsamung festgestellt.

Bitte sprechen Sie nicht über Dinge, die Sie nicht kennen. @Nikolai Semko hat absolut recht, und Canvas funktioniert schnell und ohne Probleme oder Fehler.
 

@Ilyas

Compiler-Fehler? Build 2817.

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

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


 
Nikolai Semko:
Es scheint nur für Sie.
Natürlich ist nichts umsonst, aber Kanvas ist der schnellste Weg, um Text in MT5 anzuzeigen, da Kanvas die Basis ist und Kommentare und Labels gegenüber Kanvas sekundär sind.
Verwenden Sie Primer, wenn Sie so gierig auf Ihre CPU-Ressourcen sind...

Woher wissen Sie, dass die Etiketten auf Canva basieren, wenn Canva selbst ein Add-on von OBJ_BITMAP_LABEL und das Etikett OBJ_LABEL ist?

Während ich hier im Forum geplaudert habe, habe ich bereits das Ausgabepanel auf Etiketten skizziert, mit einer beliebigen Anzahl von Zeilen und Spalten. Und für die Leinwand habe ich andere Aufgaben, in meinen anderen Anwendungen. Und es funktioniert auch dort sehr gut.

Alain Verleyen:
Bitte sprechen Sie nicht über Dinge, die Sie nicht kennen. @Nikolai Semko hat absolut recht, und Canvas funktioniert schnell und ohne Probleme oder Fehler.

Sie wissen also wahrscheinlich alles? Dann teilen Sie vielleicht Ihr Wissen oder Links, wo Sie über Charting in MetaTrader lesen können, damit ich weiß, was Sie auch wissen? :)

 
Alain Verleyen:

@Ilyas

Compiler-Fehler? Build 2817.

In MQL ist const überhaupt nicht const. Tatsächlichkann const nur durch ein Makrogeschrieben werden

//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 ist const überhaupt nicht const. Tatsächlich kann const nur durch ein Makro geschrieben werden

Das ist ein Irrtum :-D
 
Alain Verleyen:
Ja, es ist also ein Fehler :-D

Beachten Sie, dass dies nicht nur in einem Fall, sondern in allen (1) (2) (3) (4) so vorgesehen ist: bei (*) gibt es einen Fehler, aber bei (**) ist es OK. D.h. die Konstanten fehlen als Einheit

 
A100 :

Beachten Sie, dass dies nicht nur in einem Fall, sondern in allen (1) (2) (3) (4) so vorgesehen ist: bei (*) gibt es einen Fehler, aber bei (**) ist es OK. D.h. die Konstanten fehlen als Einheit

Ich weiß. Deshalb fordere ich die Entwickler auf, das Problem zu beheben.