Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 217
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Hm, vielleicht.
Du bist der erste, der es noch nicht hatte))
Aber das macht nichts, es kann bei jedem auftauchen - also muss man es leider beheben.
Ich habe viele davon, es hängt von der Version von MT4 ab (ich habe eine von Alpari).
Ich habe viele von ihnen in verschiedenen Versionen, ich programmiere für sie :-), aber die Software ist immer noch die gleiche, sie unterscheiden sich nur durch ein kleines Branding und kleine Chips in Indikatoren/Beratern.
PS/Farbtricks können von einer falschen DPI-Einstellung des Monitors, dem Vorhandensein von Dienstprogrammen zur Korrektur der Farbtemperatur oder von Erweiterungen für Videokartenspiele herrühren. Und so weiter und so fort.
PPS / übrigens keine DC überwunden hat (eher aufgrund von Gier, Geld) eigene Indikatoren / Berater / Skripte / Tools-Paket. Höchstens ein kitschiges Armaturenbrett in Firmenfarben. Was eine Art Hinweis ist auf
Hallo!
Können Sie mir sagen, warum OBJPROP_XSIZE 0 ergibt?
Hallo!
Können Sie mir sagen, warum OBJPROP_XSIZE 0 ergibt?
OBJ_LABEL ist ein sehr spezifisches Objekt - nach der Platzierung und vor der ersten Aktualisierung des Diagramms ist die Breite (X_SIZE) nicht definiert.
Das hängt von der Schriftart und den dpi des Bildschirms ab. Bis das Rendering vollständig funktioniert, können wir nichts über die tatsächliche Breite sagen.
OBJ_LABEL ist ein sehr spezifisches Objekt - nach der Platzierung und vor der ersten Aktualisierung des Diagramms ist die Breite (X_SIZE) undefiniert.
Das hängt von der Schriftart und den dpi des Bildschirms im Allgemeinen ab. Bis das Rendering vollständig funktioniert, können wir nichts über die tatsächliche Breite sagen.
Versuchen Sie, es neu zu zeichnen und überprüfen Sie dann
Versuchen Sie eine Neuzeichnung und prüfen Sie anschließend
Danke, ich werde es ausprobieren!
Es hat nicht geklappt.OBJ_LABEL ist ein sehr spezifisches Objekt - nach der Platzierung und vor der ersten Aktualisierung des Diagramms ist die Breite (X_SIZE) undefiniert.
Das hängt von der Schriftart und den dpi des Bildschirms im Allgemeinen ab. Bis die Rendering-Funktionen vollständig funktionieren, kann ich nichts über die tatsächliche Breite sagen.
Danke, die Idee ist klar, ich werde mit etwas experimentieren.
Danke, ich verstehe die Idee, ich werde damit experimentieren.
ChartRedraw zeichnet nicht direkt neu, sondern setzt nur irgendwo in den Tiefen des Terminals ein Häkchen, das besagt, dass das Diagramm so bald wie möglich neu gezeichnet werden sollte.
Um herauszufinden, welche Breite die Textmarke bekommen (sollte), können Sie TextSetFont, TextGetSize ausprobieren - ein signifikanter Unterschied kann nur bei HiDPI auftreten. Oder vielleicht auch nicht :-) Ich habe es nicht ausprobiert
oder die Breite des realen OBJ_LABEL bereits beim nächsten Tick/Chart_Event, d.h. genau nach dem Repaint
ChartRedraw zeichnet nicht direkt neu, sondern setzt nur irgendwo in den Tiefen des Terminals ein Häkchen, das besagt, dass das Diagramm so bald wie möglich neu gezeichnet werden sollte.
Um herauszufinden, welche Breite eine Textmarke bekommen (sollte), können Sie TextSetFont, TextGetSize ausprobieren - ein signifikanter Unterschied kann nur bei HiDPI auftreten. Oder vielleicht auch nicht :-) Ich habe es nicht ausprobiert
oder die Breite des realen OBJ_LABEL bereits beim nächsten Tick/Chart_Event, d.h. genau nach dem Neuladen
Es funktioniert bereits, danke! OnDeinit() hinzugefügt, dort eine Verzögerung eingefügt und dann OBJPROP_XSIZE.
P.S. Mir ist nichts Besseres eingefallen, um die Verzögerung im Drehbuch zu nutzen:
for(int i=100000000; i>0; i--) {}
Danke, es hat alles geklappt! Ich fügte OnDeinit() hinzu, setzte dort eine Verzögerung und dann OBJPROP_XSIZE.
P.S. Mir ist nichts Besseres eingefallen, um die Verzögerung im Drehbuch zu nutzen:
// задержка 500 милисекунд, годная для тестера
ulong timestamp=GetTickCount64();
do {
Sleep(500/4); // в тестере не сработает, зато спасёт GetTickCount
} while(GetTickCount64()-timestamp<500);
// задержка 500 милисекунд, годная для тестера
ulong timestamp=GetTickCount64();
do {
Sleep(500/4); // в тестере не сработает, зато спасёт GetTickCount
} while(GetTickCount64()-timestamp<500);
Danke, es hat funktioniert!