Alert: MT4 Terminal dupliziert von Experten gesendete Orders - Seite 6

 

Es gibt einen Unterschied zwischen

bool Buy_Ticket = OrderSend(........)

und dem, was Sie tun

bool Buy_Ticket = Ordersend > 0;   //SIMPLIFIED CODE FOR EASIER READING

Im ersten Fall wird bei einem fehlgeschlagenen Auftrag der Wert -1 zurückgegeben, aber das bool interpretiert dies als TRUE

im zweiten Fall verwenden Sie die Bedingung (Ordersend>0), um dem boolschen Wert true oder false zuzuweisen.

 
GumRai:


Es gibt einen Unterschied zwischen

und dem, was Sie tun

Im ersten Fall wird bei einem fehlgeschlagenen Auftrag der Wert -1 zurückgegeben, aber das bool interpretiert dies als TRUE

im zweiten Fall verwenden Sie die Bedingung (Ordersend>0), um dem boolschen Wert true oder false zuzuweisen.



Ist das wahr? Ich bin nicht in der Lage, es auf einem Demo-Konto (Live-Handel) jetzt zu testen, aber ich habe einige schnelle Überprüfung auf einem Backtest absichtlich unterbrechen OrderSend() mit ungültigen stoploss = ask (Marktpreis) für einen langen Handel. Das Ergebnis ist, dass OrderSend() wie erwartet eine "-1" zurückgibt und meine boolsche Variable Buy_Ticket ebenfalls falsch zurückgibt.


** EDIT **

Haben Sie meine Bedingung "> 0" hinter OrderSend() übersehen? Mein ursprünglicher Code zeigt:

bool Buy_Ticket = OrderSend(........) > 0;
 
BigFisherman:



Stimmt das? Ich bin jetzt nicht in der Lage, es auf einem Demokonto (Live-Handel) zu testen, aber ich habe eine schnelle Überprüfung in einem Backtest durchgeführt, bei dem ich OrderSend() absichtlich mit ungültigem Stoploss = Ask (Marktpreis) für einen Long-Handel unterbrochen habe. Das Ergebnis ist, dass OrderSend() wie erwartet eine "-1" zurückgibt und meine boolsche Variable Buy_Ticket ebenfalls falsch zurückgibt.


** EDIT **

Haben Sie meine Bedingungen "> 0" hinter OrderSend() übersehen? Mein Originalcode zeigt es:


Entschuldigung, ja, ich habe das >0 übersehen.

Ich vermute, dass es einfach eine so seltsame Art und Weise ist, dass ich es nicht bemerkt habe.

 

@ BigFisherman prüfen Sie den folgenden Code

   bool Buy_Ticket;
   int TicketNo = 123456789;
   Buy_Ticket = TicketNo > 0;
   Alert(Buy_Ticket);

siehe hier

Der Zuweisungsoperator kann mehrmals in einem Ausdruck verwendet werden. In diesem Fall wird die Verarbeitung des Ausdrucks von links nach rechts durchgeführt:

y=x=3;

Zuerst wird der Variablen x der Wert 3 zugewiesen, dann wird der Variablen y der Wert von x zugewiesen, also ebenfalls 3.

 
GumRai:


Sorry, ja, ich habe das >0 übersehen.

Ich vermute, dass es einfach eine so seltsame Art und Weise zu gehen, dass ich es nicht bemerkt habe.


Kein Problem.

Ich stimme zu, es ist keine gute Praxis, um es so zu codieren; Ich habe diesen Teil in der Anfangsphase meines MQL-Lernens codiert, aber da es für mich die ganze Zeit korrekt aussah, habe ich es sein lassen, bis dieses Problem mit dem doppelten Handel auftritt. Aber anscheinend, jetzt ist es "scheint, wie" mein ursprünglicher Code obwohl verwirrend scheint gültig, dann geht es zurück zu dem ursprünglichen Thema dieses Threads "Duplicate Trades..."; Dies könnte eine ernste & sehr unerwünschte "seltenen" Bug in mt4, die leider bin ich nicht in der Lage, aufgrund seiner seltenen Auftreten (1 in über 500+ Trades) zu reproduzieren.

Für jedermanns Info, aufgrund wie ich meine EA codiert (siehe mein 1. Beitrag in pg5), SL & TP wurde nur zugewiesen, nachdem es erfolgreiche OrderSend() (IMHO ist ziemlich narrensicher bis jetzt) erkannt. Und was geschah, um meine früheren doppelten Handel war es NIE gemacht, um SL & TP aus irgendeinem unbekannten Grund zu setzen; andere als OrderSend() Rückgabe "-1", sondern öffnete einen Handel trotzdem ODER "es" eröffnet 2 gleichzeitige Trades in einem OrderSend() ** nur meine eigene Spekulation **. Glücklicherweise war ich direkt vor meinem PC, als das passierte, so dass ich es einfach manuell schließen konnte; stellen Sie sich vor, was passieren würde, wenn ich in den Urlaub fahre.

 
qjol:

@ BigFisherman prüfen Sie den Code unten

   bool Buy_Ticket;
   int TicketNo = 123456789;
   Buy_Ticket = TicketNo > 0;
   Alert(Buy_Ticket);


Buy_Ticket gibt wie erwartet true zurück. Was wollen Sie damit sagen?

 

Ich versuche nicht zu sagen, ich sage nur!

wenn Sie es so verwenden

bool Buy_Ticket = OrderSend(........) > 0;

erhält man natürlich true, wenn OrderSend() ausgeführt wurde

denn zuerst wird geprüft, ob das Ergebnis von OrderSend > 0 ist

und dann wird es weitergegeben an

Buy_Ticket

aber es ist trotzdem nicht der richtige Weg, es zu behandeln

 
qjol:

Ich versuche nicht zu sagen, ich sage nur!

wenn Sie es so verwenden

erhält man natürlich true, wenn OrderSend() ausgeführt wurde

denn zuerst wird geprüft, ob das Ergebnis von OrderSend > 0 ist

und dann wird es weitergegeben an

aber es ist trotzdem nicht der richtige Weg, es zu behandeln



Jetzt weiß ich, wessen Beiträge ich in mql4 filtern muss, trotzdem vielen Dank für Ihren Beitrag.
 
y=x=3;
Ich habe versucht, das zu tun, aber MetaEditor hält mich immer auf, wenn ich versuche, zu kompilieren.
 
BigFisherman:


Jetzt weiß ich, wessen Beitrag ich in mql4 filtern muss,

Anmerkung: mein Benutzername in mql5 ist derselbe