Fehler, Irrtümer, Fragen - Seite 2634
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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 möchte einige MT4 mit einer Batch-Datei ausführen.
Können Sie mir bitte sagen, wie man das macht und warum mein Code nicht funktioniert:
Im besten Fall läuft er ein paar MT4s und hängt sich dann auf.
Natürlich gibt es keinen Mangel an Arbeitsspeicher.
Außerdem habe ich es auf verschiedenen Computern ausprobiert
Nein, das tut es nicht.
Die Serverzeit bleibt übrigens nicht am Samstag stehen. Im Gegenteil: Im Terminal wird die Serverzeit mit dem Eintreffen eines neuen Kurses aktualisiert. Sie haben z.B. nur ein Symbol in der Marktübersicht geöffnet (nicht nur im Tester, sondern auch in der Realität). und es gibt fünf Sekunden lang keine Ticks - die ganze Zeit über bewegt sich der Timer der Serverzeit nicht. das gilt für den Samstag: die Serverzeit läuft, aber das Terminal weiß nichts davon, weil es keine Ticks gibt. der Tester verpasst diesen Zeitraum einfach.
Das habe ich bereits überprüft. Im Testgerät funktioniertTimeLocal am Wochenende,TimeTradeServer auch, aberTimeCurrent natürlich nicht. Es gibt keine Ticks, aber die Serverzeit ist noch da.
https://www.mql5.com/ru/forum/328008/page2#comment_14166682
Wie immer: Fahrräder.
Die Frage ist hier, warum sie nicht angenommen wird.
Schließlich haben die Variablen der Parameter Anfangswerte.
Und wenn Sie die Größe der Maße in Zahlen angeben
Der Compiler überspringt es, was ist der Trick?
Kann sich der Entwickler dazu äußern?
Zu welchem Zweck? Auto-Optimierung am Wochenende durchführen? Dann würde es funktionieren, einen Timer von OnTick in einem Abstand von einigen Minuten zu setzen. Wenn es funktioniert, haben die Ticks aufgehört und Sie können optimieren.
Wenn für andere Zwecke, formulieren Sie sie.
Nein, nicht für andere Zwecke.
Ich dachte nicht, dass TimeLocal am Wochenende funktioniert, also habe ich Folgendes getan: Ich habe ein paar Stunden zu TimeCurrent hinzugefügt und den Wochentag überprüft. Wenn es Samstag ist, dann fangen Sie an zu optimieren.
Natürlich kann ich nicht mit Sicherheit sagen, wann der Samstag beginnt, da der Markt am Freitag oder an Feiertagen anders schließt.
Außerdem habe ich nirgends eine Möglichkeit gefunden, festzustellen, ob der Markt geschlossen ist oder nicht.
Nein, nicht zu einem anderen Zweck.
Ich dachte nicht, dass TimeLocal an Wochenenden funktioniert, also habe ich Folgendes getan: Ich habe ein paar Stunden zu TimeCurrent hinzugefügt und den Wochentag überprüft. Wenn es Samstag ist, dann fangen Sie an zu optimieren.
Natürlich kann ich nicht mit Sicherheit sagen, wann der Samstag beginnt, da der Markt am Freitag oder an Feiertagen anders schließt.
Außerdem habe ich nirgends eine Möglichkeit gefunden, festzustellen, ob der Markt geschlossen ist oder nicht.
Haben Sie es versucht?
SymbolInfoSessionTrade
oder
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Etwas von ihnen sollte gut sein
Haben Sie es ausprobiert?
SymbolInfoSessionTrade
oder
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Einer von ihnen sollte gut sein, ich erinnere mich.
Nein, das habe ich nicht. Aus dem Handbuch geht nicht hervor, wie Sie feststellen können, ob der Markt geöffnet ist oder nicht.
Die Sache ist die, dass, wenn der Markt am Montag "öffnet", z.B. bei einem Broker die Kurse um 02:05 Uhr eingehen, aber Transaktionen für ein paar Minuten nicht akzeptiert werden und "Markt geschlossen" angezeigt wird.
Ich weiß nicht, ob das helfen wird oder nicht.
SYMBOL_START_ZEIT
Anfangsdatum des Instruments (in der Regel für Futures verwendet)
Nein, das habe ich nicht. Der Leitfaden enthält keine genauen Angaben darüber, wie Sie feststellen können, ob der Markt geöffnet ist oder nicht.
Das Problem ist, dass, wenn der Markt am Montag "öffnet", z. B. bei einem Makler die Kurse um 02:05 Uhr eingehen, die Geschäfte aber erst nach einigen Minuten akzeptiert werden, wird "Markt geschlossen" angezeigt.
Ich weiß nicht, ob das helfen wird oder nicht.
SYMBOL_START_ZEIT
Dies ist die symbol_start_time (normalerweise für Futures verwendet)
SymbolInfoSessionTrade zeigt an, wann der Handel beginnt, undSymbolInfoSessionQuote, wann die Notierungen eintreffen.
up: Das sollte helfen
boolIsTradeAllowed(
const string symbol// symbol
datetimetested_time//time
);
Wie immer: Fahrräder.
Hier stellt sich die Frage, warum ein solcher Eintrag nicht zustande kommt.
Nachdem alle Variablen der Parameter Anfangswerte haben.
Und wenn Sie die Größe der Maße in Zahlen angeben
dann überspringt der Compiler sie, wo ist der Haken?
Wird sich der Entwickler dazu äußern?
Roman, das ist schon das zweite Mal, dass Sie auf den elementaren Unwillen hereinfallen, die Dokumentation zu lesen.
Nur eineGanzzahl kann ein Array-Index sein. Es sind nicht mehr als vierdimensionale Arrays erlaubt. Die Nummerierung der Array-Elemente beginnt mit 0. Das letzte Element eines eindimensionalen Arrays ist um 1 kleiner als die Array-Größe, d. h. der Zugriff auf das letzte Element eines Arrays mit 50 ganzen Zahlen sieht aus wie a[49]. Dasselbe gilt für mehrdimensionale Arrays, wobei eine Dimension von 0 bis Dimensionsgröße-1 indiziert wird. Das letzte Element des zweidimensionalen Arrays im Beispiel würde wie m[6][49] aussehen.
Statische Arrays können nicht als Zeitreihen dargestellt werden, d.h. die Funktion ArraySetAsSeries(), die den Zugriff auf Arrayelemente vom Ende eines Arrays bis zu seinem Anfang setzt, ist auf sie nicht anwendbar. Wenn Sie den Zugriff auf ein Array wie bei Timeseries ermöglichen wollen, verwenden Sie ein dynamisches Array-Objekt.
Wenn Sie außerhalb des Arrays zugreifen, erzeugt das ausführende Subsystem einen kritischen Fehler und die Programmausführung wird angehalten.
Und in der mql4-Dokumentation, wenn ich mich richtig erinnere, wurde klar gesagt, dass Variablen nicht als Array-Größe verwendet werden sollten.
Wie immer: Fahrräder.
Die Frage ist hier, warum ein solcher Eintrag nicht funktioniert.
Schließlich haben die Variablen von Parametern Anfangswerte.
Und wenn Sie die Größe der Maße in Zahlen angeben
Dann überspringt der Compiler sie, was ist der Trick?
Kann sich der Entwickler dazu äußern?
Ich bin kein Entwickler, aber ich werde mich dazu äußern.
Für ein statisches Array muss der Compiler bereits zur Kompilierungszeit eine bestimmte Anzahl von Bytes im Speicher zuweisen.
Wie viel Speicher muss der Compiler zuweisen, wenn wir die Zeilen und Spalten zum Zeitpunkt der Kompilierung nicht kennen?
Die Anfangswerte werden nur verwendet, wenn beim Aufruf keine Parameter angegeben werden. Die tatsächlichen Parameter sind erst zur Laufzeit bekannt.
Also, keine Tricks, lernen Sie die Sprache.
Nein, das ist es nicht.SymbolInfoSessionTrade zeigt an, wenn gehandelt wird, undSymbolInfoSessionQuote, wenn die Notierungen eintreffen.
ap: Das sollte helfen.
boolIsTradeAllowed(
const string symbol// symbol
datetimetested_time//time
);
Ich glaube nicht, dass das der Fall ist. Hier gibt es ein spezielles Thema: https://www.mql5.com/ru/forum/40295
Ich habe es mir nicht ganz durchgelesen, zumal es für MQL4 ist.
Ich glaube nicht, dass der Server Symbol-Kurse senden sollte, wenn der Markt geschlossen ist.
Mein Roboter ist davon nicht wirklich betroffen, weil er nach der "Markteröffnung", wenn die Ticks eintreffen, den Trend und die Umkehrungen analysiert, und das dauert einige Zeit. Während dieser Zeit öffnet der Markt.
Es ist jedoch hinderlich, wenn wir während dieser Zeit manuell einige Geschäfte abschließen wollen. Wenn die Ausführung marktbasiert ist, bleibt die Anfrage bis zur Öffnung des Marktes in der Schwebe und wird natürlich zum aktuellen Preis ausgeführt.
Die direkte Funktion, die den Namen des Symbols erhält und true/false (Markt offen/geschlossen) zurückgibt, fehlt eindeutig.