Theorie der EA-Beschleunigung bei Verwendung eines benutzerdefinierten Indikators (Funktion - iCustom) - Seite 2

 
komposter:

Und wenn der Indikator 5 Puffer ist, dann wird der erste Aufruf von iCustom alle Puffer berechnen, die nachfolgenden Aufrufe und Anforderungen für andere Puffer werden nur die fertigen Informationen lesen (bis zum Erscheinen neuer Daten für die Berechnung).

D.h., wenn der Indikator mindestens einmal aufgerufen wurde, hat er die Informationen nicht nur über den angeforderten Puffer, sondern über alle im Indikator enthaltenen Puffer erhalten? Oder, es bedeutet, dass die Berechnung anderer Puffer im Speicher gefunden wird und es keine Neuberechnung aufgrund dessen gibt - die Daten werden aus dem RAM genommen, wenn es nicht explizit vorher aufgerufen wurde (das Programm (EA) hat nicht explizit Speicher für die Speicherung von Indikatordaten zugewiesen). Ich habe vorher gelesen, dass jedes Mal, wenn der Indikator aufgerufen wird, er neu berechnet wird - ist es nicht so?

komposter:

Wenn Sie einen wirklich schweren Indikator haben, überlegen Sie sich ein eigenes Cache-System, so dass beim ersten Aufruf die Daten berechnet und in die Datei geschrieben werden, und beim nächsten Aufruf nur noch gelesen werden. Ich habe es auf diese Weise gemacht, es geht viel schneller.

Aber in 95 % der Fälle ist das alles nicht nötig, der Tester ist schon schnell genug, und in 5 Fällen kann man auch die Cloud anschließen.

Viel Glück!

Wäre das Lesen von einer Festplatte schneller, oder haben Sie ein virtuelles Laufwerk im Speicher mit den berechneten Indikatordaten erstellt?

Nun, ich träume nur von den fünf, im Moment setze ich nur bei den vier eigene Ideen um.

Danke, dass Sie mir Glück gewünscht haben!

 
komposter:

Wenn Sie einen wirklich schweren Indikator haben, entwickeln Sie Ihr eigenes Cache-System, so dass beim ersten Durchlauf die Daten berechnet und in die Datei geschrieben werden, und bei den folgenden Durchläufen nur noch gelesen werden. Ich habe es auf diese Weise gemacht, es geht viel schneller.

Aber in 95 % der Fälle ist das alles nicht nötig, der Tester ist schon schnell genug, und in 5 Fällen kann man auch die Cloud anschließen.

Viel Glück!

Ich spreche nicht von einem Indikator, sondern von einem Expert Advisor, aber das Thema ist ähnlich. Mein Scalper zählt ziemlich viel, alle Arten von Filtern, Umrechnungen. Ich habe mein Modell in Matlab zwischengespeichert und zunächst alle mathematischen Daten berechnet und in eine .mat-Datei eingegeben, und dann diese Daten verwendet, um eine Strategie auszuführen. Jetzt juckt es mich in den Fingern, dasselbe für MQL4 Strategy Tester zu tun, denn die Optimierung ist einfach unwirklich.
 
-Aleks-:

D.h. wenn der Indikator mindestens einmal vom Programm aufgerufen wird, hat es nicht nur Informationen über den angeforderten Puffer erhalten, sondern auch über alle, die im Indikator enthalten sind? Oder es bedeutet, dass die Berechnung anderer Puffer im Speicher gefunden wird und es dadurch keine Neuberechnung gibt - die Daten werden dem RAM entnommen, wenn es nicht explizit vorher aufgerufen wurde (das Programm (Expert Advisor) hat nicht explizit Speicher für die Speicherung von Indikatordaten zugewiesen). Ich habe gelesen, dass der Indikator jedes Mal, wenn er aufgerufen wird, neu berechnet wird - funktioniert das nicht so?

Der Indikator kann nicht nur einen Puffer berechnen, sondern berücksichtigt bei jedem Aufruf alles, was sich in ihm befindet. Es sei denn, Sie können die Berechnung durch Parameter einschränken, aber das ist ein anderes Thema.

Die Neuberechnung erfolgt bei jedem Aufruf, aber in der Regel wird nur der 0. Takt neu berechnet. Und wenn ein EA intelligent geschrieben ist, erfolgen diese Aufrufe nicht bei jedem Tick.

-Aleks-:

Wäre das Lesen von einer Festplatte schneller oder haben Sie im Speicher eine virtuelle Festplatte mit berechneten Indikatordaten angelegt?

Ich lese von einer normalen Festplatte, aber nicht die Indikatorwerte auf jedem Balken, sondern den String "time;signal"; solche Daten sind viel weniger notwendig.

Es ist unwahrscheinlich, dass es eine Universallösung für jeden Indikator gibt, Sie sollten sich auf das globale Problem verlassen.

-Aleks-:

Vom Fünf-Indikator habe ich nur geträumt, meine Ideen zum Vier-Indikator habe ich nur realisiert.

Der einzige Unterschied besteht im Handelsteil und in der Arbeit mit Zeitserien (einschließlich Indikatoren).

Und die Cloud ist eine wirklich mächtige Sache.

 
VDev:
Ich spreche nicht über den Indikator, sondern über den Expert Advisor, aber das Thema ist ähnlich. Ich habe einen Scalper, der eine ganze Menge berechnet, alle möglichen Filter und Transformationen. Ich habe das Modell in Matlab zwischengespeichert und zunächst alle mathematischen Daten berechnet und in eine .mat-Datei eingegeben und dann diese Daten zur Ausführung einer Strategie verwendet. Jetzt juckt es mich in den Fingern, dasselbe für MQL4 Strategy Tester zu tun, denn die Optimierung ist einfach unwirklich.

Es macht kaum Sinn, einen Cache für einen separaten Indikator zu haben, ich bin auch von den Daten ausgegangen, die im EA benötigt werden.

Grob gesagt, wurden Bereitschaftssignale aufgezeichnet, und dann wurden sie nur noch gelesen und Eingaben und Positionshilfen durchgeführt.

 
komposter:

Der Indikator kann nicht nur einen Puffer berechnen, sondern er berechnet bei jedem Aufruf alles, was sich darin befindet. Es sei denn, die Berechnung kann durch die Parameter eingeschränkt werden, aber das ist ein anderes Thema.

Die Neuberechnung erfolgt bei jedem Aufruf, aber in der Regel wird nur der 0. Takt neu berechnet. Und wenn ein EA intelligent geschrieben ist, dann erfolgen diese Aufrufe nicht bei jedem Tick.

Es stellt sich also heraus, dass, wenn wir einen Indikator mit vielen Puffern adressieren und Informationen über alle von ihnen von einem von ihnen erhalten, dann wird es schneller und sparsamer in Bezug auf den Speicher sein, als so viele Male zu berechnen, wie die Informationen aus seinen verschiedenen Puffern für diesen Indikator benötigt werden?


Aber vielleicht könnte jemand ein Experiment machen, denn die Idee beschäftigt mich! Oder ist die Innovationsforschung nur gegen Bezahlung interessant?

 
OnCalculate() des Indikators wird nur dann aufgerufen, wenn iCustom() zum ersten Mal bei einem neuen Preis aufgerufen wird. Die nächsten iCustom()-Aufrufe werden nur Daten abrufen, ohne onCalculate() zu starten. Sagen wir, der Preis ändert sich, der nächste iCustom()-Aufrufstartet onCalculate(), die nächsten Aufrufe empfangen nur Daten und so weiter, bis sich der Preis ändert, usw. (wird gerade experimentell getestet).
 
-Aleks-:

Am Ende stellt sich also heraus, dass es schneller und speichersparender ist, wenn man einen Indikator mit vielen Puffern anspricht und von einem dieser Puffer Informationen über alle abruft, als wenn man berechnet, wie oft dieser Indikator Informationen aus seinen verschiedenen Puffern benötigt?

1 Indikator für 5 Puffer oder 5 Indikatoren für 1 Puffer ist ungefähr dasselbe.
Wenn Sie nur Informationen aus 2 Puffern benötigen, ist es günstiger, 2 Indikatoren mit 1 Puffer aufzurufen als einen Indikator mit 5 Puffern. Aber nicht profitabler als ein Indikator mit 2 Puffern.


-Aleks-:

Aber vielleicht könnte jemand ein Experiment machen, denn die Idee beschäftigt mich! Oder ist die Innovationsforschung nur gegen Bezahlung interessant?

komposter:

Dieser Ansatz verringert den Speicherverbrauch des Indikators (etwa ein Vielfaches der Differenz zwischen der Anzahl der Puffer vorher und nachher), erhöht aber die Belastung des Prozessors (und "build" und "decompose" müssen ständig durchgeführt werden).

Wenn Sie nicht an die Speichergrenze stoßen (was bei den aktuellen Volumes unwahrscheinlich ist), wird es nur langsamer.

 

Ich habe das Gefühl, missverstanden zu werden! :)

Aber ich verstehe, dass ich es wahrscheinlich bin, der es nicht versteht.

Angenommen, wir rufen den benutzerdefinierten Indikator im Code auf - wir müssen den Puffer dieses Indikators angeben und dann, nach dem Code, rufen wir den benutzerdefinierten Indikator erneut mit demselben Namen wie beim ersten Mal, aber mit einem anderen Puffer auf.

Frage: Wird der Indikator zweimal oder nur einmal berechnet?

 
-Aleks-:

...

Frage: Wird der Indikator zweimal oder nur einmal berechnet?

Einmal.
 
Integer:
Einmalig.
Ein Sammelsurium der richtigen Indikatoren funktioniert also schneller als die Verwendung der einzelnen Indikatoren, so dass es weniger Anfragen nach Kursinformationen geben wird?
Grund der Beschwerde: