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

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes

MakarFX, 2021.12.06 12:14

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

Und im Falle eines Fehlers, was wird Ihre Funktion zurückgeben, true?

 
Mihail Matkovskij #:

Und im Falle eines Fehlers, was wird Ihre Funktion zurückgeben, true?!

Welcher Fehler? Nennen Sie mir ein Beispiel.
 
MakarFX #:

Ja, das sollte funktionieren.

 
Nerd Trader #:

Ich habe eine solche Variante, ich muss verstehen, warum diese nicht funktioniert.

Es funktioniert, reagiert aber auf jedes OnChartEven, d.h. löscht->erstellt mit Preis "0"->bewegt sich zum Cursor. Daher das Flackern

 
Nerd Trader #:

Sprechen Sie von einer Farbänderung über eine Eigenschaft? Ich habe diese Option, ich muss verstehen, warum sie nicht funktioniert.

Nein. Es ist so, dass Objekte nicht flackern und erscheinen/verschwinden, nicht wie verbrüht herumspringen und die CPU keine Geräusche macht...

Also, was ist falsch, wenn das Objekt im Hauptfenster "0" ist, wird Ihre Funktion false zurückgeben? Erklären Sie den Punkt mit>=0... oder gleich Null.

Sehen Sie genau hin.

if (ObjectFind(chart, name) >= 0)

Bei welchem Wertebereich wird die Bedingung wahr?

 
MakarFX #:
Welcher Fehler? Nennen Sie ein Beispiel.

Was ist normalerweise wahr? Alles, was nicht 0 ist (ich habe es oben erwähnt). Und Sie haben nur true, wenn die Bedingung bei 0 false zurückgibt. Das Objekt ist im Keller (ObjectFind(ch, name) > 0) - false. Aber Fehler (-1) ist wahr.

Hier ist also die richtige Variante:

bool objectExist(const long _chartID, const string _name) { return(ObjectFind(_chartID, _name) >= 0); } // чётко определим условие существования объекта!
 
Mihail Matkovskij #:

Nein. Es geht darum, dass Objekte nicht flackern und erscheinen/verschwinden, wie verbrüht herumspringen und die CPU keine Geräusche macht...

Passen Sie gut auf.

Bei welchem Wertebereich wird die Bedingung wahr?

Und wenn
ObjectFind(chart, name)=-1

was dann?

 
MakarFX #:

Es funktioniert, reagiert aber auf jedes OnChartEven, d.h. löscht->erstellt mit Preis "0"->bewegt sich zum Cursor. Daher auch das Flimmern.

Warum? Die Bedingungen sind identisch, nur die Umkehrung (Preis > Ask) für gelb und (Preis < Bid) für grün.


Mihail Matkovskij #:

Es verhindert, dass Objekte flackern und erscheinen/verschwinden, wie verbrühte Tiere umherhüpfen und CPU-Rauschen verursachen...

Aber die grünen und roten Linien werden aus irgendeinem Grund nur in einem Fall erzeugt und flackern nicht, wenn der Cursor bewegt wird.


Mihail Matkovskij #:

Schauen Sie genau hin.

Bei welchem Wertebereich wird die Funktion true zurückgeben?

von null auf aufwärts?
 
Mihail Matkovskij #:

Was ist normalerweise wahr? Alles, was nicht 0 ist (ich habe es oben erwähnt). Und nur wenn die Bedingung false mit dem Wert 0 zurückgibt, ist sie wahr.

Schauen Sie noch einmal genau hin

 
MakarFX #:

Schauen Sie noch einmal genau hin.

Die Nachricht wurde geändert. Testen Sie Ihre und meine Funktion mit der falschen Chart-ID und wenn das Objekt im Unterfenster erstellt wird. Und sehen Sie, was Ihre Funktion zurückgibt und was meine zurückgibt. Und lesen Sie die Dokumentation sorgfältig. Alle Links und Zitate sind oben angegeben.