Mir ist nicht ganz klar, dass im Unterthema "Begrenzung der Anzahl der Lots um ein Symbol" der Code der Funktion PositionVolume() zweimal angegeben ist. Gleich darunter steht die Beschreibung der Funktion NewOrderAllowedVolume() und deren Aufruf:
ok google, wie die Validierung zu passieren, nein nicht so, ich brauche ein Beispiel für eine einfache EA, die 100% passieren Validierung zu studieren seinen Code und vergleichen Sie es mit meinem eigenen zu finden, was ein Fehler sein kann, und noch besser, mehr Details über die Validierung - wie es geschieht, was es tut.
Das ist ein interessanter Artikel, leider gibt es zu viele Fehler (Tippfehler oder sogar logische Fehler im vorgeschlagenen Code), und es wird wahrscheinlich mehr Leute verwirren als ihnen an einigen Stellen helfen.
1°
//+------------------------------------------------------------------+//| Rückgabe des maximal erlaubten Volumens für eine Order auf das Symbol |//+------------------------------------------------------------------+double NewOrderAllowedVolume(string symbol)
{
double allowed_volume=0;
//--- die Begrenzung des maximalen Auftragsvolumensdouble symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- die Begrenzung des Volumens durch ein Symbol erhaltendouble max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);
//--- Ermitteln des Volumens der offenen Position für ein Symboldouble opened_volume=PositionVolume(symbol);
if(opened_volume>=0)
{
//--- wenn wir das Volumen ausgeschöpft habenif(max_volume-opened_volume<=0)
return(0);
//--- das Volumen der offenen Position übersteigt nicht max_volumedouble orders_volume_on_symbol=PendingsVolume(symbol);
allowed_volume=max_volume-opened_volume-orders_volume_on_symbol;
if(allowed_volume>symbol_max_volume) allowed_volume=symbol_max_volume;
}
return(allowed_volume);
}
Logischer Fehler. Wenn es noch keine Position gibt, muss man immer noch das anhängige Volumen prüfen und das erlaubte Volumen berechnen. Dieser Code gibt allowed_volume=0 zurück, wenn noch keine Position geöffnet ist, ohne die Pendings zu berücksichtigen.
2°
bool OrderModifyCheck(ulong ticket,double price,double sl,double tp)
{
//--- Bestellung nach Ticket auswählenif(orderinfo.Select(ticket))
{
//--- Punktgröße und Name des Symbols, für das ein schwebender Auftrag erteilt wurdestring symbol=orderinfo.Symbol();
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- prüfen, ob es Änderungen im offenen Preis gibtbool PriceOpenChanged=(MathAbs(orderinfo.PriceOpen()-price)>point);
//--- prüfen, ob es Änderungen in der StopLoss-Ebene gibtbool StopLossChanged=(MathAbs(orderinfo.StopLoss()-sl)>point);
//--- prüfen, ob es Änderungen in der Takeprofit-Stufe gibtbool TakeProfitChanged=(MathAbs(orderinfo.TakeProfit()-sl)>tp);
//--- wenn es Änderungen in den Ebenen gibtif(PriceOpenChanged || StopLossChanged || TakeProfitChanged)
return(true); // Reihenfolge kann geändert werden //--- es gibt keine Änderungen in den Ebenen Open, StopLoss und Takeprofitelse//--- Benachrichtigung über den FehlerPrintFormat("Order #%d already has levels of Open=%.5f SL=.5f TP=%.5f",
ticket,orderinfo.StopLoss(),orderinfo.TakeProfit());
}
//--- zum Ende gekommen, keine Änderungen für den Auftragreturn(false); // Änderungen sind sinnlos
}
Ein weiterer logischer Fehler. Das Ändern eines SL/TP um 1 Punkt ist erlaubt. Es sollte >= sein.
+ Tippfehler, sollte "-tp)>=Punkt);" sein
+ fehlender Parameter (PrintFormat hat für %, aber nur 3 Parameter sind vorgesehen).
Einige andere Kommentare zu diesem Artikel, aber diesmal nicht auf Fehler bezogen, sondern mehr auf meine persönliche Meinung:
Access violation
Dieser Fehler tritt auf, wenn versucht wird, Speicher zu adressieren, auf den der Zugriff verweigert wird. In jedem solchen Fall ist es notwendig, die Entwickler über den Service Desk in Ihrem Profil oder über die Seite Kontakte zu kontaktieren.
Lustigerweise hat dies nichts in einem Artikel über Benutzer (Programmierer) Fehler zu tun. Eine Zugriffsverletzung bedeutet, dass es sich um einen Fehler im Code von Metaquotes handelt.
Diese Art von Fehlern ist relativ selten, viele von ihnen haben fertige Codes, die bei der Suche nach der Ursache helfen sollen.
Konstante
Wert
Beschreibung
ERR_INTERNAL_ERROR
4001
Unerwarteter interner Fehler
ERR_WRONG_INTERNAL_PARAMETER
4002
Falscher Parameter im inneren Aufruf der Client-Terminal-Funktion
Fehlercodes sind dazu da, um zu helfen, aber "Unerwarteter interner Fehler" ist völlig nutzlos und "Falscher Parameter im inneren Aufruf der Client-Terminal-Funktion" ist wirklich kryptisch (zumindest für mich).
Neueinsteigern wird empfohlen, alle Artikel über Fehlerbehandlung zu lesen, sowie Fragen im Forum und in den Kommentaren zu den Artikeln zu stellen. Andere, erfahrenere Mitglieder der MQL5.community werden Ihnen dabei helfen, unklare Punkte zu klären. Wir hoffen, dass die in diesem Artikel gesammelten Informationen Ihnen helfen werden, zuverlässigere Handelsroboter in kürzerer Zeit zu erstellen.
Der Markt ist ein kommerzieller Service, der von Metaquotes angeboten wird. Sie sollten den Support übernehmen und sich nicht auf die Community verlassen. Meiner Meinung nach ist das kein professioneller Ansatz.
Trotz der Kritik möchte ich Metaquotes für ihre großartige Arbeit an MT4/MT5 danken und sie ermutigen, ihr Niveau an Qualität und Professionalität weiter zu steigern.
Bitte sagen Sie mir, wie es geht! Ich möchte ein Produkt auf den Markt bringen - Expert Advisor Assistant, das gebunden werden muss, um Geschäfte zu eröffnen, damit es funktioniert. Ohne Bindung wird es keine Trades in der Tester und es wird nicht den Test bestehen
Bogdan Bovykin: Ich habe es ausprobiert! Ich bekam die Meldung, dass er nicht verifiziert wurde, kein einziger Handel wurde geöffnet! Nun, er wird nicht geöffnet, wenn es ein Assistent ist.
Wenn es sich um ein Dienstprogramm handelt, prüfen die Moderatoren den EA persönlich.
Das Dienstprogramm kann so eingerichtet werden, dass der Tester zumindest ein paar Trades öffnet und sie als Assistent begleitet. Das ist kein Problem.
Wenn es sich um ein Dienstprogramm handelt, prüfen die Moderatoren den EA persönlich.
Das Dienstprogramm kann so eingerichtet werden, dass der Tester zumindest ein paar Trades eröffnet und sie als Assistent begleitet. Das ist kein Problem.
Ich meine, wollen Sie es als Panel einrichten und es auf diese Weise überprüfen oder was?
Öffnen Sie einfach jeden Handel manuell im Moment und fügen Sie diesen EA auf dem Chart an das Ticket der offenen Bestellung.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Vielen Dank, der Artikel ist sehr nützlich.
Mir ist nicht ganz klar, dass im Unterthema "Begrenzung der Anzahl der Lots um ein Symbol" der Code der Funktion PositionVolume() zweimal angegeben ist.
Gleich darunter steht die Beschreibung der Funktion NewOrderAllowedVolume() und deren Aufruf:
double orders_volume_on_symbol=PendingsVolume(symbol);Nur die Beschreibung der Funktion PendingsVolume() ist in dem Artikel nirgends zu finden.
Sollte statt der Funktion PendingsVolume() irrtümlich wieder die Funktion PositionVolume() angegeben sein, so korrigieren Sie dies bitte.
Das ist ein interessanter Artikel, leider gibt es zu viele Fehler (Tippfehler oder sogar logische Fehler im vorgeschlagenen Code), und es wird wahrscheinlich mehr Leute verwirren als ihnen an einigen Stellen helfen.
1°
Logischer Fehler. Wenn es noch keine Position gibt, muss man immer noch das anhängige Volumen prüfen und das erlaubte Volumen berechnen. Dieser Code gibt allowed_volume=0 zurück, wenn noch keine Position geöffnet ist, ohne die Pendings zu berücksichtigen.
2°
Ein weiterer logischer Fehler. Das Ändern eines SL/TP um 1 Punkt ist erlaubt. Es sollte >= sein.
+ Tippfehler, sollte "-tp)>=Punkt);" sein
+ fehlender Parameter (PrintFormat hat für %, aber nur 3 Parameter sind vorgesehen).
3°
Ähnlicher Fehler wie Punkt 2° oben.
Und die gleichen Fehler auch in OrderModifyCheck() mql4 Version.
Vielen Dank für die Behebung dieser Fehler, bitte beachten Sie, dass ich nicht alle Artikel in der Tiefe zu überprüfen, so vielleicht gibt es mehr.
Einige andere Kommentare zu diesem Artikel, aber diesmal nicht auf Fehler bezogen, sondern mehr auf meine persönliche Meinung:
Access violation
Dieser Fehler tritt auf, wenn versucht wird, Speicher zu adressieren, auf den der Zugriff verweigert wird. In jedem solchen Fall ist es notwendig, die Entwickler über den Service Desk in Ihrem Profil oder über die Seite Kontakte zu kontaktieren.Diese Art von Fehlern ist relativ selten, viele von ihnen haben fertige Codes, die bei der Suche nach der Ursache helfen sollen.
Neueinsteigern wird empfohlen, alle Artikel über Fehlerbehandlung zu lesen, sowie Fragen im Forum und in den Kommentaren zu den Artikeln zu stellen. Andere, erfahrenere Mitglieder der MQL5.community werden Ihnen dabei helfen, unklare Punkte zu klären. Wir hoffen, dass die in diesem Artikel gesammelten Informationen Ihnen helfen werden, zuverlässigere Handelsroboter in kürzerer Zeit zu erstellen.
Trotz der Kritik möchte ich Metaquotes für ihre großartige Arbeit an MT4/MT5 danken und sie ermutigen, ihr Niveau an Qualität und Professionalität weiter zu steigern.
Dies ist der Teil, der Fragen aufwirft:
Warum wird die erforderliche Marge mit dem Eigenkapital verglichen und nicht mit der freien Marge?
http://prntscr.com/dgd6s4
Was ist jetzt los?
prüft die Marge, nicht genug Geld, nicht handeln, aber nicht lassen Sie die Eule zu erhöhen.
Hast du es versucht? Oder hast du das nur gesagt?
Ich habe es ausprobiert! Ich bekam die Meldung, dass er nicht verifiziert wurde, kein einziger Handel wurde geöffnet! Nun, er wird nicht geöffnet, wenn es ein Assistent ist.
Wenn es sich um ein Dienstprogramm handelt, prüfen die Moderatoren den EA persönlich.
Das Dienstprogramm kann so eingerichtet werden, dass der Tester zumindest ein paar Trades öffnet und sie als Assistent begleitet. Das ist kein Problem.
Wenn es sich um ein Dienstprogramm handelt, prüfen die Moderatoren den EA persönlich.
Das Dienstprogramm kann so eingerichtet werden, dass der Tester zumindest ein paar Trades eröffnet und sie als Assistent begleitet. Das ist kein Problem.
Ich meine, wollen Sie es als Panel einrichten und es auf diese Weise überprüfen oder was?
Öffnen Sie einfach jeden Handel manuell im Moment und fügen Sie diesen EA auf dem Chart an das Ticket der offenen Bestellung.