Diskussion zum Artikel "LifeHack für Händler: Fast-Food aus Indikatoren" - Seite 13

 
Vladimir Karputov:

- Sie hatten einen schönen Code und eine Beschreibung der Messergebnisse.

Ich hatte noch keine Gelegenheit, mir den Code anzusehen.

 

Aufruf von Indikatoren im MQL4-Modus ist die Geschwindigkeit um 40% niedriger.

MQL5-Stil

i = 0 Pass = 0 OnTester = 7.679 s.: Count = 9986677, 1300517.9 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755
i = 1 Pass = 1 OnTester = 7.645 s.: Count = 9986677, 1306301.8 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755


MQL4-Stil (ohne Cache)

i = 0 Pass = 0 OnTester = 14.117 s.: Count = 9986677, 707422.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755
i = 1 Pass = 1 OnTester = 14.067 s.: Count = 9986677, 709936.5 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755


MQL4-Stil(mit Cache)

i = 0 Pass = 0 OnTester = 10.077 s.: Count = 9986677, 991036.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755
i = 1 Pass = 1 OnTester = 10.104 s.: Count = 9986677, 988388.5 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 build = 1755

Die Variante mit Cache ist 32 % langsamer als die Variante im MQL5-Stil. Bei der Variante ohne Cache konnten die genannten 40% nicht erreicht werden. Wie zuvor ist sie doppelt so langsam. Aber die Übereinstimmung in Bezug auf den Gewinn ist sicherlich vorhanden.

 

Sorry, aber ich verstehe nicht einmal, warum dieser Artikel von Metaquotes veröffentlicht werden durfte.

Die wichtigsten Vorteile der Indikator-Handle in mql5 ist die Fähigkeit, mehrere Werte aus einem Puffer zu erhalten, Sie vollständig zu verwerfen es. Und das, um einen Code, der weitgehend weniger effizient die meiste Zeit sein wird! Ich bin nicht einmal über schlechte Programmierpraxis, die darin besteht, nicht zu überprüfen, zurückgegebenen Wert einer Funktion.

Dieser Artikel ist nutzlos oder sogar noch schlimmer. Seien Sie nicht überrascht, dass die Leute weiterhin mql4 verwenden wollen.

 
Alain Verleyen:

Es tut mir leid, aber ich verstehe nicht einmal, warum dieser Artikel von Metaquotes veröffentlicht werden durfte.

Die wichtigsten Vorteile der Indikator-Handle in mql5 ist die Fähigkeit, mehrere Werte aus einem Puffer zu erhalten, Sie vollständig zu verwerfen es. Und das, um einen Code, der weitgehend weniger effizient die meiste Zeit sein wird! Ich bin nicht einmal über schlechte Kodierung Praxis, bestehend aus nicht überprüfen zurückgegebenen Wert einer Funktion.

Dieser Artikel ist nutzlos oder sogar noch schlimmer. Seien Sie nicht überrascht, dass die Leute weiterhin mql4 verwenden wollen.

Ich glaube nicht, dass Sie recht haben. Dieser Artikel hilft erstens nicht so gebildeten und flexiblen Hobbyprogrammierern, die Handhabung der Indikatoren in MQL5 im Vergleich zu MQL4 zu verstehen und zeigt ihnen zweitens einen Weg, wie sie Indikatoren auf die gleiche Weise verwenden können, wie sie es in MQL4 gewohnt sind.
 

Wenn ich ein einfaches iVolume in einer Schleife über alle verfügbaren Instrumente in MQL5 laufen lasse, dann friert die Plattform einfach ein, die massiven Copybuffer-Aufrufe wirken wie ein DDoS-Angriff auf das Betriebssystem, es stolpert einfach, während es, wenn ich denselben Prozess in MQL4 durchführe, glatt läuft wie eine Packung heißer geschmolzener Butter.

Auf der gleichen Maschine, und das sagt mir mehr als ich wissen muss.

Kombinieren Sie das mit all den Signalen und Geräuschen aus der Community, die mir sagen, dass meine Schlussfolgerungen die ganze Zeit richtig waren.

 
Nur markieren
 

Das Problem ist: Warum muss ich den Puffer jedes Mal kopieren, wenn ich den Indikatorwert ablesen will? Der Puffer ist da, er ist bereits berechnet, warum kann ich nicht direkt auf seinen Wert zugreifen?

Das ist unsinnig!

Ich sollte nur direkten Zugriff auf den Indikatorpuffer haben, das ständige Kopieren verschlechtert nur die Leistung.

Ich verstehe wirklich nicht, warum Metaquotes diese Arbeitsweise gewählt hat.

CopyBuffer(...) vs buffer[i] ?

 
ludoz:

Das Problem ist: Warum muss ich den Puffer jedes Mal kopieren, wenn ich den Indikatorwert ablesen will? Der Puffer ist da, bereits berechnet, warum kann ich nicht direkt auf seinen Wert zugreifen?

Das ist doch unsinnig!

Ich sollte nur direkten Zugriff auf den Indikatorpuffer haben, das ständige Kopieren verschlechtert nur die Leistung.

Ich verstehe wirklich nicht, warum Metaquotes diese Arbeitsweise verfolgt hat.

CopyBuffer(...) vs buffer[i] ?

Weil das nicht so einfach ist. Der Indikator läuft auf einem Thread und ein EA auf einem anderen Thread (und Sie können mehrere Indikatoren/mehrere EAs haben). Wenn Sie sich über eine so einfache Prozedur wie handle/CopyBuffer beschweren, wollen Sie nicht mit einer Multithread-Anwendung fortfahren, glauben Sie mir.

mql5 bietet generische Lösungen, die die meisten "normalen" Situationen bewältigen können. Wenn Sie ein spezielles Problem in Ihrem Projekt haben, gibt es immer eine Lösung.

 
Es ist jetzt MQL5, aber die meisten Leute benutzen immer noch mt4.