Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Lassen Sie die Entwickler das Problem lösen. Hier ist ein Screenshot von 3 Durchläufen dieses Skripts.
Bei mir funktioniert das nicht.
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.
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
{
// вот так работает
Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
// а вот так нет (а раньше работало)
datetime time_end=0;
time_end=TimeCurrent()+(long) 2*PeriodSeconds(PERIOD_D1);
Print(time_end);
}
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.
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
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
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?
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)...
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.