Mein Expert Advisor oder Script zeigt im Experts Log Error 130
Der Fehler steht intern für ERR_INVALID_STOPS und kann bei Aufruf der MQL Funktionen OrderSend oder OrderModify vorkommen. In der Funktion wird entweder ein ungültiger StopLoss, TakeProfit oder auch beides angegeben.
Mögliche Ursachen: Der Konto-Typ erlaubt keine Angabe von StopLoss oder TakeProfit bei der Funktion OrderSend. Das ist bei ECN-Konten der Fall. Daher muß bei Aufruf von OrderSend StopLoss und TakeProfit zunächst auf 0.0 gesetzt werden. Anschließend können durch Aufruf der Funktion OrderModify die Werte für StopLoss und TakeProfit angepasst werden.
Eine weitere häufige Fehlerursache ist ein zu kleiner Stop bzw. zu kleines TakeProfit-Ziel. Man mag es kaum glauben, aber die meisten MT4-Broker verlangen einen Mindestabstand. Dieser Wert kann durch die interne Variable MODE_STOPLEVEL abgefragt werden. Der StopLoss und/oder TakeProfit müssen also größer als dieser Wert sein.
Ein dritter häufiger Fehler ist eine Inkompatiblität des EAs bzw. Scripts mit den sog. Digits. Manche Broker taxen Forex-Symbole mit 4 bzw. bei den Yen-Symbolen mit 2 Nachkommastellen, andere mit 5 resp. 3 Nachkommastellen. Diese Unterschiede müssen im Code berücksichtigt werden, damit der StopLoss und TakeProfit richtig berechnet werden. Sonst kommt es zu Verschiebungen der Nachkommastellen. Wir bereinigen diese Fehler gerne für Sie. Kontaktieren Sie uns!
Mein Expert Advisor oder Script zeigt im Experts Log OrderSend Error 129
Der angegebe Preis bei Aufruf der Funktion OrderSend ist ungültig. Metatrader verweigert die Ausführung mit dem Fehlercode 129, der intern für ERR_INVALID_PRICE steht.
Mögliche Ursachen: Der Marktpreis bewegt sich zu schnell. Dadurch kann selbst mit der Slippage der angegebene Kaufkurs nicht mehr erreicht werden. Dazu sollte vor Aufruf der Funktion OrderSend die Funktion Refreshrates() aufgerufen werden. Weiterhin ist eine Fehlerschleife erforderlich, die ein nochmaliges Aufrufen der Funktion OrderSend erzwingt.
Eine weitere Ursache kann sein, daß der Preis programmatisch falsch mitgegeben wurde. Bei einer BUY-Order muß der Ask-Kurs und bei einer SELL-Order der Bid-Kurs angegeben werden. Es kann auch sein, daß nach dem Komma zu wenig oder zuviel Nachkommastellen angegeben sind. Dieses Problem tritt auf, wenn der EA oder das Script nur auf einem Kontotyp entwickelt und getestet wurde. Hat das Konto, auf dem dieser Fehler erscheint, andere Nachkommastellen (Digits) und wird im Programmcode dieser Unterschied nicht berücksichtigt, kommt es zwangsläfig zu einer Verschiebung der Nachkommastellen. Der Preis sollte daher immer mit der Funktion NormalizeDouble() an die Nachkommastellen angepasst werden. Gerne unterstützen wir Sie bei der Bereinigung dieses Fehlers.
Mein Expert Advisor oder Script zeigt im Experts Log Error 131
Der Fehler steht intern für ERR_INVALID_TRADE_VOLUME und kann bei Aufruf der Funktionen OrderSend oder OrderClose auftreten.
Mögliche Ursachen: der Metatrader Broker gibt einige Bedingungen für Lotgrößen vor: minimale und maximale Lotgröße sowie Lotstep. Bei manchen Brokern ist eine minimale Lotgröße (Lotsize) von 0.01 möglich, bei anderen Brokern müssen es mindestens 0.1 Lot sein. Konflikte mit maximalen Größen treten in der Praxis meist nur bei Backtests auf, denn nur wenige Trader schöpfen die Maximalgröße aus. Zur Vermeidung eines Unter- oder Überschreitens der Vorgaben müssen im Programmcode die Werte der beiden internen Variablen MODE_MINLOT und MODE_MAXLOT abgefragt und die Lotsize entsprechend angepasst werden. Bei einem Überschreiten der maximalen Lotgröße kann die Order auch in mehrere Orders aufgesplittet werden.
Der Wert der internen Variable LOTSTEP gibt die Schrittweite der Lots an. Steht diese für 0.01, dann dürfen die Lotgrößen immer nur in Schritten von einem hunderstel angegeben werden, also z.B. 0.01 oder 0.02, aber nicht 0.025. Meist entstehen inkompatible Schrittweiten durch die automatische Berechnung der Positionsgröße. Hierbei muß der Wert entsprechend gerundet werden. Eine weitere Fehlerquelle sind Teilschließungen von Orders mit der Funkton OrderClose, die entweder nicht vom Broker erlaubt sind oder auch hier inkompatible Schrittweiten angegeben werden. Durch Rundungen kann es sogar dazu kommen, dass der letzte Teil der Ordergröße tatsächlich kleiner ist als der berechnete gerundete Wert. Ist der gerundete Wert kleiner, kann sogar ein Teil der Order unkontrolliert stehen bleiben. Sollen Teilschließungen vorgesehen sein, verwenden wir aus Kompatibilitätsgründen ausschließlich mehrere Orders.
Wie kann ich mit Metatrader Realtime Kurse auf meiner Webseite einbinden?
Die direkte Einbindung von Echtzeitkursen aus MT4 heraus ist nicht möglich. Die Daten müssen zunächst aus Metatrader exportiert bzw. abgegriffen werden. Anschließend müssen die Daten wieder durch eine Scriptsprache wie z.B. PHP oder ASP.NET eingelesen werden. Damit die Kurse automatisch ohne erneutes Laden der Webseite aktualsiert werden, ist wiederum eine Script- oder Programmiersprache wie JavaScript oder Java erforderlich. Wenn Sie Realtime-Quotes in Ihren Webauftritt einbinden wollen, bieten wir Ihnen gerne entsprechende Lösungen zur Implementierung an.
Weitere Fragen und Antworten rund um Metatrader werden hier in Kürze erscheinen.