Fehler, Irrtümer, Fragen - Seite 2266

 
fxsaber:
Haben wir also das Problem der "Quadrate" gelöst?

Wenn Sie eine einzelne, nicht skalierbare Leinwand verwenden, gibt es natürlich gar keine.

Ich möchte in KB eine einfache iCanvas-Klasse veröffentlichen, die von der CCanvas-Klasse erbt, die standardmäßig eine Vollbild-Leinwand erstellt, wenn sie deklariert wird, und sie dann automatisch ändert, wenn sich die Fenstergröße ändert.

Es wird auch einige zusätzliche Funktionen geben, wie z.B. das Zeichnen von Leinwandformen nicht nach x-Koordinaten, sondern nach Preis, Taktnummer oder Zeit. D.h. wir fügen die Funktionen X(datatime T), X(double bar), Y(double price) hinzu.
Damit der Kanvas vielen Menschen nicht so stressig erscheint.

 
Nikolai Semko:

Wenn Sie eine einzelne, nicht skalierte Leinwand verwenden, gibt es sie natürlich nicht.

Ich hatte immer eine Leinwand und das rote Quadrat tauchte immer wieder auf. Ich habe lange darum gerungen, die Gründe dafür zu verstehen, bin aber nie dazu gekommen.

 
fxsaber:

Ich hatte immer eine Leinwand und das rote Quadrat tauchte immer wieder auf. Ich habe lange darum gerungen, die Gründe dafür zu verstehen, bin aber nie dazu gekommen.

Wenn Sie die Größe des Kanvas ändern, d.h. ihn erneut öffnen oder die Funktion "Größe ändern" verwenden, sollten Sie den Kanvas für das gesamte Fenster verwenden, um solche roten Quadrate zu vermeiden.

#include <Canvas\Canvas2.mqh>

int OnStart(void)
  {
    int Width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
    int Height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
    CCanvas canvas;
    if(!canvas.CreateBitmapLabel("SampleCanvas",0,0,Width,Height,COLOR_FORMAT_ARGB_NORMALIZE)) Print("Error creating canvas: ",GetLastError());
  ....
  }

Denken Sie auch daran, dass die Löschfunktion sehr schnell ist - ein Vollbild in FullHD dauert ~0,5 Millisekunden.

Und Update langsamer ~5-7 Millisekunden auf Vollbild FullHD.
Ja - diese Option ist kostspieliger, da die Aktualisierung einer Leinwand mit einer Größe von z.B. 500x200 ~0,5 Millisekunden dauert.

Es ist also eine Frage der Zweckmäßigkeit.

Ich persönlich benutze jetzt fast immer Vollbild-Kanvas, da ich 200 fps Marge mit Update = 5 Millisekunden habe.

 

Gibt es eine Möglichkeit, dieses Problem mit dem nächsten Build zu beheben?

Wenn ich zu einem anderen Konto wechsle, verliert das benutzerdefinierte Zeichendiagramm die Balken - "Warten auf Aktualisierung". Bars können nicht angefordert werden. Zur gleichen Zeit Zecken - kein Problem.

Nach dem Neustart des Terminals sind die Balken im Diagramm natürlich verfügbar.

Ich möchte, dass die benutzerdefinierten Symbolleisten nach dem Wechsel zu einem anderen Konto ohne Neustart verfügbar bleiben.

 
Wenn Sie ein "synthetisches Werkzeug" erstellen und der Computer abstürzt, wird das synthetische Werkzeug nicht gespeichert. Eine Kleinigkeit, aber lästig. Bitte reparieren Sie das.
 
Es stellt sich heraus, dass der Backtest am vorletzten (nicht am letzten, wie Sie vielleicht denken) Tick des Testintervalls endet.
 

Fehler bei der Ausführung:

#define  MACRO( int ) int
void f( uint ) { Print( 1 ); }
void f(  int ) { Print( 2 ); }
void OnStart()
{
        MACRO( uint ) x = 0;
        f( x );
}

Ergebnis: 2 Erwartet: 1

 

Es muss eine psychologische Verirrung sein, jederzeit die Nummer des neuesten MT5-Builds zu kennen.

Ich kenne die aktuellen Wechselkurse nicht, aber ich weiß immer die Zahl. Fragen Sie mich heute, vor einem Monat, vor einem Jahr...

 
Kompilierungsfehler:
class A {
template<typename T>
        A *StringFormat( string, T ) { return &this; }
        A *f() { return StringFormat( "", 1 ); } //Error: 'StringFormat' - object pointer expected
};
 
Trotzdem verschwindet der Tickverlauf der benutzerdefinierten Zeichen, nachdem der Tester auf sie angewendet wurde. Das sollte behoben werden.