if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { }
OrderSelect funktioniert nicht, es wählt nicht eine Bestellung (Ticket durch Index), um mit ihm zu arbeiten, einfaches Beispiel im Anhang und es funktioniert nicht auf mt5 aus irgendeinem Grund.
Ihr Code wird nicht auf MT4 funktionieren, wie wir es gerne hätten. Denn es gibt einen Fehler in ihm - Sie setzen Ihre Positionen auf Null majic, aber vergleichen Sie es mit einem anderen Wert.
Danke, ich entschuldige mich, es ist einfach so passiert, dass ich versucht habe, einen EA in die mt5-Version zu übersetzen, und es hat mich viel Zeit gekostet, und die Handelslogik stimmte nicht überein, ich habe Magic und alles, was es beeinflussen könnte, überprüft, also habe ich ein einfaches Beispiel geschrieben und es hat nicht funktioniert. Aber dann habe ich meinen Fehler gefunden, und dieses Beispiel oben hat nichts damit zu tun. Ich wollte meinen Beitrag löschen, aber ich hatte keine Zeit.
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { }
OrderSelect funktioniert nicht wählt nicht eine Bestellung (Ticket von Index), um mit ihm zu arbeiten, einfaches Beispiel im Anhang und es funktioniert nicht auf mt5 aus irgendeinem Grund
Der Fehlercode ist in der MqlTradeResult-Struktur enthalten, ich kann den obigen Code im MT5 nicht verwenden, ohne auf das Ergebnis zugreifen zu können. Wie kann ich mt4orders.mqh modifizieren, um Trade-Server-Fehler zurückzugeben? danke
Der Fehlercode ist in der MqlTradeResult-Struktur enthalten, ohne Zugriff auf das Ergebnis kann ich den obigen Code im MT5 nicht verwenden. Wie kann ich mt4orders.mqh so modifizieren, dass es Trade-Server-Fehler zurückgibt? danke
Sie können GetLastError mehr Werte zurückgeben lassen - ergänzen Sie es mit Codes aus MqlTradeResult.
D.h. wenn beim Schließen einer Bestellung ein Fehler auftritt, gibt GetLastError() den Fehlercode (des Handelsservers) zurück, auch wenn wir MqlTradeResult Result nicht überprüfen; Result.retcode in OrderSend(Request, Result)?
Aliaksandr Kryvanos: D.h. wenn beim Schließen einer Order ein Fehler auftritt, gibt GetLastError() den Fehlercode (des Trade Servers) zurück, auch wenn wir MqlTradeResult Result nicht prüfen; Result.retcode in OrderSend(Request, Result)?
Ich verstehe nicht, was der hervorgehobene Teil bedeutet.
es war in der EA für mt4
Sie sagen, es sei nicht schwer zu implementieren, aber in der Tat kann GetLastError() einen Trade-Server-Fehler zurückgeben, wenn die Order nicht gesendet wurde, ohne die MqlTradeResult-Struktur zu analysieren.
Sie sagen, es sei nicht schwer zu implementieren, aber in der Tat kann GetLastError() einen Trade-Server-Fehler zurückgeben, wenn die Order nicht gesendet wird, ohne die MqlTradeResult-Struktur zu analysieren.
Aber ist das notwendig, wenn GetLastError() so funktionieren kann, wie es ist?
Ich verstehe Sie nicht. Ihre Implementierung in if enthält einen Fehler. Außerdem gibt es so etwas wie TRADE_RETCODE_DONE_PARTIAL - es ist eine erfolgreiche Ausführung von OrderSend.
Und selbst wenn Sie Ihren Code korrigieren, wird er nur eine Fehlermeldung protokollieren (und jemand anderes möchte sie vielleicht nicht jedes Mal sehen). Aber es wird NICHT in MQL verfügbar sein.
Ich sehe, können Sie mir eine Idee geben, wie GetLastError() zubekommen, um Handel Server-Fehler als auch ausgeben, ich würde es selbst schreiben, wenn Sie nicht Zeit noch haben. Danke
Auswahl nach Symbol und Majic funktioniert nicht
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
OrderSelect funktioniert nicht, es wählt nicht eine Bestellung (Ticket durch Index), um mit ihm zu arbeiten, einfaches Beispiel im Anhang und es funktioniert nicht auf mt5 aus irgendeinem Grund.
Auswahl nach Symbol und Majic funktioniert nicht
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
OrderSelect funktioniert nicht wählt nicht eine Bestellung (Ticket von Index), um mit ihm zu arbeiten, einfaches Beispiel im Anhang und es funktioniert nicht auf mt5 aus irgendeinem Grund
Hallo, hier ist eine Frage, die ich habe, wie kann ich Daten über Fehler beim Senden von Aufträgen für MT5 erhalten, in MT4 Version sieht es so aus
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
Der Fehlercode ist in der MqlTradeResult-Struktur enthalten, ich kann den obigen Code im MT5 nicht verwenden, ohne auf das Ergebnis zugreifen zu können. Wie kann ich mt4orders.mqh modifizieren, um Trade-Server-Fehler zurückzugeben? danke
Hallo, hier ist eine Frage, die ich habe, wie kann ich Daten über Fehler beim Senden von Aufträgen für MT5 erhalten, in MT4 Version sieht es so aus
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
Der Fehlercode ist in der MqlTradeResult-Struktur enthalten, ohne Zugriff auf das Ergebnis kann ich den obigen Code im MT5 nicht verwenden. Wie kann ich mt4orders.mqh so modifizieren, dass es Trade-Server-Fehler zurückgibt? danke
D.h. wenn beim Schließen einer Order ein Fehler auftritt, gibt GetLastError() den Fehlercode (des Trade Servers) zurück, auch wenn wir MqlTradeResult Result nicht prüfen; Result.retcode in OrderSend(Request, Result)?
Ja, das ist nicht schwer zu implementieren.
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
Ich verstehe nicht, was das Hervorgehobene bedeutet.
Ja, es ist nicht schwer zu implementieren.
Ich verstehe nicht, was der hervorgehobene Teil bedeutet.
es war in der EA für mt4
Sie sagen, es sei nicht schwer zu implementieren, aber in der Tat kann GetLastError() einen Trade-Server-Fehler zurückgeben, wenn die Order nicht gesendet wurde, ohne die MqlTradeResult-Struktur zu analysieren.
Sie können einfach eine Prüfung hinzufügen:
{
MqlTradeResult Result;
if (::OrderSend(Request, Result) || Result.retcode != TRADE_RETCODE_DONE)
{
Print("OrderSend() error: ", ResultRetcodeDescription(Result.retcode));
return(false);
}
else
{
return(true);
}
//return(MT4ORDERS::OrderSend(Request, Result) ? Result.retcode < TRADE_RETCODE_ERROR : false);
}
Aber ist das notwendig, wenn GetLastError() so funktionieren kann, wie es ist?
dies war beim mt4-Berater der Fall
Dann liegt ein Fehler in der Logik vor.
Sie sagen, es sei nicht schwer zu implementieren, aber in der Tat kann GetLastError() einen Trade-Server-Fehler zurückgeben, wenn die Order nicht gesendet wird, ohne die MqlTradeResult-Struktur zu analysieren.
Sie können einfach eine Prüfung hinzufügen:
{
MqlTradeResult Result;
if (::OrderSend(Request, Result) || Result.retcode != TRADE_RETCODE_DONE)
{
Print("OrderSend() error: ", ResultRetcodeDescription(Result.retcode));
return(false);
}
else
{
return(true);
}
//return(MT4ORDERS::OrderSend(Request, Result) ? Result.retcode < TRADE_RETCODE_ERROR : false);
}
Aber ist das notwendig, wenn GetLastError() so funktionieren kann, wie es ist?
Ich verstehe Sie nicht. Ihre Implementierung in if enthält einen Fehler. Außerdem gibt es so etwas wie TRADE_RETCODE_DONE_PARTIAL - es ist eine erfolgreiche Ausführung von OrderSend.
Und selbst wenn Sie Ihren Code korrigieren, wird er nur eine Fehlermeldung protokollieren (und jemand anderes möchte sie vielleicht nicht jedes Mal sehen). Aber es wird NICHT in MQL verfügbar sein.
Daher scheint die Variante, bei der GetLastError sowohl Standard-Laufzeitfehler als auch zusätzliche Trade-Server-Rückgabecodes zurückgibt, die optimalste zu sein.