Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 245
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
Im Skript habe ich dies getan:
Zeit=0
SymbolInfoTick am Montag.
Sie können dies mit diesem Code überprüfen:
Aber Sie brauchen Ticks pro Symbol.
Sie können dies mit diesem Code überprüfen:
Aber Sie brauchen Ticks pro Symbol.
Ja,"SymbolInfoTick", heute keine Prüfung.
Ich habe es versucht, aber es funktioniert nicht, bis die Zecken da sind.
iask=0Ja, SymbolInfoTick, heute keine Prüfung.
Ich habe es versucht, aber bis die Zecken verschwunden sind, funktioniert nichts.
iask=0Diese Funktion ist zu schnell.
Um die Leistung zu messen, müssen Sie mehrere Aufrufe in einer Schleife mit einer großen Anzahl von Iterationen durchführen und die Gesamtausführungszeit messen.
Umso interessanter ist es, dass es einen Beispielcode gibt. Wir warten auf das Ergebnis.
Um einen neuen Balken im EA zu überprüfen, habe ich Funktionen verwendet, die auf "CopyTime" und "CopyRates" basieren und die ich in den Foren gefunden habe. Ich bin zu dem Schluss gekommen, dass ihre Berechnung sehr viel Zeit in Anspruch nimmt.
Hier sind die Prüfdaten (interessant ist, dass der Aufruf des Indikators 171 ms dauert):
Und da kam mir die Idee, dass ich etwas anderes versuchen sollte. Zum Beispiel "TimeCurrent".
Ich habe den folgenden Code zur Optimierung erstellt:
Haben Sie den folgenden Code für die Optimierung in Expert Advisor:
Ergebnis im Einzellauf ohne Prüfung auf einen neuen Balken, wenn die Indikatorwerte bei jedem Tick empfangen werden: 817,196 ms
Mit Prüfung eines neuen Balkens: 735 904 ms
Der Unterschied ist nicht besonders beeindruckend, es gibt eine gewisse Verbesserung, aber es ist nicht genug.
Ich erhalte den Indikator wie folgt:
Ich habe versucht, Code mit Aufrufen von Handles in den Block zu setzen, in dem die Prüfung des neuen Taktes stattfindet, aber es erscheint ein Fehler, wenn ich
Ich habe return gibt nichts, kein Fehler, aber EA funktioniert nicht.
Ich nehme an, dass der Hendle-Aufruf, wenn es möglich ist, und im Allgemeinen der gesamte Hauptcode mit Ausnahme der statischen Variable innerhalb des bedingten Operators platziert werden sollte, der auf einen neuen Takt prüft.
Wenn ich mich nicht irre, habe ich irgendwo gelesen, dass auch dann, wenn wir einen Handle aufrufen, aber keinen Indikator in Puffern anfordern, dieser trotzdem berechnet wird.
Wer kann vorschlagen, wie man einen Indikator erstellt, der die Ergebnisse einer einzigen Formel buffer[i] = (1.3747-(MarketInfo("EURUSD", MODE_BID))+0.8835-(MarketInfo("USDCHF", MODE_BID)))*10000 anzeigt;
Sie müssen einen benutzerdefinierten Indikator schreiben. Um den Prozess zu vereinfachen, nehmen Sie einen der einfachsten Indikatoren -iMa- und schreiben Sie ihn ein wenig um. Hier ist ein weiteres Thema, in dem es um MarketInfo geht. Schreiben Sie den Code, fragen Sie nach, wenn etwas nicht funktioniert.
Was ist mit den statischen Variablen passiert? Habe heute den alten Build des Terminals aktualisiert und jetzt gibt es Fehler beim Kompilieren:
Die statischen Mitgliederdaten der Klasse müssen nun platziert werden: