Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Skripte

Broker Spec Inspector - Skript für den MetaTrader 5

Seckin Erkut
Seckin Erkut
Algo Trading Systems Developer. I develop strategies and portfolios not by hypes but from solid academic literature.

I put my money where my mouth is, be sure to check the performance of my EAs through my signals.
| German English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Ansichten:
4
Rating:
(2)
Veröffentlicht:
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Jeder Trader, der den Handel automatisiert, stößt irgendwann auf den Fehler 130 „Ungültige Stopps“ oder auf eine Order, die einfach nie erscheint. Die übliche Reaktion ist, dem EA die Schuld zu geben. Meistens ist der EA jedoch einwandfrei und der Server setzt lediglich ein vertragliches Limit durch.
durchgesetzt, das im Terminalfenster nie angezeigt wird: das Stop-Niveau, das Freeze-Niveau oder eine Mindest-Lot-Schrittweite, die Ihre Positionsgröße nicht einhält. Diese Limits unterscheiden sich je nach Symbol und Broker und ändern sich ohne
Vorankündigung. Dieses Skript gibt sie aus.
Laden Sie es in ein beliebiges Chart. Es liest lediglich die Spezifikationen aus – es öffnet, ändert oder schließt niemals etwas, und der algorithmische Handel muss nicht aktiviert sein. Geben Sie eine durch Kommas getrennte Liste von Symbolen ein oder lassen Sie das Eingabefeld leer, dann durchläuft es Ihre Auswahl in der Marktübersicht.

WAS ES DRUCKT

Für jedes Symbol: Ziffern, Punkt, Tick-Größe und Wert, Kontraktgröße, Min./Schritt/Max.-Lot, Spread und ob der Kurs variabel ist, Ausführungsmodus, Swap für Long- und Short-Positionen sowie die für ein Mindest-Lot erforderliche Margin im Verhältnis zu Ihrer aktuellen freien Margin. Dann der Teil, der die eigentliche Frage beantwortet:

Warnung vor Maklern

--- XAUUSD (bid 4402.15 / ask 4402.63) ---------------------
stops level 350 pts | freeze level 0 pts | EFFECTIVE band 351 pts
VERDICT: a stop/pending placed 100 pts from price would be REJECTED as 'Invalid price' (band is 351 pts)
buy at ask 4402.63: you asked SL 4401.63 -> nearest legal SL 4399.12 (moved out)
Die letzte Zeile ist besonders hilfreich. Sie sagt Ihnen nicht nur, dass ein 100-Punkte-Stop bei diesem Wert nicht funktioniert, sondern nennt Ihnen auch das genaue Niveau, das der Server stattdessen akzeptieren würde.
DIE REGEL
Zwei separate Grenzwerte können einen Stop-Auftrag ablehnen, und Tools, die nur einen davon prüfen, liefern bei der Hälfte der Broker ein falsches Ergebnis:
double MinStopDistance(const string sym)
{
long stops = SymbolInfoInteger(sym, SYMBOL_TRADE_STOPS_LEVEL);
long freeze = SymbolInfoInteger(sym, SYMBOL_TRADE_FREEZE_LEVEL);
long band = (stops > freeze ? stops : freeze) + 1;
return band * SymbolInfoDouble(sym, SYMBOL_POINT);
}

In diesen vier Zeilen stecken drei Entscheidungen.
Der Bereich ist der GRÖSSERE der beiden Grenzwerte, da einige Server den „Freeze“-Wert auf Null belassen und „Stops“ erzwingen, während andere das Gegenteil tun. Wenn man den größeren Wert wählt, sind beide Fälle abgedeckt, ohne dass man weiß, auf welcher Art von Server man sich befindet.
Es wird ein Punkt hinzugefügt, da ein Level, das genau auf dem Rand des Bereichs liegt, von vielen Servern immer noch abgelehnt wird. Die dokumentierte Regel lautet „näher als“, die implementierte Regel ist oft „näher als oder gleich“, und ein Punkt kostet nichts.
Das Ergebnis wird in PRICE-Einheiten und nicht in Punkten zurückgegeben. Das ist genau das, was Sie benötigen, wenn Sie das tatsächliche Stop-Niveau festlegen, und es beseitigt die Verwechslung zwischen Punkten und Pips, die bei 5-stelligen Symbolen zu einem Fehler um den Faktor 10 führt.
VERWENDE ES IN DEINER EIGENEN EA
Die zweite Funktion ist diejenige, die es wert ist, kopiert zu werden. Sie nimmt den gewünschten Stop-Kurs entgegen und gibt den nächstgelegenen zurück, den der Server akzeptiert, und zwar auf der richtigen Seite des Kurses:
double LegalStopLoss(const string sym, const bool isBuy,
const double price, const double wanted)
{
double dist = MinStopDistance(sym);
int digits = (int)SymbolInfoInteger(sym, SYMBOL_DIGITS);
double sl = wanted;
if(isBuy) { if(price - sl < dist) sl = price - dist; }
else { if(sl - price < dist) sl = price + dist; }
return NormalizeDouble(sl, digits);
}

Eine Haltestelle, die bereits legal ist, bleibt unverändert, sodass es unbedenklich ist, jede Haltestelle über sie zu leiten. Das Einbinden Ihrer bestehenden Berechnung erfordert nur eine Zeile:
double sl = LegalStopLoss(_Symbol, true, ask, ask - atr * 1.5);
Dies ist vor allem dann von Bedeutung, wenn die Volatilität im Verhältnis zum Band hoch ist. Ein ATR-Stop, der beim EUR/USD ausreichend Spielraum bietet, kann bei Gold oder einem Index während einer ruhigen Handelssitzung innerhalb des Bands liegen – und genau dann überrascht Sie die Kursabweisung, denn derselbe Code hat gestern noch funktioniert.

HINWEISE ZUR AUSWERTUNG DER ERGEBNISSE

Ein breites Band bedeutet nicht, dass ein Broker Schwierigkeiten macht. Es spiegelt in der Regel wider, wie das Symbol bewertet und abgesichert wird, und ist der Grund dafür, dass ein Scalping-EA, der auf einem Server funktioniert, auf einem anderen nicht mehr läuft, ohne dass auch nur eine einzige Zeile Code geändert wurde.
Vergleichen Sie vor der Migration. Der CSV-Export ist standardmäßig aktiviert und schreibt die Datei „BrokerSpecs.csv“ in den Ordner „MQL5\Files“, wobei pro Symbol eine Zeile mit dem Band, dem minimalen Stop-Abstand und dem nächstgelegenen zulässigen Niveau enthalten ist. Führen Sie das Skript bei zwei Brokern aus, legen Sie die Dateien nebeneinander, und die Unterschiede, deren Behebung Sie sonst eine Woche Debugging gekostet hätte, sind innerhalb einer Minute sichtbar.
Überprüfen Sie die Margin, bevor Sie die Position skalieren. Die Spalte „Margin“ bezieht sich auf ein Mindestlot. Wenn diese Zahl bereits nahe an Ihrer freien Margin liegt, unterliegt die Größe Ihrer Position einer Obergrenze, die Sie noch nicht berücksichtigt haben.

Die Symbole müssen in der Marktübersicht aufgeführt sein und mindestens einen Tick verzeichnet haben. Wenn für ein Symbol keine Tick-Daten vorliegen, öffnen Sie dessen Chart einmal und führen Sie den Vorgang erneut aus.


Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/76178

Session Opening Range Breakout EA Session Opening Range Breakout EA

Ein Expert Advisor, der das Hoch und Tief eines festgelegten Eröffnungsfensters einer Handelssitzung ermittelt und anschließend den bestätigten Ausbruch aus diesem Bereich mit risikobasierter Positionsgröße und einer Obergrenze von einem Trade pro Sitzung handelt.

Reverse RSI Bands Reverse RSI Bands

„Reverse RSI Bands“ ist ein Frühindikator, der die RSI-Formel mathematisch rückentwickelt. Er zeichnet präzise Kurszielbänder direkt im Hauptchart ein und zeigt in Echtzeit genau an, bei welchem Kurs der RSI die von Ihnen festgelegten Überkaufs- oder Überverkaufsniveaus erreichen wird.

Custom Simple Moving Average Custom Simple Moving Average

Ein zweistufiger adaptiver gleitender Durchschnitt (Basisdurchschnitt + sekundäre Glättung), der sich je nach Steigung farblich anpasst und Preis-Durchschnitt-Kreuzungen mit Pfeilen markiert.

Accelerator Oszillator (AC) Accelerator Oszillator (AC)

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.