Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 627
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
Können Sie mir sagen, wie man die Sicherheiten für ein Geschäft berechnet?
Zwei Ansätze ausprobiert
(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)
Und diese hier
FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);
double val=AccountFreeMargin()-FreeMarginCheck;
Der erste gibt seltsame Ergebnisse auf EURJPY, wenn meine Einzahlungswährung USD ist. Muss ich der Formel etwas hinzufügen?
Der zweite funktioniert auch nur einmal, manchmal gibt er den richtigen Wert an, manchmal gibt er irgendeinen Unsinn an (es hängt von der Einzahlung ab)
Die zweite Variante ist der korrekte Weg, um die Einzahlung zu berechnen. Um genau zu sein, zeigt die Variable val den Wert der freien Mittel nach der Bestellung und die VariableFreeMarginCheck den Wert der Einzahlung selbst an
Die zweite Option ist der richtige Weg, um die Marge zu berechnen, oder vielmehr erhalten Sie den Wert der freien Mittel in der val-Variable nach der Platzierung einer Bestellung, und die VariableFreeMarginCheck ist der Wert der Marge selbst
Sind Sie sicher?
AccountFreeMarginCheck
Gibt den Betrag der freien Mittel zurück , der nach der Eröffnung des angegebenen Auftrags zum aktuellen Preis auf dem aktuellen Konto verbleibt.
Auch hier gibt es eine gewisse Subtilität:
Wenn Gegengeschäfte offen sind, d.h. eine vollständige oder unvollständige Sperre des Kontos besteht, kann die Funktion falsche Werte liefern.
Sind Sie sicher?
Ja, Sie haben Recht, das ist genau richtig:
Gibt den Betrag der freien Mittel zurück, der nach Eröffnung des angegebenen Auftrags zum aktuellen Preis auf dem aktuellen Kontoverbleibt.
was die offenen Geschäfte betrifft, müssen Sie überprüfen, ich erinnere mich nicht, aber höchstwahrscheinlich sollte das, was das Terminal schreibt, mit den berechneten Daten übereinstimmen: die Gesamtzahl der Lots in jeder Richtung der Geschäfte (BAY/SELL) für alle Symbole, dann rufen Sie für jedes Symbol
AccountFreeMarginCheck() übergibt Lose in jede Richtung und addiert diese Ergebnisse
Der Markt funktioniert heute, es ist leicht zu überprüfen, wie folgt
Guten Tag, könnten Sie mir sagen, was mit der Funktion nicht in Ordnung ist? Die Funktion führt eine Handelspause nach Zeit durch, die Parameter umfassen den Beginn der Pause und das Ende der Pause.
Die Funktion liest die Zeit nicht vom Server des Brokers, sondern vom Computer, obwohl TimeCurrent vorgeschrieben ist. Im Allgemeinen werden die Geschäfte während der Pause geschlossen, d.h. die Funktion funktioniert nicht.
Guten Tag, können Sie mir sagen, was mit der Funktion nicht stimmt? Die Funktion führt eine Handelspause nach Zeit durch, die Parameter sind Pausenbeginn und Pausenende.
Die Funktion liest die Zeit nicht vom Server des Brokers, sondern vom Computer, obwohl TimeCurrent vorgeschrieben ist. Im Allgemeinen werden die Geschäfte während einer Pause geschlossen, was bedeutet, dass die Funktion nicht funktioniert.
UnprintTimeStart undStrToTime(TimeStart);
dann unprintTimeCurrent()
IhrTimeStart ist nicht im vollständigen Datumsformat, d. h. die Zeit ist immer der aktuelle Tag, Monat und das Jahr, wenn Sie den EA ausführen, und dann ändert sie sich?
Und global ... um die Stunden und Minuten des Handels zu bestimmen, sollten Stunden und Minuten mit der Stunde und Minute der Serverzeit verglichen werden, Sie vergleichen nur die Tatsache, dass die Serverzeit länger ist als die angegebene
SZZ: um Verwirrung zu vermeiden, können Siedatetime als int betrachten, was es auch ist, und wenn Sie 2datetimevergleichen, vergleichen Sie 2 int
PSPS:
Ihr Code wird wahrscheinlich funktionieren, Sie sollten es auf diese Weise versuchen:
Normalerweise zähle ich die Zeit auf diese Weise:
int h = TimeHour(TimeCurrent());
int m = TimeMinute(TimeCurrent());
und vergleichen Sie sie dann mit den EA-Einstellungen
Danke, ich werde versuchen, es herauszufinden, ich bin nur ein Anfänger), mit && Option anstelle von || Ich habe nicht versucht, online noch, durch die Art und Weise in Tester dieser Code funktioniert, es liest Zeit aus dem Terminal, keine Schließung der Aufträge während der Pause, aber online ist es anders.
Hallo! Das Terminal startet nicht im Strategie-Tester. Ich stelle das Datum ein, z.B. (2017,04,01 bis 2018,05,29), drücke auf Start, es gibt sofort einen Stopp. Im Protokoll steht Folgendes,
TestGenerator: keine Verlaufsdaten 'EURUSD30' von 2017.04.01 bis 2018.05.29. Und so weiter auf jedem Segment. Mein Computer funktioniert, ich dachte, er hätte vielleicht nicht genug RAM. Auf dem Heimcomputer ist es dasselbe, ein Neustart hilft nicht, aber es läuft eine Weile. Ich habe den Expert Advisor aus dem Market heruntergeladen und getestet. Falls jemand den Grund kennt, bitte ich um einen Hinweis.
Hallo! Das Terminal startet nicht im Strategie-Tester. Ich stelle das Datum ein, z.B. (2017,04,01 bis 2018,05,29), drücke auf Start, es gibt sofort einen Stopp. Im Protokoll steht Folgendes,
TestGenerator: keine Verlaufsdaten 'EURUSD30' von 2017.04.01 bis 2018.05.29. Und so weiter auf jedem Segment. Mein Computer funktioniert, ich dachte, er hätte vielleicht nicht genug RAM. Dasselbe auf dem Heimcomputer, ein Neustart hilft nicht, aber es läuft eine Weile. Ich habe Expert Advisor aus dem Market heruntergeladen und getestet. Können Sie mir bitte einen Hinweis geben, wenn ich den Grund dafür kenne?
Ich glaube, der Tester sagt, dass es keine Verlaufsdaten gibt, drücken Sie F2 und laden Sie den Verlauf herunter, dann starten Sie das Terminal neu
Hallo! Das Terminal startet nicht im Strategie-Tester. Ich stelle das Datum ein, z.B. (2017,04,01 bis 2018,05,29), drücke auf Start, es gibt sofort einen Stopp. Im Protokoll steht Folgendes,
TestGenerator: keine Verlaufsdaten 'EURUSD30' von 2017.04.01 bis 2018.05.29. Und so weiter auf jedem Segment. Mein Computer funktioniert, ich dachte, er hätte vielleicht nicht genug RAM. Auf dem Heimcomputer ist es dasselbe, ein Neustart hilft nicht, aber es läuft eine Weile. Ich habe Expert Advisor aus dem Market heruntergeladen und getestet. Wenn ich den Grund kenne, bitte ich um Rat.
Bedeutet dasFehlen historischer Daten etwas?
Es sieht so aus, als ob das Testgerät Ihnen mitteilt, dass es keine Verlaufsdaten gibt. Drücken Sie F2 und laden Sie den Verlauf herunter, dann laden Sie das Terminal neu.
Ich danke Ihnen! Ich werde es ausprobieren. Wirkt sich die Aktualisierung des Terminals in irgendeiner Weise aus? Ob es aktualisiert ist oder nicht, obwohl es Ihnen das selbst mitteilen wird......