![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
Die einzige Peinlichkeit ist der zweite Ausrutscher. Der Rest ist in Ordnung.
Offensichtlich ist der Profiler nicht geeignet, um Codeabschnitte, die schneller als ein paar Millisekunden laufen, zu beschleunigen.
Der EA befindet sich 30ms lang in einem Schlupf und der Profiler zeigt, dass er in einer Funktion mit drei Additionen und zwei Multiplikationen sogar 13% lang war!
Und genau das zeigt b2593.
Da gibt es nichts zu sehen! Denn dort gibt es in der Tat nichts. Außerdem ist im zweiten Bericht alles klar und deutlich.
Lassen Sie uns das klären, damit wir uns verbessern können, anstatt zu fluchen.
Der Profiler zeigt, dass ganze 13% davon in einer Funktion mit drei Additionen und zwei Multiplikationen stecken!
Deshalb habe ich mich gefragt, warum der EA, dessen voller OnTick-Durchlauf im Durchschnitt 3 ms dauert (er ist voll mit Berechnungen und der Arbeit mit der Handelsumgebung), wenn die Profilierung angeblich 60% in "drei Additionen und zwei Multiplikationen" ist. Ich habe mir diese prägnanten Beispiele ausgedacht.
Ich möchte einen alten Profiler in MT5 verwenden, aber ich muss solche Tänze mit Builds machen. Ich habe es noch nicht geschafft, ihn zu starten.
Bitte helfen Sie mir bei der Interpretation der Profiler-Daten anhand eines einfachen Beispiels.
Das sieht nach einem Haufen Unsinn aus.
Ich versuche wirklich, den Dreh rauszukriegen, habe aber noch kein Glück.
Habe auch Sleep Replacement ausprobiert.
Immer noch keine klaren Profiler-Werte.
Was steht im Anrufbericht?
Ich habe den Eindruck, dass dieser Code nicht mit dem Screenshot-Bericht übereinstimmt.
Sind Sie sicher, dass Sie den Code nicht korrigiert haben, während der Profiler lief?
Was steht im Anrufbericht?
Es entsteht der Eindruck, dass der angegebene Code nicht mit dem Bericht auf dem Screenshot übereinstimmt.
Sind Sie sicher, dass Sie den Code nicht korrigiert haben, während der Profiler lief?
Nein, das habe ich nicht.
Ich brauche Hilfe beim Entschlüsseln der Profilergebnisse.
Bitte helfen Sie mir, die Ergebnisse des Profilers zu entschlüsseln.
Was ist nicht klar?
Normalerweise sortiere ich nach Gesamt-CPU und schaue, was das Programm insgesamt am meisten verlangsamt. Das kann nützlich sein.
Ich habe 5700 Aufträge in meiner Historie, und wenn ich ihn das erste Mal ausführe, erhalte ich fast einen leeren Bericht, und dann bekomme ich etwas wie das hier:
HistoryDealGetInteger (alle Aufrufe benötigten 36 %) und HistorySelect (27 %) fressen am meisten. Danach folgen HistoryOrderGetInteger (18 %) und global_initialization (9 %).
Die restlichen 10 % wurden für den Rest des Codes verwendet.
Aber es macht keinen Sinn, die Ergebnisse während einer so schnellen Einzelausführung zu betrachten.
Was ist nicht klar?
Ein Problem der Interpretation. Es ist nicht klar, was, wo und wie die Verlangsamung stattfindet.
Normalerweise sortiere ich nach Gesamt-CPU und schaue, was das Programm insgesamt am meisten verlangsamt. Das kann nützlich sein.
Ich habe einen fast leeren Bericht über den ersten Lauf mit 5700 Aufträgen in der Historie, und dann habe ich dies:
HistoryDealGetInteger (alle Aufrufe benötigten 36 %) und HistorySelect (27 %) fressen am meisten. Dann folgen HistoryOrderGetInteger (18 %) und global_initialization (9 %).
Die restlichen 10 % gingen an den Rest des Codes.
Ich danke Ihnen für Ihre ausführliche Antwort. Ich verstehe nur nicht, warum die 45%-Saiten und der Rest nicht berücksichtigt wurden?
Aber es macht keinen Sinn, die Ergebnisse bei einer so schnellen Einzelleistung zu betrachten, denke ich.
Ich habe eine 20-fache Wiederholung der langen Geschichte hinzugefügt.
29,41 % (es ist unklar, warum) ist auf eine schließende Klammer nach der Rückgabe zurückzuführen. Es ist schwer zu interpretieren.