Hier sehen Sie, was Sie mit OpenCL direkt in MetaTrader 5 ohne DLLs machen können - Seite 6

 
Alexey Volchanskiy:

Es gibt ein großes Problem mit OCL und generell mit allen Möglichkeiten der Parallelisierung - nur sehr wenige Algorithmen können effektiv parallelisiert werden. Warum in den Beispielen des parallelen Rechnens so beliebt sind Simulation von Wellen, Kugel fallen auf eine Pyramide mit ihrer Zerstörung, dh alles, was in kleine Stücke gebrochen werden kann und berechnet auf Ihrem eigenen Prozessor.

Für fora/bear sind dies natürlich neuronale Netze, verschiedene Fourier-Transformationen, Wavelets, Filter usw., die alle vollkommen parallel sind. Es gibt jedoch lineare Algorithmen, die überhaupt nicht parallelisiert werden können. Dies ist in der Regel der Fall, wenn das Ergebnis des nächsten Algorithmus-Schrittes auf dem Ergebnis des vorherigen Schrittes basiert.

Ich habe dies für diejenigen geschrieben, die denken, dass ich zwei coole Grafikkarten kaufen werde und alles wird in meinem Testgerät gut funktionieren.

Wenn ich mir den Algorithmus ansehe, habe ich das Gefühl, dass der Algorithmus auf den Ergebnissen des vorherigen Schritts basiert, also habe ich das geschrieben, für diejenigen, die denken, dass sie 2 coole Videokarten kaufen sollten, aber in meinem Testgerät wird alles funktionieren. Wenn Sie mit ihr Handel treiben wollen, müssen Sie eine gute Beziehung zu ihr haben.

 
Alexey Volchanskiy:

Es gibt ein großes Problem mit OCL und generell mit allen Möglichkeiten der Parallelisierung - nur sehr wenige Algorithmen können effektiv parallelisiert werden. Warum in den Beispielen des parallelen Rechnens so beliebt sind Simulation von Wellen, Kugel fallen auf eine Pyramide mit ihrer Zerstörung, dh alles, was in kleine Stücke gebrochen werden kann und berechnet auf Ihrem eigenen Prozessor.

Für fora/bear sind dies natürlich neuronale Netze, verschiedene Fourier-Transformationen, Wavelets, Filter usw., die alle vollkommen parallel sind. Es gibt jedoch lineare Algorithmen, die überhaupt nicht parallelisiert werden können. Dies ist in der Regel der Fall, wenn das Ergebnis des nächsten Algorithmus-Schrittes auf dem Ergebnis des vorherigen Schrittes basiert.

Ich schrieb dies für diejenigen, die begierig sind, zwei kühle kühle Patronen zu kaufen und alles wird gut gehen in meinem Tester.

Wenn die interne Logik des EA nicht parallelisiert ist, kann der gesamte EA parallelisiert werden, ein Thread - ein EA. So funktionieren die Cloud und Agenten im Allgemeinen - ein Thread == ein EA == ein Verlaufslauf, ich habe ein Beispiel für eine solche Parallelisierung gegeben.

Mit diesem Ansatz lassen sich beispielsweise nicht nur hausgemachte Optimierer ohne großen Aufwand deutlich beschleunigen, sondern auch interne, selbstmotivierte Optimierungen als Teil der allgemeinen Optimierung in der Cloud durchführen (z.B. Optimierung mit internem Rollforward). Und natürlich verbietet niemand die Verwendung zusätzlicher Parallelisierung innerhalb jedes Threads (ich habe es in meinem Beispiel nicht getan, obwohl es möglich ist). Wenn es um Optimierung geht, können wir also sagen, dass es immer etwas gibt, das man parallelisieren kann.

 
Andrey Dik:

Wenn die interne Logik des EA nicht parallelisiert ist, können Sie den gesamten EA parallelisieren, ein Thread - ein EA. So funktionieren die Cloud und die Agenten im Allgemeinen, ein Thread == ein EA == ein Verlaufslauf, ich habe ein Beispiel für eine solche Parallelisierung gegeben.

Mit diesem Ansatz lassen sich beispielsweise nicht nur hausgemachte Optimierer ohne großen Aufwand deutlich beschleunigen, sondern auch interne, selbstmotivierte Optimierungen als Teil der allgemeinen Optimierung in der Cloud durchführen (z.B. Optimierung mit internem Rollforward). Und natürlich verbietet niemand die Verwendung einer zusätzlichen Parallelisierung innerhalb jedes Threads (ich habe es in meinem Beispiel nicht getan, obwohl es möglich ist). Wenn es um Optimierung geht, können wir also sagen, dass es immer etwas gibt, das man parallelisieren kann.

Das ist alles wahr, aber was hat die Hervorhebung mit OCL zu tun? Es liegt an den Entwicklern des Optimierers, die Optimierung auf dem Grafikprozessor wie in der Cloud bereitzustellen, was meines Erachtens noch nicht der Fall ist. Oder meinen Sie das Schreiben eines Wrappers um den EA, innerhalb dessen sie als OCL-Threads ausgeführt werden? Der Optimierer von heute würde einen solchen Schritt nicht verstehen.

Alles, was Sie jetzt tun müssen, ist, Ihren eigenen Optimierer selbst zu schreiben, Sie können alles tun, was Sie wollen.

Im Allgemeinen war der Zweck des Beitrags, Nicht-Programmierer oder Programmieranfänger zu ernüchtern, um unnötige Illusionen zu beseitigen.

 
Alexey Volchanskiy:

Das stimmt alles, aber was hat die Hervorhebung mit OCL zu tun? Es ist die Aufgabe der Optimierungsentwickler, die Optimierung auf dem Grafikprozessor wie in der Cloud bereitzustellen, was meines Wissens noch nicht der Fall ist. Oder meinen Sie das Schreiben eines Wrappers um den EA, innerhalb dessen sie als OCL-Threads ausgeführt werden? Der Optimierer von heute würde einen solchen Schritt nicht verstehen.

Alles, was Sie jetzt tun müssen, ist, Ihren eigenen Optimierer selbst zu schreiben, Sie können alles tun, was Sie wollen.

Eigentlich ging es in dem Beitrag darum, Nicht-Programmierer oder Anfänger im Allgemeinen zu ernüchtern und ihnen unnötige Illusionen zu nehmen.

Ich habe ein Beispiel gegeben, bei dem die gesamte Logik des EA zusammen mit dem getesteten Verlauf an das OCL-Gerät gesendet wird(ein Thread == ein EA == ein Verlaufslauf). Diese Lösung ist für den Prüfer und den Optimierer verständlich. Natürlich ist diese Lösung für Programmierer gedacht.

Aber für normale Benutzer - ja, sie werden keine Geschwindigkeit von Innovationen in ihren EAs bekommen. Dies ist nur möglich, wenn es den Entwicklern gelingt, einen gesamten EA in Form eines neu kompilierten spezifischen Programms, ähnlich wie bei Shadern, an OCL zu senden, was aber bisher nicht der Fall ist.

 
Andrey Dik:

Ich habe ein Beispiel gegeben, bei dem die gesamte EA-Logik zusammen mit dem geprüften Verlauf an das OCL-Gerät gesendet wird(din thread == ein EA == ein Verlaufslauf). Diese Lösung ist für den Prüfer und den Optimierer verständlich. Natürlich ist diese Lösung für Programmierer gedacht.

Aber für normale Benutzer - ja, sie werden keine Geschwindigkeit von Innovationen in ihren EAs bekommen. Dies ist nur möglich, wenn es den Entwicklern gelingt, einen kompletten EA in Form eines neu kompilierten spezifischen Programms an OCL zu senden, ähnlich wie bei Shadern, aber davon ist bisher nicht die Rede.

Zu dem Beispiel kann ich noch nichts sagen; ich muss mir OCL noch persönlich ansehen, aber es scheint zu funktionieren.

Andererseits glaube ich nicht wirklich an die hervorgehobenen Punkte. MQ wird einige Brücken schreiben müssen, die es erlauben, MQL API aus OCL zu ziehen, insbesondere Handelsfunktionen, Zugriff auf Zeitreihen und Indikatoren... Das ist völlig düster, MT5 hat noch viele Kinderkrankheiten, die noch behoben werden, meist durch einen Verweis auf SD.

 
Alexey Volchanskiy:

Über das Beispiel kann ich noch nicht urteilen, ich muss das OCL erst persönlich fühlen, aber es scheint ein lebendiges zu sein.

Aber ich glaube nicht wirklich an den hervorgehobenen Punkt. MQ wird einige Brücken schreiben müssen, um die MQL-API von OCL nutzen zu können, insbesondere Handelsfunktionen, Zugriff auf Zeitreihen, Indikatoren... Das ist ein totaler Schwachsinn, MT5 hat immer noch jede Menge kindische Nebenwirkungen, die immer noch korrigiert werden, meist über SD.

Das ist in Ordnung, aber die Tatsache, dass der Meta-Editor auf dem Niveau von "Notepad" von 1995 bleibt, ist ziemlich traurig, und mit der Tatsache, dass es 2017 ist. Sie tun etwas, aber um etwas dafür zu schreiben, muss man in einem alten Editor schreiben.

Meine Herren ENTWICKLER, machen Sie wenigstens eine Spielhervorhebung, wie in Notepad!

 
Alexey Volchanskiy:

Das ist großartig, aber es gibt ein großes Problem mit OCL und allen Parallelisierungswerkzeugen im Allgemeinen - nur sehr wenige Algorithmen können effektiv parallelisiert werden.



Tyu, es ist ganz einfach. Sie müssen nicht darüber nachdenken, ob ein Algorithmus parallel ist oder nicht. Der Ansatz ist folgender: Wenn Sie sich den Algorithmus ansehen - Sie sehen eine Schleife -> denken Sie daran, dass sie bereits parallelisiert werden kann (eine gute Wahrscheinlichkeit). Keine Schleifen - kein Grund zur Sorge.

 
Vitaly Muzichenko:

Das ist in Ordnung, aber die Tatsache, dass der Meta-Editor auf dem Niveau von Notepad von 1995 bleibt, ist ziemlich traurig, auch wenn wir 2017 haben. Sie tun etwas, aber um etwas dafür zu schreiben, muss man in einem alten Editor schreiben.

Meine Herren ENTWICKLER, machen Sie wenigstens eine Spielhervorhebung, wie in Notepad!

Ja, ich habe hier schon zwei Beiträge darüber geschrieben, wie plump die Zecken sind. Sie wurden gelöscht. Und Ihr Beitrag wird gelöscht. Die Admins/Moderatoren müssen in diesem Thread keine MQ-Mängel erwähnen. Festmahl während der Pest...
 
Alexey Kozitsyn:
Ja, ich habe hier schon 2 Beiträge darüber geschrieben, dass die Zecken roh sind. Gelöscht. Und Ihr Beitrag wird gelöscht. Die Admins/Moderatoren müssen in diesem Thread keine MQ-Mängel erwähnen. Festmahl während der Pest...

Irgendwie erinnert das daran, dass man ein Auto lackiert, mit Titanfelgen und allem möglichen unnötigen Schnickschnack ausstattet, aber der Motor des Wagens davor ist "kaputt" und klemmt, das ist alles unnötig, weil der Wagen kaputt ist.

Und hier ein Haufen allerlei Gimmicks zum Schreiben, aber wo es drauf ankommt, ist auf der Ebene von 1995, darin zu schreiben - eine Tortur, wenn der Code aus mehr als 200 Zeilen besteht

und zur gleichen Zeit schreibt Renat:

Renat Fatkhullin:

Leider müssen Sie OpenCL unter Windows XP vergessen. Und 32-Bit-Betriebssysteme im Allgemeinen - 2017 wird kommen.

Wo ist dann der Meta-Editor von 2016?

Bitte machen Sie zumindest Code-Hervorhebung, und schließlich, wenn möglich - Faltung!

 
Vitaly Muzichenko:

Irgendwie erinnert das daran, dass man ein Auto lackiert, Titanfelgen und allen möglichen unnötigen Schnickschnack daran anbringt, aber der Motor des Wagens, der vorher "geklopft" und geklemmt hat, das ist alles unnötig, weil der Wagen kaputt ist.

Und hier ein Haufen allerlei Gimmicks zum Schreiben, aber wo es drauf ankommt, ist auf der Ebene von 1995, darin zu schreiben - eine Tortur, wenn der Code aus mehr als 200 Zeilen besteht

und zur gleichen Zeit schreibt Renat:

Wo ist denn der Meta-Editor 2016?

Bitte machen Sie zumindest Code-Hervorhebung, und schließlich, wenn möglich - Faltung!

Auch ich wundere mich manchmal über die Richtung, die MT einschlägt. Aber die Entwickler wissen es am besten...