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

 
Nerd Trader #:
Ja, in der Tat so viel wie 8 Stück, aber das Diagramm zeigt nicht, dass der Preis 0 ist egal, die Linie noch klammert sich an den Cursor (folgt ihm)

ObjectDelete nicht verwenden , da die Zeile jedes Mal auf "0" ausläuft

besser
      ObjectSetString(0,"line 1",OBJPROP_NAME,line_name);
      ObjectSetInteger(0,line_name,OBJPROP_COLOR,clrRed);
 
MakarFX #:

ObjectDelete nicht verwenden , da die Zeile jedes Mal auf "0" ausläuft

besser
Ich habe die Umbenennungsoption und ja, sie funktioniert. Warum werden im Fall von ObjectDelete() grüne und rote Linien in einer Instanz erzeugt und flackern nicht? Und gelbe Linie (Stop Loss), wenn bereits vorhanden ist, warum ist es unendlich wuchern, wenn es unter Bid ist?
 

0 bedeutet falsch. Alles, was nicht 0 ist, istwahr. Aber hat jemand über die Lesbarkeit eines solchen Codes nachgedacht, in dem alle möglichen Bedingungen vermischt sind?

if(!ObjectFind("Buy Stop"))

Es handelt sich nicht um einen booleschen Wert. Sie kann aber leicht in einen Booleschen Wert umgewandelt werden:

bool objectExist(const long _chartID, const string _name) { return(ObjectFind(_chartID, _name) >= 0); } // чётко определим условие существования объекта!
if (!objectExist(0, "Buy stop"))
  Print("Error! Object not found.")

Das Wichtigste ist also der richtige Ansatz beim Schreiben von Code. Dann werden Sienie solche Probleme haben.

 
Nerd Trader #:
Ich habe die Umbenennungsoption und ja, sie funktioniert. Warum werden im Fall von ObjectDelete() grüne und rote Linien in einer Instanz erzeugt und blinken nicht? Und die gelbe Linie, wenn sie schon eine hat, warum vermehrt sie sich dann unendlich?

Diese Zeilen sind in Ihrer Kontrolle.

if(id==CHARTEVENT_OBJECT_CLICK){

Und die Linien, die flackern, reagieren auf jedes OnChartEvent, weil

if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE))
 
Mihail Matkovskij #:

0 bedeutet falsch. Alles, was nicht 0 ist, istwahr. Aber hat sich jemand Gedanken über die Lesbarkeit eines solchen Codes gemacht, in dem alle möglichen Bedingungen vermischt sind?

Es handelt sich nicht um einen booleschen Wert. Sie kann aber leicht in einen Booleschen Wert umgewandelt werden:

Das Wichtigste ist also der richtige Ansatz beim Schreiben von Code. Dann werden Sienie solche Probleme haben.

return(ObjectFind(_chartID, _name) >= 0)

Und wenn das Objekt im Hauptfenster "0" ist, wird es false zurückgeben?

 
MakarFX #:

Und die Linien, die flackern, reagieren auf jedes OnChartEvent, weil.

Ich habe ihm gesagt: Taste gedrückt - Zeile erstellen, Taste losgelassen - löschen (dasselbe gilt für andere Arten von Objekten, mit denen eine Verbindung hergestellt werden kann). Aber er sagte: Es ist nichts, ich werde alles "normal" machen. :)

 
Nerd Trader #:

Und wenn das Objekt im Hauptfenster "0" ist, wird es false zurückgeben?

Das ist es, was Ihren Unwillen, die Dokumentation zu lesen, besiegen kann!

https://www.mql5.com/ru/docs/objects/objectfind

https://docs.mql4.com/ru/objects/objectfind

Rückgabewert

Bei Erfolg gibt die Funktion die Nummer des Unterfensters (0 bedeutet Hauptfenster) zurück, in dem sich das gefundene Objekt befindet. Wenn kein Objekt gefunden wird, gibt die Funktion eine negative Zahl zurück. Um weitere Informationen über denFehler zu erhalten, rufen Sie die FunktionGetLastError() auf.

Документация по MQL5: Графические объекты / ObjectFind
Документация по MQL5: Графические объекты / ObjectFind
  • www.mql5.com
ObjectFind - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
MakarFX #:

Diese Zeilen sind in Ihrer Kontrolle.

Und die Linien, die flackern, reagieren auf jedes OnChartEvent, weil

sowie die grüne Linie, im Allgemeinen reagieren alle Linien auch auf die Bewegung des Cursors. Ich habe gerade festgestellt, dass alle drei Linien im Spread-Bereich erstellt werden, weil die gelbe Linie "Sell Stop" die Bedingung if(price > Ask) für die grüne Linie "Buy Stop" (price < Bid) und für die graue Linie "not allowed"(price > Bid && price < Ask ) hat.
 
Nerd Trader #:

Und wenn das Objekt im Hauptfenster "0" ist, wird dann false zurückgegeben?

bool FindObject(string name)
  {
   if(ObjectFind(0,name)) return(false);
   return(true);
  }
 
Mihail Matkovskij #:

Ich habe ihm gesagt: Taste gedrückt - Zeile erstellen, Taste losgelassen - löschen (dasselbe gilt für andere Arten von Objekten, die angehängt werden können). Aber er sagte: Es ist nichts, ich werde es richtig machen. :)

Meinen Sie die Farbänderung über die Eigenschaft? Ich habe eine solche Option, ich muss verstehen, warum sie nicht funktioniert.

Mihail Matkovskij #:

Hier ist etwas, das Ihren Unwillen, die Dokumentation zu lesen, überwinden könnte?!

https://www.mql5.com/ru/docs/objects/objectfind

https://docs.mql4.com/ru/objects/objectfind

Was ist also falsch, wenn das Objekt im Hauptfenster "0" ist, gibt Ihre Funktion false zurück? Erklären Sie den Punkt mit >= 0... oder gleich Null