Lot Size Library for Any Volume Step
- Bibliotheken
-
Jevon Naldo Yoshield
I build MetaTrader 5 tools I use on my own charts. Nine are on the Market.
Order Entry Panel sends market orders per click. Smart Risk and Lot Size Panel turns risk and stop into lots. Prop Firm Guard and Drawdown Lock caps my daily loss. - Version: 1.0
Diese Bibliothek gibt das größte Lot zurück, dessen Verlust bei Ihrem Stop nicht den Betrag übersteigt, den Sie als Risiko zulassen – angepasst an alle vom Symbol gemeldeten Volumenschritte, Tick-Größen und Tick-Werte.
Ich habe sie für den MQL5-Entwickler geschrieben, der in jeden EA einen Block zur Lot-Normalisierung eingefügt hat und nun nicht mehr sagen kann, welche Kopie die richtige ist. Ein Import, eine Version und ein Aufruf, der lieber ablehnt, als zu große Positionen zu eröffnen.
WAS SIE TUT
- Sie verweigert die Ausführung, anstatt eine zu große Position zu eröffnen: Wenn das kleinste Lot, das das Symbol akzeptiert, mehr als Ihr Limit riskieren würde, gibt der Aufruf -6 statt eines größeren Lots zurück.
- Für jeden Schritt zulässig: Die Größe wird auf den Schritt des Symbols abgerundet und niemals aufgerundet, sodass ein Symbol mit einem Schritt von 0,001 und ein Instrument mit einem Schritt von 0,25 ohne manuelle Eingabe von Dezimalstellen verarbeitet werden.
- Drei Möglichkeiten, das Risiko anzugeben: ein Geldbetrag, ein Prozentsatz des Guthabens oder des Eigenkapitals oder eine Entfernung in Punkten, sowie der umgekehrte Aufruf, der angibt, welches Risiko ein bestimmtes Volumen birgt.
- Es ist nicht möglich, eine falsche Tick-Größe zu übergeben: Die Bibliothek liest zum Zeitpunkt des Aufrufs selbst das Volumen und die Tick-Spezifikation des Symbols aus.
- Ein Satz für jeden Code: neun Fehlerwerte, jeweils mit Klartext, der angibt, was zu überprüfen ist.
- Kein Status und keine Orders: Die Funktion gibt eine Zahl zurück, sendet, ändert oder schließt niemals eine Order, und zwei Aufrufe mit denselben Eingaben im selben Tick liefern denselben Wert.
SO FUNKTIONIERT ES
1. Legen Sie „chimaster_lots.ex5“ im Ordner „MQL5\Libraries“ unterhalb des Datenordners Ihres Terminals ab und fügen Sie den folgenden Import-Block in den EA ein.
2. Rufen Sie eine Funktion zur Positionsgrößenbestimmung mit dem Symbol, dem zulässigen Risikobetrag und dem Abstand vom Einstiegspunkt zum Stop-Loss auf.
3. Lesen Sie den Wert aus: Ein positiver Wert steht für eine Positionsgröße, ein negativer Wert ist ein Fehlercode, den CMS_ErrorText in einen Satz umwandelt.
DIE ZWÖLF AUFRUFE
#import "chimaster_lots.ex5"
double CMS_VolumeMin(const string symbol);
double CMS_VolumeMax(const string symbol);
double CMS_VolumeStep(const string symbol);
int CMS_VolumeDigits(const string symbol);
double CMS_NormalizeVolume(const string symbol, const double requestedVolume);
double CMS_MoneyPerLot(const string symbol, const double priceDistance);
double CMS_LotFromRiskMoney(const string symbol, const double riskMoney, const double stopDistancePrice);
double CMS_LotFromRiskPercent(const string symbol, const double riskPercent, const double stopDistancePrice, const int riskBase);
double CMS_LotFromRiskPoints(const string symbol, const double riskMoney, const double stopPoints);
double CMS_RiskOfVolume(const string symbol, const double volume, const double priceDistance);
string CMS_ErrorText(const int code);
string CMS_Version();
#import
Die ersten vier Funktionen lesen die Volumenspezifikation des Symbols aus. CMS_MoneyPerLot wandelt einen Preisabstand in den Verlust eines Lots um. CMS_LotFromRiskMoney, CMS_LotFromRiskPercent und CMS_LotFromRiskPoints geben die Lotgröße anhand des Geldbetrags, eines Prozentsatzes des Guthabens oder des Eigenkapitals sowie anhand von Punkten zurück; die prozentuale Funktion nimmt als letztes Argument 0 für das Guthaben und 1 für das Eigenkapital an. CMS_RiskOfVolume ist das Gegenteil. CMS_ErrorText und CMS_Version sind die beiden String-Aufrufe.
DIE FEHLERCODES
-1 unbekanntes Symbol, -2 Volumenspezifikation unbrauchbar, -3 Tick-Spezifikation unbrauchbar, -4 Abstand nicht positiv, -5 Risikobetrag außerhalb des zulässigen Bereichs, -6 das Mindestlot birgt ein höheres Risiko als von Ihnen angefordert, -7 eine Eingabe ist nicht endlich oder liegt außerhalb des zulässigen Bereichs, -8: Die Risikobasis ist nicht 0 oder 1, -9: Kein Kontostand oder Eigenkapital, von dem ein Prozentsatz abgezogen werden kann.
GUT ZU WISSEN
- Kompiliert, nicht Quellcode, und der Geldbetrag ist eine Schätzung: Sie erhalten die kompilierte Bibliothek, und der Geldbetrag pro Lot basiert auf dem Tick-Wert-Verlust des Terminals zum Zeitpunkt des Aufrufs, ohne Provision, Swap oder Gebühr.
- Keine Stop- oder Margin-Prüfungen: Sie geben den Abstand vom Einstieg zum Stop an, und die Bibliothek überprüft weder Stop-Niveaus noch Freeze-Niveaus noch die Margin.
- Gültig für eine Order: Die Bibliothek begrenzt sich auf das maximale Volumen des Symbols und teilt größere Volumina nicht auf; außerdem wendet sie das Gesamtvolumenlimit des Symbols nicht an.
- Ein Schritt von meinem Panel: Diese Bibliothek legt eine Untergrenze mit einer relativen Toleranz fest, sodass 0,3 Lots bei einem Symbol mit 0,1-Schritt-Abstufung bei 0,3 bleiben, während eine einfache Untergrenze 0,2 ergeben würde. Mein „Smart Risk“- und „Lot Size“-Panel wendet eine einfache Floor-Regel an, sodass sich die beiden Werte dort um einen Schritt unterscheiden können; beide sind zulässig, und keiner risikiert mehr als die Formel vorsieht.
BEVOR SIE SICH DARAUF VERLASSEN
Der MQL5-Compiler führt keine Verknüpfungsprüfung bei einem Import durch: Eine fehlende Bibliothek wird dennoch ohne Fehler kompiliert, und der Fehler tritt erst auf, wenn das Terminal den Code lädt. Überprüfen Sie daher die Datei. Fügen Sie den Importblock in ein leeres Skript ein, fügen Sie `Print(CMS_Version());` hinzu, kompilieren Sie es und führen Sie es auf einem beliebigen Chart aus. Es gibt 1,00 aus, wenn das Terminal diesen Build geladen hat.
FRAGEN, DIE ICH ERWARTE
Wird mein EA ohne die Bibliothek kompiliert? Ja, und genau darin liegt die Falle: Der Compiler liest die .ex5-Datei nicht, sodass eine fehlende Datei problemlos kompiliert wird, der Fehler jedoch erst beim Laden auftritt. Die oben beschriebene Versionsprüfung liefert die schnelle Antwort.
Das Minimum meines Brokers ist kein Vielfaches des Schritts. Dann ist die Symbolangabe inkonsistent. Die Bibliothek gibt dieses Minimum unverändert zurück, und der Server lehnt die Order möglicherweise ab, wenn Sie sie senden.
Führt es Trades aus oder verwaltet es diese? Nein. Es gibt eine Zahl zurück, und Ihr EA entscheidet, was damit geschehen soll.
KOMPATIBILITÄT
Jeder MT5-Kontotyp. Natives MQL5, keine DLLs.
SUPPORT
Fragen über das MQL5-Nachrichtensystem. Erste Antwort innerhalb von zwei Werktagen.
Falls Sie das Programm bereits genutzt haben, würde ich mich über eine kurze Bewertung freuen, in der Sie angeben, was gut funktioniert hat und was nicht.
