Fehler, Irrtümer, Fragen - Seite 123

 

Lassen Sie die Entwickler das Problem lösen. Hier ist ein Screenshot von 3 Durchläufen dieses Skripts.

Bei mir funktioniert das nicht.

 
Prival:

Fehler - früher hat es funktioniert, jetzt nicht mehr.

Vielen Dank für Ihre Nachricht.

Wir werden weiter suchen.

 

Ich habe einen kleinen Fehler in der PrintCheckResult-Methode gefunden (Trade.mqh-Datei, Trade-Klassen, CTrade-Klasse).

void CTrade::PrintCheckResult(void) const
{
printf("CheckResult");
// printf("%d,%f,%f,%f,%f,%f,%f,%f,'%s'", - der vorletzte Parameter ist unnötig
printf("%d,%f,%f,%f,%f,%f,'%s'",
m_check_result.retcode,m_check_result.balance,m_check_result.equity,
m_check_result.margin,m_check_result.margin_free,m_check_result.margin_level,
m_check_result.comment);
}

Anstelle von String: printf("%d,%f,%f,%f,%f,%f,%f,'%s'", - von mir auskommentiert

sollte eine Zeile stehen: printf("%d,%f,%f,%f,%f,%f,%f,%f,'%s'",

Ich habe überprüft, dass die korrigierte Funktion korrekt funktioniert.

 
Prival:

Fehler - früher hat es funktioniert, jetzt nicht mehr.

Vielen Dank für die Nachricht. Wird mit dem nächsten Update verfügbar sein. Damit es in der aktuellen Version funktioniert, verwenden Sie explizites Casting für Konstante oder Multiplikation im Allgemeinen

void OnStart()
  {
  // вот так работает
     Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
  // а вот так нет (а раньше работало)  
     datetime    time_end=0;
     time_end=TimeCurrent()+(long) 2*PeriodSeconds(PERIOD_D1);
     Print(time_end);
  }
 
retired:

Ich habe einen kleinen Fehler in der PrintCheckResult-Methode gefunden (Trade.mqh-Datei, Trade-Klassen, CTrade-Klasse).


Vielen Dank für diese Nachricht.

Sie wird bald behoben sein.

 
mql5:

Vielen Dank für Ihre Nachricht. Wird mit dem nächsten Update verfügbar sein. Damit es in der aktuellen Version funktioniert, verwenden Sie explizites Casting für Konstanten oder Multiplikation im Allgemeinen

Danke. Wenn ich es richtig verstanden habe, lag es an der Typenumwandlung. Schade, dass es diese Meldung zur Kompilierzeit nicht gibt, sie wäre leichter zu finden gewesen
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Prival:
Ich danke Ihnen. Wenn ich es richtig verstanden habe, lag es an der Typenumwandlung. Schade, dass es keine solche Meldung zur Kompilierzeit gibt, das wäre einfacher zu finden
Ihr Code ist korrekt, es gibt nichts zu beanstanden. Der Fehler liegt tatsächlich in der Operandenkonvertierung unter x64 und wurde behoben. Warten Sie auf ein Update.
 

ENUM_TRADE_RETURN_CODES-Fehler müssen richtig interpretiert werden, um sie korrekt zu behandeln. Gibt es Material, um sie im Detail zu beschreiben?

Insbesondere die folgenden Fehler werden nicht vollständig verstanden:

10008

TRADE_RETCODE_PLACED

Auftrag erteilt

10021

HANDELS_RETCODE_PREIS_AUS

Keine Angebote zur Bearbeitung der Anfrage verfügbar


10028

TRADE_RETCODE_LOCKED

Anfrage zur Bearbeitung gesperrt

10029

HANDELS_RETCODE_GEFROREN

Auftrag oder Position eingefroren

Kann jemand bei diesem Problem helfen?

 
retired:

ENUM_TRADE_RETURN_CODES-Fehler müssen richtig interpretiert werden, um sie korrekt zu behandeln. Gibt es Material, um sie im Detail zu beschreiben?

Insbesondere die folgenden Fehler werden nicht vollständig verstanden:

10008

TRADE_RETCODE_PLACED

Auftrag erteilt

10021

HANDELS_RETCODE_PREIS_AUS

Keine Angebote zur Bearbeitung der Anfrage verfügbar


10028

TRADE_RETCODE_LOCKED

Anfrage zur Bearbeitung gesperrt

10029

HANDELS_RETCODE_GEFROREN

Auftrag oder Position eingefroren

Kann jemand bei diesem Problem helfen?

Alle oben genannten Angaben beziehen sich auf die Codes, die vom Server als Antwort auf die Anfrage des Terminals zurückgegeben werden. Deshalb sind alle Angaben im Abschnitt "Trade Server Return Codes" aufgeführt.

Es wäre logisch anzunehmen, dass die Liste mehr als nur Fehler enthält.

Nun der Reihe nach.

In Bezug auf

10008

TRADE_RETCODE_PLACED

Auftrag erteilt


Es wäre logisch anzunehmen, dass es sich bei dieser Antwort nicht um einen Fehler handelt, sondern der Kunde (das Handelsterminal) lediglich darüber informiert wird, dass der Auftrag erfolgreich erteilt wurde.

In diesem Fall gibt es drei mögliche Lösungen:

1. Sie müssen die Antwort gar nicht verarbeiten;

2. die Auftragserteilung im OnTrade()-Block verarbeiten - durchaus akzeptabel, aber meiner Meinung nach nicht sehr korrekt;

Meiner Meinung nach ist dies der beste Weg, um einen mechanischen Handel abzuwickeln.

PS

Ich ziehe es vor, die Antworten des Servers am Orderplatz zu verarbeiten und das Ergebnis der Aktionen eines Händlers, Servers oder anderer Expert Advisors in OnTrade() abzufangen.

In OnTrade können Sie zum Beispiel die Handelsoperationen eines Händlers (Setzen oder Löschen eines Auftrags sowie Operationen mit Positionen) erfassen.


In Bezug auf


10029

HANDELS_RETCODE_GEFROREN

Auftrag oder Position ist eingefroren


Es gibt ein bestimmtes Niveau, bei dem eine Position oder ein Auftrag "eingefroren" sind (jegliche Operationen mit ihnen sind verboten).

Dieses Niveau ist ein Abstand zum aktuellen Kurs, bei dem der Server jegliche Aktionen mit dem Auftrag oder der Position verbietet. Dieser Abstand wird in Pips gemessen und ist für jedes Symbol festgelegt.

Sie kann mit SymbolInfoInteger() mit demParameter SYMBOL_TRADE_FREEZE_LEVELermittelt werden.

Wenn Sie eine solche Antwort vom Server erhalten, sollten Sie eine von zwei Möglichkeiten abwarten:

1. Der Kurs hat sich nicht um den erforderlichen Abstand (größer als in den Symboleigenschaftenangegeben )bewegt ;

2. der Auftrag oder die Position unter den darin festgelegten Bedingungen nicht funktioniert.


In Bezug auf

10021

HANDELS_RETCODE_PREIS_AUS

Keine Kostenvoranschläge zur Bearbeitung der Anfrage


Wenn Sie diese Antwort erhalten, sollten Sie wahrscheinlich den Namen des Symbols überprüfen (nur für den Fall), sicherstellen, dass das Symbol ausgewählt ist (wichtig für Tester und Multicasts), die Verfügbarkeit der Historie überprüfen, auch auf dem Server (falls sie heruntergeladen werden muss), und wahrscheinlich sicherstellen, dass der Markt geöffnet ist und der Handel mit dem Symbol möglich ist.

PS

Obwohl es hier notwendig sein wird, bei den Entwicklern anzugeben


Was ist mit

10028

TRADE_RETCODE_LOCKED

Antrag zur Bearbeitung gesperrt


Dies ist wahrscheinlich die spezifischste der oben aufgelisteten Antworten des Servers... es ist wahrscheinlicher, dass eine Klärung von den Entwicklern benötigt wird (ich gehe einfach davon aus, dass Sie wahrscheinlich eine gewisse Zeit warten sollten)...

 
Interesting:

Betreffend


10029

HANDELS_RETCODE_GEFROREN

Auftrag oder Position eingefroren


Es gibt ein bestimmtes Niveau, unterhalb dessen eine Position oder ein Auftrag "eingefroren" werden (jegliche Aktionen mit ihnen sind verboten).

Dieses Niveau ist ein Abstand zum aktuellen Kurs, bei dem der Server jegliche Aktionen mit dem Auftrag oder der Position verbietet. Dieser Abstand wird in Pips gemessen und ist für jedes Symbol festgelegt.

Sie kann mit SymbolInfoInteger() mit demParameter SYMBOL_TRADE_FREEZE_LEVELermittelt werden.

Wenn Sie eine solche Antwort vom Server erhalten, sollten Sie eine von zwei Möglichkeiten abwarten:

1. Der Kurs hat sich nicht um den erforderlichen Abstand (größer als in den Symboleigenschaftenangegeben )bewegt ;

2. der Auftrag oder die Position die darin festgelegten Bedingungen nicht erfüllt hat.


Danke für die ausführliche Antwort, ich verstehe den Code "10029: TRADE_RETCODE_FROZEN: Order oder Position ist eingefroren".

Zu den anderen haben wir jedoch noch Fragen (ich möchte die genaue Antwort wissen und keine Vermutungen anstellen):

10008

TRADE_RETCODE_PLACED

Auftrag erteilt

10021

HANDELS_RETCODE_PREIS_AUS

Keine Angebote zur Bearbeitung der Anfrage verfügbar


10028

TRADE_RETCODE_LOCKED

Der Antrag ist für die Bearbeitung gesperrt

Insbesondere ist nicht ganz klar, was "10008: Order has been placed" bedeutet, denn wenn die Bestellung auf dem Server in die Warteschlange gestellt wird, wird ihr ein Ticket zugewiesen und der Code "10009: TRADE_RETCODE_DONE: Request executed" zurückgegeben.