Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 545

 
Ihor Herasko:

Zeigen Sie mir, wie Sie beides bekommen. Bisher sieht es so aus, als ob wir über dieselbe Sache sprechen.

Nein, die Werte sind unterschiedlich, ich habe es überprüft.

Wir werfen dieses Skript auf das Diagramm:

void OnStart()
  {
//---
   int chartHandle=ChartGetInteger(0,CHART_WINDOW_HANDLE);
   int idChart = ChartID(); 
   Alert("CHART_WINDOW_HANDLE = ",chartHandle," idChart=",idChart); 

  }

Und wir bekommen:


 
khorosh:

Nein, die Werte sind unterschiedlich, ich habe es überprüft.

Jetzt verstehe ich, worüber wir reden.

chartHandle ist ein Deskriptor des dem Betriebssystem zugewiesenen Diagrammfensters. Sie können es verwenden, um das Fenster von anderen Threads aus über WinAPI anzusprechen.

idChart ist ein interner Kartenbezeichner, der vom Terminal selbst zugewiesen wird. Es kann nur für die Arbeit von MQL aus verwendet werden.

 
Ihor Herasko:

Es ist nun klar, worüber wir sprechen.

ChartHandle ist ein vom Betriebssystem zugewiesener Kartenfenster-Deskriptor. Sie können es verwenden, um das Fenster von anderen Threads aus über WinAPI anzusprechen.

idChart ist ein interner Kartenbezeichner, der vom Terminal selbst zugewiesen wird. Es kann nur für die Arbeit mit dem MMS verwendet werden.

Verstanden, danke!

 
Ihor Herasko:

Es ist nun klar, worüber wir sprechen.

ChartHandle ist ein vom Betriebssystem zugewiesener Kartenfenster-Deskriptor. Sie können es verwenden, um das Fenster von anderen Threads aus über WinAPI anzusprechen.

idChart ist ein interner Kartenbezeichner, der vom Terminal selbst zugewiesen wird. Es kann nur von MQL aus verwendet werden.

Wenn Sie also das Fenster eines anderen geöffneten Terminals ansprechen müssen, sollte chartHandle verwendet werden? Und wie kann man den Chart-Identifikator des angegebenen Symbols aus dem Indikator bestimmen, der sich auf dem Chart eines anderen Symbols befindet? Ich brauche zum Beispiel den Indikator auf dem EURJPY-Chart, um ein Objekt auf dem USDJPY-Chart zu erstellen. Wie kann ich einen USDJPY-Chartbezeichner definieren?

 
khorosh:

Das heißt, wenn Sie sich auf das Fenster eines anderen offenen Terminals beziehen wollen, sollten Sie chartHandle ? Und wie lässt sich die Chart-ID des angegebenen Symbols anhand des Indikators im Chart eines anderen Symbols ermitteln? Ich brauche zum Beispiel den Indikator auf dem EURJPY-Chart, um ein Objekt auf dem USDJPY-Chart zu erstellen. Wie kann ich einen USDJPY-Chartbezeichner definieren?

In der ChartID()-Hilfe gibt es, glaube ich, ein Beispiel für eine Aufzählung aller Terminal-Charts.
 
Artyom Trishkin:
Ich glaube, die ChartID()-Hilfe enthält ein Beispiel für die Aufzählung aller Terminal-Charts.

Nein. Es ist leer. In der ChartNext-Hilfe finden Sie ein Beispiel. Okay, ich hab's. Keine weiteren Fragen. Ich danke Ihnen.

 
khorosh:

Wenn Sie also auf das Fenster eines anderen geöffneten Terminals zugreifen wollen, sollte chartHandle verwendet werden?

Wenn Sie nur in MQL arbeiten, wird chartHandle nicht benötigt. Eine solche Notwendigkeit kann beim Anschluss einer DLL entstehen.

 
Wie kann ich den Fensterindex in der FunktionObjectCreate() definieren?

boolObjectCreate(
longchart_id,// Kennung der Karte
stringobject_name,// Objektname
ENUM_OBJECTobject_type,// Objekttyp
intsub_window,// Fensterindex
datetimetime1,// Uhrzeit des ersten Ankerpunkts
doubleprice1,// Preis des ersten Ankerpunkts
...
datetimetimeN=0,//Zeit N-Punkt-Bindung
doublepriceN=0// Preis N-Ankerpunkt
);


 
khorosh:
Wie definiert man den Fensterindex in der FunktionObjectCreate()?




Sie ist nicht definiert, sondern festgelegt.

Unterfenster

[in] Nummer des Unterfensters des Diagramms. 0 bedeutet das Hauptfenster des Diagramms. Das angegebene Teilfenster muss existieren, andernfalls gibt die Funktion false zurück.

 

FensterFinden

WindowsTotal