Fehler, Irrtümer, Fragen - Seite 2040

 

Funktioniert nicht im Unterfenster des Indikators, was mache ich falsch?

  datetime dt =0; 
  double price =0; 
  int window= ChartWindowFind();
  ChartXYToTimePrice(0,5,34,window,dt,price);
  PrintFormat("Window=%d  =>  time=%s  Price=%G",window,TimeToString(dt),price);

2017.10.15 05:35:36.060	i-Stp EURCHF,M30: Window=0  =>  _Time=2017.09.29 22:00  _Price=0.904348
  datetime dt =0; 
  double price =0; 
  int window= ChartWindowFind();
// ChartXYToTimePrice(0,5,34,window,dt,price);
  PrintFormat("Window=%d  =>  _Time=%s  _Price=%G",window,TimeToString(dt),price); 

2017.10.15 05:37:13.997	i-Stp EURCHF,M30: Window=1  =>  _Time=1970.01.01 00:00  _Price=0
 
Yury Kulikov:

DieParameter MouseMove(x, y, key) werden verwendet. Die Cursorposition und der Mausklick werden bestimmt, die Hauptzeile wird von mql bewegt, nicht von den Möglichkeiten der Terminalschnittstelle, d.h. das Programm überwacht die Position des Cursors relativ zur Zeile, nicht die Zeilenbewegung. Die gleichzeitige Bewegung der Linien wird durch die synchrone Änderung der Koordinaten der Haupt- und Nebenlinien gewährleistet.

Seltsamerweise verwende ich überhaupt keine Mauskoordinaten, sondern reagiere nur auf id == CHARTEVENT_MOUSE_MOVE. Und alles funktioniert einwandfrei, was eigentlich logisch ist.

Sie brauchen kein benutzerdefiniertes DND für reibungslose Abläufe. Wenn Sie ein benutzerdefiniertes DND erstellen, sollten Sie auch benutzerdefinierte Objekte über Kanvas erstellen. Es kann keine Verzögerung geben, da das Objekt immer dasselbe ist.

 
Vitaly Muzichenko:

Funktioniert nicht im Unterfenster des Indikators, was mache ich falsch?

was wurde erwartet und was genau funktioniert nicht?
 
Kirill Belousov:
aber was wurde erwartet und was genau funktioniert nicht?

Erwartet, Koordinaten in einem Unterfenster zu konvertieren und einen Preis zu erhalten.

Funktioniert im Hauptfenster, nicht aber in den Unterfenstern, wie man an den Ausdrucken sehen kann.

Außerdem ersetzt die Funktion die Nummer des Unterfensters durch "0", d.h. durch das Hauptfenster:

Преобразует координаты  X и Y графика в значения время и цена.
bool  ChartXYToTimePrice(
   long           chart_id,     // идентификатор графика
   int            x,            // координата X на графике
   int            y,            // координата Y на графике
   int&           sub_window,   // номер подокна
   datetime&      time,         // время на графике
   double&        price         // цена на графике
   );
 

Kompilierungsfehler

int f() { return 1; }
void OnStart() export
{
        for   ( int i = f();           ;) {} //(1) нормально
        for   (            ;int i = f();) {} //(2) 'i' - unexpected token
        while (             int i = f() ) {} //(3) 'i' - unexpected token
}
 
Vitaly Muzichenko:

Erwartet, Koordinaten in einem Unterfenster zu konvertieren und einen Preis zu erhalten.

Funktioniert im Hauptfenster, nicht aber in den Unterfenstern, wie man an den Ausdrucken sehen kann.

Außerdem ersetzt die Funktion die Nummer des Unterfensters durch "0", d.h. das Hauptunterfenster:

Aus der Funktionshilfe: X- und Y-Koordinaten werden von der linken oberen Ecke des Hauptdiagrammfensters aus gezählt.

x=5, y=34 bezieht sich ebenfalls auf das Hauptfenster, also Ausgabefenster=0.

Versuchen Sie, Y um die Höhe des Hauptfensters zu erhöhen, um in einem anderen Fenster zu "landen".

 
A100:

Kompilierungsfehler

Ist es akzeptabel, innerhalb von while(...) zu deklarieren und zuzuweisen, anstatt auf eine Bedingung zu prüfen?
 
Kirill Belousov:

Aus der Funktionshilfe: X und Y sind Koordinaten, die sich auf die linke obere Ecke des Hauptdiagrammfensters beziehen.

x=5, y=34 bezieht sich ebenfalls auf das Hauptfenster, die Ausgabe ist also window=0.

Versuchen Sie, Y um die Höhe des Hauptfensters zu erhöhen, um in einem anderen Fenster zu "landen".

Das ist weder die Antwort, noch ist es das Ergebnis.

Wir geben die Nummer des Teilfensters an, die 3 oder 4 sein kann, und wie geben wir dann die Koordinaten an?

Es liegt ein eindeutiger Fehler in der Funktion vor.

 
Vitaly Muzichenko:

Das ist weder die Antwort noch die Lösung.

Wir geben die Nummer des Teilfensters an, die 3 oder 4 sein kann, und wie geben wir dann die Koordinaten an?

Es liegt ein eindeutiger Fehler in der Funktion vor.

Wir geben die Nummer des Unterfensters nicht an, aber die Funktion sagt uns (dies ist ein Ausgabeparameter, kein Eingabeparameter), in welchem Unterfenster des Diagramms mit der angegebenen ID sich das Preisdiagramm befindet, und sie sagt uns, welcher Preis und welche Zeit den angegebenen X,Y-Koordinaten in diesem Diagramm entsprechen.
 
Kirill Belousov:
Ist es akzeptabel, innerhalb von while(...) zu deklarieren und zuzuweisen, anstatt die Bedingung zu prüfen?

Lassen Sie die Entwickler das überprüfen. C++ kompiliert, obwohl Zeile (2) [aber nicht (3)] bei veralteten Compilern einen Fehler verursachen kann