Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1317

 
Vladimir Karputov:

Siehe die Fehler:

1. Geben Sie das Diagrammsymbol immer ausdrücklich an (ja, Sie können sich auf die Dokumentation verlassen, aber es ist IMMER besser, es ausdrücklich anzugeben).

2. String macht keinen Sinn - da preff+"hhh" niemals gleich Symbol() sein wird


Hinzugefügt: Es ist besser, diesen Ansatz zu verfolgen - immer eine Linie auf dem Diagramm, ändern Sie einfach die Linie Preis, wenn Sie Charts wechseln.

Wenn explizite Warnung: implizite Umwandlung von 'string' in 'number'

Das Problem besteht im Wesentlichen darin, dass die Zeile nicht dort angezeigt wird, wo sie erstellt wurde.

Wenn ich sie im Werkzeug zum Preis von 255 anlege, warum wird sie dann bei 255 angezeigt, wenn ich ein anderes Werkzeug mit dem aktuellen Preis von 310 lade?

Bitte sagen Sie mir, wie ich die Zeile speichern und dort anzeigen kann, wo sie erstellt wurde.
 
serg_V777:

Wenn es explizit eine Warnung ausgibt: implizite Umwandlung von 'string' in 'number'

Das Problem besteht im Wesentlichen darin, dass die Zeile nicht dort angezeigt wird, wo sie erstellt wurde.

Wenn ich sie im Werkzeug zum Preis von 255 anlege, warum wird sie dann bei 255 angezeigt, wenn ich ein anderes Werkzeug mit dem aktuellen Preis von 310 lade?

Bitte teilen Sie mir mit, wie ich die Zeile speichern und dort anzeigen kann, wo sie erstellt wurde.

Sie haben mir Ihr Codeschnipsel gezeigt - ich habe Ihnen Ihr Snippet gegeben. Deklarieren Sie die Variablen und Sie werden keine Fehler haben.

Ich kann Ihre Logik mit den Zeilen nicht verstehen. Versuchen Sie, Ihre Maßnahmen detailliert zu beschreiben - und vor allem, WARUM Sie sie durchführen müssen.


In Ihrem Code verstehe ich nicht, warumChartSymbol

 
Vladimir Karputov:

Sie haben mir ein Stückchen Code gezeigt - ich habe Ihnen Ihr Stückchen gegeben. Deklarieren Sie die Variablen und es werden keine Fehler auftreten.

Ich verstehe Ihre Logik mit den Zeilen nicht. Versuchen Sie, Ihre Aktionen detailliert zu beschreiben - und vor allem, WARUM Sie das tun sollten.


In Ihrem Code verstehe ich nicht, warum ichChartSymbol benötige.

void OnChartEvent(const int id,           // идентификатор события   
                  const long& lparam,     // параметр события типа long 
                  const double& dparam,   // параметр события типа double 
                  const string& sparam) { // параметр события типа string 
 
 
  preff=ChartSymbol( NULL);
  price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW); 
 if(id == CHARTEVENT_OBJECT_CLICK && sparam == "dz_draw")// Нажатие кнопки   
  {   
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;    
 ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrBlack); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_STYLE,0); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_WIDTH,3); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_BACK,false); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTED,true); 
   ObjectSetInteger(0,"dz_draw"   ,OBJPROP_STATE,false);
   }
}

Also erstelle ich eine Linie zum Preis von 277 auf dem Gazp-Chart.

Wenn ich sie im gleichen Fenster auf Sber ändere, wird die auf Gazp erstellte Zeile bei 277 angezeigt...

Wenn ich eine Sber-Linie bei 310 erstelle , erhalte ich zwei Linien auf dem Diagramm - eine richtige (erstellt, wo sie benötigt wird und was sie kostet) und die zweite falsche - nicht von diesem Diagramm ....

Wenn ich das Werkzeug wechsle und Linien in der Preisspanne von 200 bis 400 erzeuge und dann zum Gazp-Diagramm zurückkehre, bringe ich sowohl Menschen als auch Pferde durcheinander :),

Aber ich brauche nur eine einzige (vielleicht ein paar horizontale Linien), die dort erstellt wird, wo und wann ich sie brauche.

 
serg_V777:

Ich erstelle also eine Linie bei 277 im Gazp-Diagramm...

Beim Wechsel im gleichen Fenster auf Sber wird die auf Gazp erstellte Zeile bei 277 angezeigt...

Wenn ich und auf Sber die Linie auf 310 erhalte ich zwei Linien auf dem Diagramm - eine korrekte (erstellt, wo notwendig und für das, was es notwendig ist) und zweite falsch - nicht von dieser Tabelle....

Wenn ich das Werkzeug wechsle und Linien in der Preisspanne von 200 bis 400 erzeuge und dann zum Gazp-Diagramm zurückkehre, bringe ich sowohl Menschen als auch Pferde durcheinander :),

Aber es ist die einzige, die ich brauche (vielleicht ein paar horizontale Linien), und sie wird erstellt, wo und wann ich sie brauche.

ChartSymbol

Lesen Sie die Hilfe. Verwenden Sie diesen Operator nach der Hilfe nicht mehr - Sie brauchen ihn nicht mehr.


Sie benötigen den folgenden Algorithmus: für jedes Zeichen, um den Preis zu speichern. Der Preis wird in globalen Variablen des Terminals gespeichert (der Name der globalen Variablen ist der Symbolname). Als Nächstes müssen Sie 'CHARTEVENT_OBJECT_CHANGE' und'CHARTEVENT_OBJECT_DRAG' bedienen und den Preis erneut in globalen Variablen speichern.

Es gibt auch eine Menge Nuancen zu lösen: zum Beispiel - es gibt eine globale Variable und keine Linie auf dem Diagramm...

 
User_mt5:
Ich danke Ihnen vielmals. Sie haben mir wirklich geholfen.

Und wo sonst als in der Mitte der Liste der technischen Indikatoren könnte sich diese Funktion befinden).

Können Sie es nicht tun, ohne sarkastisch zu sein?

Sie scheinen die Dokumentation überhaupt nicht zu lesen... Und doch reagieren Sie auf Hinweise, als wären Sie das Zentrum des Universums... Nur ein ungebildeter, hilfloser Nabel...

 
Vitaly Muzichenko:

Ich danke Ihnen!

Es gibt keine Möglichkeit, dies mit Standardwerkzeugen zu tun.

Ohne die Verwendung von System-DLLs geht es nicht.

Ich habe eine ganze Bibliothek zu diesem Zweck veröffentlicht )

Für die 5er separat.
CDir (MT4) - класс для получения оглавления каталога
CDir (MT4) - класс для получения оглавления каталога
  • www.mql5.com
Класс CDir предназначен для получения сведений о файлах и папках вне "песочницы" MQL4 подобно команде MS-DOS Dir. Задействован вызов системных DLL, поэтому следует разрешить их использование.
 
Vladimir Karputov:

Lesen Sie die Hilfe. Verwenden Sie diesen Operator nach der Hilfe nicht mehr - Sie brauchen ihn nicht mehr.


Sie benötigen diesen Algorithmus: Für jedes Symbol müssen Sie einen Preis speichern. Der Preis wird in globalen Variablen des Terminals gespeichert (der Name der globalen Variable ist einfach der Name des Symbols). Als Nächstes müssen Sie 'CHARTEVENT_OBJECT_CHANGE' und'CHARTEVENT_OBJECT_DRAG' bedienen und den Preis erneut in globalen Variablen speichern.

Es gibt noch viele Feinheiten zu lösen: zum Beispiel gibt es eine globale Variable und keine Linie im Diagramm...

Vielen Dank für den Algorithmus.

Frage: Warum ist die Zeile in diesem Code gefunden und verfärbt?

if(preff+"hhh" == ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }

aber es so zu tun, wie es getan werden sollte, ist ein dunkler Wald, in den man gehen muss....

 
Mikhail Dovbakh:

Ohne die Verwendung von System-DLLs geht es nicht.

Ich habe eine ganze Bibliothek zu diesem Zweck veröffentlicht )

Für 5 Personen separat.

Toll, das ist genau das, was ich brauche!

 
Сергей Таболин:

Können Sie es nicht tun, ohne sarkastisch zu sein?

Sie scheinen die Dokumentation überhaupt nicht zu lesen... Und doch reagieren Sie auf Hinweise, als wären Sie das Zentrum des Universums... Nur ein ungebildeter und hilfloser Nabel...

Anstatt unhöflich zu sein, sollten Sie etwas Nützliches tun, um Himmels willen!

Und machen Sie sich nicht die Mühe, zu antworten und zu antworten! Ihre Meinung interessiert mich leider nicht!)

 

Bitte sagen Sie mir, von welcher Klasse ich Ihre Klasse erben soll, um alle Methoden dieser Klassen zu nutzen

alle Methoden dieser Klassen innerhalb Ihrer Klasse zu verwenden, ohne Objekte innerhalb Ihrer Klasse zu erstellen?



Grund der Beschwerde: