Fehler, Irrtümer, Fragen - Seite 2041

 
Kirill Belousov:
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 ein Preisdiagramm befindet, und sie sagt uns, welcher Preis und welche Zeit den X,Y-Koordinaten entsprechen, die wir in diesem Diagramm angegeben haben.

Dies ist verständlich, da der Parameter per Referenz übergeben wird. Aber die Frage ist offen: Warum sieht die Funktion nicht, in welchem Unterfenster der Indikator installiert ist und übernimmt keine Daten von ihm?

 
Vitaly Muzichenko:

Dies ist verständlich, da der Parameter per Referenz übergeben wird. Aber die Frage ist offen: Warum sieht die Funktion nicht, in welchem Teilfenster der Indikator installiert ist und übernimmt die Daten von dort?

CHART_HEIGHT_IN_PIXELS
 
fxsaber:
CHART_HEIGHT_IN_PIXELS

Es ist eine ganze Geschichte mit Berechnungen, wenn Sie mehrere Indikatoren in Unterfenstern haben, aber trotzdem danke für Ihre Zeit.

 
Vitaly Muzichenko:

Es ist eine ganze Geschichte mit Berechnungen, wenn es mehrere Indikatoren in Unterfenstern gibt, aber trotzdem danke für Ihre Zeit.

https://www.mql5.com/ru/docs/chart_operations/chartwindowfind

Документация по MQL5: Операции с графиками / ChartWindowFind
Документация по MQL5: Операции с графиками / ChartWindowFind
  • www.mql5.com
1. Функция ищет на указанном графике подокно с указанным "коротким именем" индикатора (короткое имя выводится слева вверху подокна) и в случае удачи возвращает номер подокна. Не следует путать короткое имя индикатора и имя файла, которое указывается при создании индикатора функциями iCustom() и IndicatorCreate(). Если короткое наименование...
 

Ja, das sind alles Funktionen, die ich kenne.

Die Aufgabe ist einfach, wir müssen das Objekt im 4. Unterfenster (rot hervorgehoben) mit dem Preis verknüpfen, in diesem Fall ist es -0,02, und die Y-Koordinate auf dem Diagramm ist 34


 
Vitaly Muzichenko:

Die Aufgabe ist einfach: Sie müssen das Objekt im Unterfenster 4 (rot hervorgehoben) mit dem Preis verknüpfen, in diesem Fall ist es -0,02, und die Y-Koordinate im Diagramm ist 34

#property indicator_separate_window

#property indicator_buffers 0 
#property indicator_plots 0

#define  CHART_SUBWINDOW_BORDER_SIZE 2 // Размер разделителя подокон

void OnInit()
{
  int X = 0;
  int Y = 0;

  const int SubWindow = ChartWindowFind();
  
  for (int i = 0; i < SubWindow; i++)  
    Y += (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, i) + CHART_SUBWINDOW_BORDER_SIZE;
  
  int SubWindow2;
  datetime time;
  double Price;
  
  if (ChartXYToTimePrice(0, X, Y, SubWindow2, time, Price))
    Print(SubWindow2);
}

int OnCalculate ( const int rates_total, const int, const int, const double &[] )
{ 
  return(rates_total);
}
 
fxsaber:

Danke für die fertige Variante, ich werde versuchen, sie den Indikatoren beizufügen.

P.S. Es hat geklappt, nochmals vielen Dank!


Aber die Frage bleibt, warum sollte ich die Nummer des Unterfensters in der Funktion angeben, wenn ich mit dem Tamburin tanzen muss?

 
Vitaly Muzichenko:

Warum sollte ich die Nummer des Unterfensters in der Funktion angeben, wenn ich mit ihr spielen muss?

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fehler, Irrtümer, Fragen

Kirill Belousov, 2017.10.15 19:50

Wir geben die Nummer des Unterfensters nicht an, die Funktion sagt uns(dies ist ein Ausgabeparameter, kein Eingabeparameter), in welchem Unterfenster des Diagramms mit der angegebenen ID sich das Preisdiagramm befindet und welcher Preis und welche Zeit den von uns angegebenen X,Y-Koordinaten in diesem Diagramm entsprechen.
 
Vitaly Muzichenko:

Danke für die fertige Version, ich werde versuchen, sie den Indikatoren beizufügen.

P.S. Es hat geklappt, nochmals vielen Dank!


Aber die Frage bleibt, warum sollte ich die Nummer des Unterfensters in der Funktion angeben, wenn ich sie durcheinanderbringen will?

Der Tanz kann durch die Verwendung von ChartGetInteger() mit diesem Parameter verkürzt werden

CHART_WINDOW_YDISTANCE

Abstand in Pixeln entlang der vertikalen Y-Achse zwischen dem oberen Rand des Indikatorteilfensters und dem oberen Rand des Hauptdiagrammfensters. Bei Mausereignissen werden die Cursor-Koordinaten in den Koordinaten des Hauptdiagrammfensters übergeben, während die Koordinaten der grafischen Objekte in einem Indikator-Unterfenster relativ zur linken oberen Ecke des Unterfensters gesetzt werden.

Der Wert wird für die Konvertierung der absoluten Koordinaten des Hauptdiagramms in die lokalen Koordinaten eines Unterfensters benötigt, um korrekt mit den grafischen Objekten arbeiten zu können, deren Koordinaten relativ zur linken oberen Ecke des Rahmens des Unterfensters festgelegt sind.

int r/o modifier - Nummer des Unterfensters

 
Kirill Belousov:

Der Tanz kann durch die Verwendung von ChartGetInteger() mit diesem Parameter verkürzt werden

CHART_WINDOW_YDISTANCE

Abstand in Pixeln entlang der vertikalen y-Achse zwischen dem oberen Rahmen des Indikator-Unterfensters und dem oberen Rahmen des Hauptdiagrammfensters. Bei Mausereignissen werden die Cursor-Koordinaten in den Koordinaten des Hauptdiagrammfensters übergeben, während die Koordinaten der grafischen Objekte in einem Indikator-Unterfenster relativ zur linken oberen Ecke des Unterfensters gesetzt werden.

Der Wert wird für die Konvertierung der absoluten Koordinaten des Hauptdiagramms in die lokalen Koordinaten eines Unterfensters benötigt, um korrekt mit den grafischen Objekten arbeiten zu können, deren Koordinaten relativ zur linken oberen Ecke des Rahmens des Unterfensters festgelegt sind.

int r/o modifier - Nummer des Unterfensters

Danke, gekürzt, gleiches Ergebnis, aber weniger Code!