Fehler, Irrtümer, Fragen - Seite 1887

 
Vladimir Karputov:

Meines Erachtens haben Sie den Code, den ich Ihnen gezeigt habe, nicht überprüft. Sagen wir es mal so: Erst prüfen Sie es, dann stellen Sie die Frage erneut.

Ich brauche das nicht zu überprüfen, ich kann sehen, dass es das liefert, was es soll.

Ich sprach von der ersten Verwendung der Funktion

 
Alexandr Bryzgalov:

Ich brauche es nicht zu überprüfen, ich kann sehen, dass es das liefert, was ich brauche

Ich sprach von der ersten Variante der Verwendung der Funktion


Also gut. Beginnen wir am Heck.

1. positionGetInteger:

Die Funktion gibt die gewünschte Eigenschaft einer offenen Position zurück, die zuvor mit der Funktion...

Das heißt, vor der Verwendung von PositionGetInteger muss die Position zunächst ausgewählt werden.


2. Wir wählen die Position mit dem PositionGetTicket aus:

Rückgabewert.

Die Stelle Ticket. Im Falle einer erfolglosen Ausführung wird 0 zurückgegeben.


Und wo haben Sie eine Überprüfung (nach der Schleife), dass es von PositionGetTicket zurückgegeben wurde? Es gibt keine Prüfung, und dort wird übrigens "Null" zurückgegeben, d. h. PositionGetTicket wurde mit einem Fehler ausgelöst, was der Auswahl einer Position gleichkommt, die nicht existiert. Dann versuchen Sie, ohne das Ergebnis von PositionGetTicket zu überprüfen, die Eigenschaft der nicht vorhandenen Position zu erhalten. Und dort, in den Eigenschaften der nicht existierenden Position, entweder Müll oder nur Daten von Nullstrukturen.


Zusammenfassend lässt sich sagen, dass man nicht weiterkommt, wenn man nicht prüft, ob das PositionGetTicket "Null" zurückgibt.

 
Vladimir Karputov:


Also gut. Beginnen wir am Heck.

1. positionGetInteger:

Die Funktion gibt die gewünschte Eigenschaft einer offenen Position zurück, die zuvor mit der Funktion...

Das heißt, die Position muss zuerst ausgewählt werden, bevor PositionGetInteger verwendet werden kann.


2. Wir wählen die Position mit dem PositionGetTicket aus:

Rückgabewert.

Die Stelle Ticket. Im Falle einer erfolglosen Ausführung wird 0 zurückgegeben.


Und wo haben Sie eine Überprüfung (nach der Schleife), dass es von PositionGetTicket zurückgegeben wurde? Es gibt keine Prüfung, und dort wird übrigens "Null" zurückgegeben, d. h. PositionGetTicket wurde mit einem Fehler ausgelöst, was der Auswahl einer Position gleichkommt, die nicht existiert. Dann versuchen Sie, ohne das Ergebnis von PositionGetTicket zu überprüfen, die Eigenschaft der nicht vorhandenen Position zu erhalten. Und dort, in den Eigenschaften der nicht existierenden Position, entweder Müll oder nur Daten von Nullstrukturen.


Zusammenfassend lässt sich sagen, dass Sie nicht weiter kommen, wenn Sie nicht überprüfen, ob das PositionGetTicket "Null" zurückgibt.

Danke, sehr ausführlich und hilfreich.
 
Vladimir Karputov:


Okay, machen wir es so. Fangen wir am Heck an.

1. positionGetInteger:

Die Funktion gibt die gewünschte Eigenschaft einer offenen Position zurück, die zuvor mit der Funktion...

Das heißt, die Position muss zuerst ausgewählt werden, bevor PositionGetInteger verwendet werden kann.


2. Wir wählen die Position mit dem PositionGetTicket aus:

Rückgabewert.

Die Stelle Ticket. Im Falle einer erfolglosen Ausführung wird 0 zurückgegeben.


Und wo haben Sie eine Überprüfung (nach der Schleife), dass es von PositionGetTicket zurückgegeben wurde? Es gibt keine Prüfung, und dort wird übrigens "Null" zurückgegeben, d. h. PositionGetTicket wurde mit einem Fehler ausgelöst, was der Auswahl einer Position gleichkommt, die nicht existiert. Dann versuchen Sie, ohne das Ergebnis von PositionGetTicket zu überprüfen, die Eigenschaft der nicht vorhandenen Position zu erhalten. Und dort, in den Eigenschaften der nicht existierenden Position, entweder Müll oder nur Daten von Nullstrukturen.


Zusammenfassend lässt sich sagen, dass man ohne die Überprüfung des PositionGetTicket auf die Rückgabe von "Null" nicht weiter kommt.

Sie brauchen sich nicht zu rechtfertigen)

Das ist nicht die Frage.

richtig gelesen: Ist es in Ordnung, wenn eine Funktion in verschiedenen Situationen denselben Wert zurückgibt?

Ist es in Ordnung, dass die Funktion das tut?
 
Vladimir Karputov:

Zusammenfassend lässt sich sagen, dass Sie nicht weitermachen können, ohne zu prüfen, ob PositionGetTicket den Wert "Null" liefert.

Sie können

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

fxsaber, 2017.05.12 11:19

ist es logisch, eine Prüfung durchzuführen (PositionGetInteger(POSITION_TICKET) > 0).
 
Alexandr Bryzgalov:

diese Funktion in verschiedenen Situationen den gleichen Wert ergibt?

Ist es richtig, dass die Funktion dies tut?
Leider ja.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

fxsaber, 2017.05.12 11:29

Ja, aber jeder andere Wert wäre ebenfalls irreführend.
 
Alexandr Bryzgalov:

1. Sie müssen sich nicht rechtfertigen.)

Das ist nicht der Punkt

2. richtig gelesen: ist es in Ordnung, wenn eine Funktion in verschiedenen Situationen denselben Wert zurückgibt?

Ist es in Ordnung, wenn eine Funktion dies tut?


1. Sie sind eine unhöfliche Person, die auch einen Fehler in Ihrem Code gemacht hat, dies aber nicht zugeben will.

2. Die Funktion arbeitet absolut korrekt. Denn sie (PositionGetInteger(POSITION_TYPE)) kann nur 2 Werte zurückgeben - entweder POSITION_TYPE_BUY oderPOSITION_TYPE_SELL. Aber ohne eine Position auszuwählen (und Sie wählen sie nicht aus - Sie prüfen nicht, was genau ausgewählt wurde) , etwas von (PositionGetInteger(POSITION_TYPE)) zu verlangen, ist leichtsinnig.


Fazit: Wenn Ihr Code mit einem logischen Fehler geschrieben ist, haben Sie einfach kein Recht, etwas von Systemfunktionen zu verlangen.

 
Vladimir Karputov:

Fazit: Wenn Ihr Code mit einem logischen Fehler geschrieben ist, haben Sie einfach kein Recht, etwas von den Systemfunktionen zu verlangen.

Ein gutes Beispiel dafür ist, dass die Frage nie beantwortet wurde.
 
Vladimir Karputov:


1. Sie sind eine unhöfliche Person, die einen Fehler im Code gemacht hat, dies aber nicht zugeben will.

2. Die Funktion arbeitet absolut korrekt. Denn sie (PositionGetInteger(POSITION_TYPE)) kann nur ZWEI Werte zurückgeben - entweder POSITION_TYPE_BUY oderPOSITION_TYPE_SELL. Aber ohne eine Position auszuwählen (und Sie wählen sie nicht aus - Sie prüfen nicht, was genau ausgewählt wurde) , etwas von (PositionGetInteger(POSITION_TYPE)) zu verlangen, ist leichtsinnig.


Fazit: Wenn Ihr Code mit einem logischen Fehler geschrieben ist, haben Sie einfach kein Recht, etwas von Systemfunktionen zu verlangen.

Es ist nicht meine Schuld, dass jemand das Problem nicht erkennt.

Die Tatsache, dass es sich um einen absichtlichen Fehler im Code handelt, wird anerkannt.

Und ich weiß, wie man es repariert.

Aber die Frage ist eine andere.

 

Warum gibt die Funktion PositionGetInteger(POSITION_TYPE) einen Kaufwert (gleich 0) statt eines Fehlerwertes (gleich 0) zurück, wenn die Eingabeparameter nicht korrekt sind?

Grund der Beschwerde: