Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 112
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
Hallo. Ich habe in meinem EA die Berechnung des Loses wie folgt geschrieben:
lot=NormalizeDouble(AccountBalance()*risk/(SL*MarketInfo(Symbol(),MODE_TICKVALUE)),2);
Ziel ist es, unabhängig von der Kontowährung und dem Paar die richtige Losgröße für das gegebene Risiko und den Stop-Loss zu erhalten. DasRisiko wird als Prozentsatz der Verluste festgelegt, wenn der Stop Loss ausgelöst wird. Stop Loss SL in Pips (wobei Pips die kleinstmögliche Veränderung des Paarpreises ist). Ich werde diesen EA in einem echten Konto verwenden. Aber ich habe meine Zweifel. Wenn mir jemand von erfahreneren Programmierern sagen könnte, welche Fehler auftreten können, wäre ich sehr dankbar.Erster Strategietester. Dann ein Demokonto. Und erst dann eine echte. Um die Formel zu überprüfen, schreiben Sie ein Skript. Oder rechnen Sie es einfach auf einem Blatt Papier aus. Ich habe Balance=100, Risiko=0.1 SL=100, Tick=0.00001 Lot=100*0.1 / (100*0.00001) = 10 / 0.001 = 10000 Lot mehr als die Balance? Sollten wir die Hebelwirkung berücksichtigen?
MarketInfo(Symbol(),MODE_TICKVALUE)) gibt nicht die minimale Tickgröße zurück. Das steht in der Hilfe:
Größe der minimalen Preisänderung des Instruments in der Einzahlungswährung.
Tatsächlich wird jedoch der Wert der minimalen Änderung des Symbolpreises in der Einzahlungswährung von 1 Lot des Kontrakts zurückgegeben.
In Ihrem Beispielwird MarketInfo(Symbol(),MODE_TICKVALUE)) 1 zurückgeben, und dann ist alles richtig. Ich habe es auf echten Dollar- und Rubelkonten ausprobiert und es funktioniert. Hier ist das Skript, mit dem ich das überprüft habe:
#property copyright "Copyright 2016, MetaQuotes Software Corp.
#property link "https://www.mql5.com"
#Eigenschaft Version "1.00"
#Eigenschaft streng
#property show_inputs
extern double risk=0.10;
extern int sl=1000;
//+------------------------------------------------------------------+
//| Skriptprogramm-Startfunktion |
//+------------------------------------------------------------------+
void OnStart()
{
Alert(NormalizeDouble(Kontostand()*Risiko/(sl*MarketInfo(Symbol(),MODE_TICKVALUE),2))
}
//+------------------------------------------------------------------+
Sie haben Recht. Die Prüfung mit einem Skript ist schneller und zuverlässiger
Außerdem müssen wir die Genauigkeit der Funktion NormaliseDouble von der zulässigen Mindestmenge abhängig machen. Wenn Sie der Funktion OrderSend ein Lot übergeben, z. B. 0,11, und das Tool nur mit Lots von 0,1 gehandelt wird, tritt ein Fehler auf.
Ich kann nicht verstehen, warum offene Trades nicht alle auf einmal gelöscht werden, d.h. EA löscht einige von ihnen, aber der Fehler orderdelete 4108, market order kann nicht mehrmals gelöscht werden, und löscht sie erst dann.
Ich kann nicht verstehen, warum offene Trades nicht alle auf einmal gelöscht werden, d.h. EA löscht einige von ihnen, aber der Fehler orderdelete 4108, market order kann nicht mehrmals gelöscht werden, und löscht sie erst dann.
Auf dieser Seite wird erklärt, wie Sie löschen können. Sie haben 2 Fehler.
Beim Start gibt es einen konstanten Fehler array out of range in 'expert1.0.mq4' (69,25)... Ich habe verstanden, dass es um die Anordnung geht. Ich weiß nicht, was ich tun soll.
Ich muss den Code oder einen Teil davon sehen, der dieses Feld behandelt.
Telepathen, ruhen Sie sich heute aus.
Sie müssen sich den Code oder einen Teil des Codes ansehen, der das Array behandelt.
Telepathen, ruhen Sie sich heute aus.
}
Hier ist die Funktion.
Ich dachte nur, dass das Problem nicht im Code liegt, da im Standardmodus keine Fehler auftreten.