Asynchrone und mehrfädige Programmierung in MQL - Seite 37

 

Ich habe verstanden, warum std::async so langsam ist. Das Problem ist, dass ich Linux+gcc/clang habe, es gibt keinen Thread-Pool hinter async, ein neuer Thread wird dummerweise jedes Mal für jeden neuen Auftrag gestartet. Was mich verwirrte, war, dass zwei Threads, die nacheinander erstellt und sofort wieder gelöscht wurden, die gleiche ID hatten:

void f() {
   cout << this_thread::get_id() << endl;
}

int main()
{
   thread t1{f};
   t1.join();

   thread t2{f};
   t2.join();
   return 0;
}
// cout: 140448079447808
// cout: 140448079447808

Der async-Test auf wind+msvc zeigte, dass in dem Test, in dem gcc 10 Threads startete, msvc 6 startete (4-Kern-CPU), d.h. es ist nicht ein dummer neuer Thread, der für die Aufgabe startet, es gibt offensichtlich eine Art Warteschlange.

Fazit: mehr oder weniger adäquate Asynchronität nur auf Winnda (via Threadpool).

В моём случае это точно, так как понял что пул статичный по количеству потоков, мне это не подходит.

Der Pool ist nicht statisch und kann in seiner Größe verändert werden. Aber als ob Sie async() stark kontrollieren :), wie es offensichtlich ist - der Standard garantiert nicht einmal die Implementierung (ein Thread-Pool oder nicht), und wenn es ein Pool ist, haben Sie keinen Einfluss darauf (der Compiler kann 1 Thread dem Pool zuweisen wollen, er wird Sie nicht einmal fragen).

Aber wenn Sie nur für Wind schreiben, dann könnte async verwendet werden (obwohl ich es jetzt nicht mag).

SZY: warum wir async ohne Threadpool brauchen, verstehe ich überhaupt nicht ...

 
Vict:

Ich habe verstanden, warum std::async so langsam ist. Das Problem ist, dass ich Linux+gcc/clang habe, es gibt keinen Thread-Pool hinter async, ein neuer Thread wird dummerweise jedes Mal für jeden neuen Auftrag gestartet. Was mich verwirrte, war, dass zwei Threads, die nacheinander erstellt und sofort wieder gelöscht wurden, dieselbe ID hatten:

Der async-Test auf wind+msvc zeigte, dass in dem Test, in dem gcc 10 Threads startete, msvc 6 startete (4-Kern-CPU), d.h. es ist nicht ein dummer neuer Thread, der für die Aufgabe startet, es gibt offensichtlich eine Art Warteschlange.

Fazit: mehr oder weniger adäquate Asynchronität nur auf Winnda (via Threadpool).

Der Pool ist nicht statisch und kann in seiner Größe verändert werden. Aber als ob Sie async() stark kontrollieren :), wie es offensichtlich ist - der Standard garantiert nicht einmal die Implementierung (ein Thread-Pool oder nicht), und wenn es ein Pool ist, haben Sie keinen Einfluss darauf (der Compiler kann 1 Thread dem Pool zuweisen wollen, er wird Sie nicht einmal fragen).

Aber wenn Sie nur für Wind schreiben, dann könnte async verwendet werden (obwohl ich es jetzt nicht mag).

SZY: warum wir async ohne Threadpool brauchen, verstehe ich überhaupt nicht ...

Hat sich angesichts der Ergebnisse des Experiments und der neuen Informationen Ihre Meinung über die Notwendigkeit von Multithreading in MMS geändert?
 
Реter Konow:
Hat sich Ihre Meinung über die Notwendigkeit von Multithreading in MQL unter Berücksichtigung der Ergebnisse des Experiments und neuer Informationen geändert?

Nun, ich habe Flügel async hier - ein High-Level-Wrapper für die faul. Im Allgemeinen bin ich nicht gegen Multithreading.

Würde ich Multithreading in µl verwenden? Nein, das werde ich nicht. Peter, ich bin nicht mehr auf dem Markt, und offen gesagt bin ich nicht sehr an einem geschlossenen Ökosystem mit einer mächtigen Sprache interessiert. Warum ein weiteres C++ erstellen (was keineswegs eine einfache Aufgabe ist)? So dass die "geschäftstüchtigsten"ihre "Grale" ausschließlich über den Markt verkaufen würden? Nun, es ist nicht diese Art von Mission.

 
Vict:

Nun, ich habe Flügel async hier - ein High-Level-Wrapper für die faul. Im Allgemeinen bin ich nicht gegen Multithreading.

Würde ich Multithreading in µl verwenden? Nein, das werde ich nicht. Peter, ich bin nicht mehr auf dem Markt, und ehrlich gesagt bin ich an einem geschlossenen Ökosystem mit einer mächtigen Sprache nicht besonders interessiert. Warum ein weiteres C++ erstellen (was keineswegs eine einfache Aufgabe ist)? So dass die "geschäftstüchtigsten" ihre "Grale" ausschließlich über den Markt verkaufen würden? Nun, es ist nicht diese Art von Mission.

Wahrscheinlich ist es genau andersherum. Damit die geschäftstüchtigsten unter ihnen etwas anderes als"Grals" verkaufen würden. Schließlich sind es die "Grals", die keine ernsthaften Werkzeuge erfordern. Wenn neue leistungsfähige Anwendungen auftauchen, wird vielleicht der "Gralsparasitismus" im Algotrading abnehmen und der Wert eines professionellen Ansatzes wird sich durchsetzen. Natürlich ist das keine Tatsache, aber es könnte sein...
 
Vict:

Werde ich Multithreading in µl verwenden? Nein, das werde ich nicht.

Wenigstens eine ehrliche Antwort auf die Frage: Warum braucht man Multithreading bei MQL-Problemen?

Wenn ich mich nicht irre, habe ich diese Frage fünfmal gestellt, ohne eine konkrete Antwort zu erhalten.

ReTeg Konow:
Wahrscheinlich ist es genau andersherum. Für die Unternehmungslustigsten, die etwas anderes als "Grals" verkaufen wollen. Schließlich sind es die "Grals", die keine ernsthaften Werkzeuge erfordern.

Peter, Sie haben ein Talent dafür, aus mangelnder Kompetenz heraus unverblümte Aussagen zu machen!

Wenn ich mich nicht irre, haben Sie keine Fähigkeiten überhaupt in den Handel Expert Advisors schreiben, auch eine einfache Open / Close ein Indikator, und jetzt sind Sie sagen, dass es nicht ernsthaft Werkzeuge, um einen Expert Advisor, die auf eine rein positive Geschichte Handel zu erstellen nehmen?

Versuchen Sie, nur einen einzigen Trading Expert Advisor zu schreiben - eine Welt voller spannender Abenteuer wartet auf Sie!

))))

 
Igor Makanu:

Zumindest eine ehrliche Antwort auf die Frage: Warum brauchen wir Multithreading bei MQL-Problemen?

Wenn ich mich nicht irre, habe ich fünfmal gefragt, warum man das braucht, es wurde nicht geantwortet, es wurde versucht, das Einfädeln mit der NS-Ausbildung zu verbinden, aber meiner Meinung nach "vorbei".

Peter, du hast ein Talent dafür, aus geringer Kompetenz heraus laute Aussagen zu machen!

Wenn ich mich nicht irre, haben Sie keine Fähigkeiten überhaupt in den Handel Expert Advisors schreiben, auch eine einfache Open / Close ein Indikator, und jetzt sind Sie sagen, dass es nicht ernsthafte Werkzeuge, um einen Expert Advisor, die auf eine rein positive Geschichte Handel zu erstellen nehmen?

Versuchen Sie, nur einen einzigen Trading Expert Advisor zu schreiben - eine Welt voller spannender Abenteuer wartet auf Sie!

))))

Ich möchte nicht in ein Off-Topic-Thema einsteigen, aber Sie haben auch ein Talent dafür, aus mangelnder Kompetenz heraus laute Aussagen zu machen. In diesem Fall kennen Sie meine Fähigkeiten und Erfahrungen nicht. Ich habe nie Indikatoren geschrieben, das stimmt, aber ich habe sie geschrieben. Und was ist mit Ihren Äußerungen über die Sharpe in MQL, die meine Entwicklungen erdrückt haben müssen? Dass ich mit meinem Ansatz nichts Ernsthaftes anfangen kann und dass alles schlecht funktioniert usw.? Hohe Kompetenz? )

Ein Blick auf den Marktplatz genügt, um festzustellen, dass dort (fast) nur"Grals" verkauft werden. 13000 "Grails" und 1000 Dienstprogramme, Indikatoren und Bibliotheken. Ich schätze mal. Folglich ist es einfach, diese "Grals" herzustellen. Insbesondere auf MT4. Und es ist die Schaffung der "Grails", dass die MQL-Entwicklung Toolkit in der großen Nachfrage definiert, wodurch eine Barriere für die Entwicklung von Anwendungen.

 
Реter Konow:

Ich will nicht vom Thema abschweifen, aber Sie haben auch ein Talent dafür, aus mangelnder Kompetenz heraus laute Aussagen zu machen. In diesem Fall kennen Sie meine Fähigkeiten und Erfahrungen nicht. Ich habe noch nie Indikatoren geschrieben, das stimmt, aber ich habe Experten geschrieben und eine Menge davon gemacht. Und was ist mit Ihren Äußerungen über die Sharpe in MQL, die meine Entwicklungen erdrückt haben müssen? Dass ich mit meinem Ansatz nichts Ernsthaftes anfangen kann und dass alles schlecht funktioniert usw.? Hohe Kompetenz? )

Ein Blick auf den Marktplatz genügt, um festzustellen, dass dort (fast) nur "Grals" verkauft werden. 13000 "Grails" und 1000 Dienstprogramme, Indikatoren und Bibliotheken. Ich schätze mal. Folglich ist es einfach, diese "Grals" herzustellen. Insbesondere auf MT4. Und es ist die Schaffung der "Grails", dass die MQLQL-Entwicklung Toolkit in der großen Nachfrage definiert, setzen eine Barriere für die Entwicklung von Anwendungen.

Seltsam, wenn Sie Handelsexperten schreiben, warum haben Sie dann im Thread "Mein Ansatz" Fragen zu elementaren Aktionen, wie man die Eigenschaften eines offenen Auftrags erhält? (als Sie die Tabelle geschrieben haben), genauso wie jetzt die laute Aussage, dass das Schreiben eines Testergrals nicht arbeitsintensiv ist?

Nun, da du weißt, wie man alles macht, hast du keinen guten Witz gemacht?


meine Behauptungen über Sharp sind in meinem Blog und in KB in den Veröffentlichungen von @fxsaber zu finden, alles funktioniert und die Tabellen auch, und@fxsaber testete nach seiner Vorstellung davon, wie Tabellen funktionieren sollten, was sich als ziemlich schwierige technische Umsetzung herausstellte - er musste eine Tabelle mit der Geschäftshistorie mit über 6000 Zeilen in 20 Spaltenund über 100 TausendWerten anzeigen! und in der zweiten Registerkarte aktuellen offenen Aufträge als 19 Spalten von Informationen, alles funktioniert und nichts ist langsam weder online noch in der Tester ;) . Die Hauptsache ist, dass es nicht überlasten das Terminal und den PC im Allgemeinen (Ich habe es getestet und es nimmt 7-8% der CPU-Last weder auf PC noch auf Laptop)

PS: über Market wird nichts gesagt und Sie beraten nicht, siehe mein Vorposting - weder Sie noch ich sind dort nicht veröffentlicht, bzw. das Kompetenzniveau ist gleich Null ;)

PSPS: Sie sind zu sehr an einer Art Schlacht )))) interessiert, um zu beweisen, dass Sharp Ihrer Arbeit in Bezug auf die Schreibgeschwindigkeit der angewandten Software unterlegen ist? )))) - Versuchen Sie, in Ihrem "Mein Ansatz"-Thread eine Tabelle mit mindestens10k Zellen zu posten, um zu sehen, wie es funktioniert;)

 
Igor Makanu:

Seltsam, wenn Sie Handelsexperten schreiben, warum haben Sie dann im Thema "Mein Ansatz" Fragen zu elementaren Aktionen, wie man die Eigenschaften einer offenen Bestellung erhält? (als Sie die Tabelle geschrieben haben), genauso wie jetzt die lautstarke Behauptung, dass das Schreiben eines Grals der Tester nicht arbeitsintensiv ist?

Nun, da du weißt, wie man alles macht, hast du keinen guten Witz gemacht?


meine Behauptungen über Sharp sind in meinem Blog und QB in den Veröffentlichungen von @fxsaber, alles funktioniert und die Tabellen auch, und von @fxsaber getestetzu seiner Vision, wie Tabellen funktionieren sollten, in diesem stellte sich heraus, eine ziemlich schwierige technische Umsetzung - er brauchte, um eine Tabelle der Handelsgeschichte über 6000 Zeilen in 20 Spalten ~ 12 000Werte und in der zweiten Registerkarte die aktuellen offenen Aufträge als 19 Spalten von Informationen, alles funktioniert und nichts ist langsam weder online noch in Tester ;) . Das Wichtigste ist, dass das Terminal und der PC im Allgemeinen nicht überlastet werden (ich habe es überprüft und die CPU-Last lag weder auf dem PC noch auf dem Laptop über 7-8 %).

PS: Ich werde nichts über Market sagen und ich rate Ihnen, es auch nicht zu tun, siehe mein Vorposting - weder Sie noch ich sind dort nicht veröffentlicht, bzw. das Kompetenzniveau ist gleich Null ;)

Die Auftragshistorie war in meinen Strategien nicht notwendig und ich habe nicht damit gearbeitet, aber das bedeutet nicht, dass ich nicht weiß, wie man Aufträge eröffnet usw. Außerdem habe ich schon vor langer Zeit mit EAs gearbeitet. Aber es ist alles sehr einfach (vor allem mit meinem Ansatz). Ich habe keine Schwierigkeiten, einen Expert Advisor für den Handel zu erstellen. Der Schwierigkeitsgrad bei der Erstellung von Diagrammen ist viel höher, und deshalb gibt es viele Expert Advisors und fast keine Diagramme. (Fragen Sie@fxsaber.) Und auf einen Artikel über die Verbindung von Sharp-Tabellen habe ich schon lange gewartet. (Sie werden nur nicht das Niveau meiner Verbindungsfähigkeit erreichen, glauben Sie mir. :))

Der Status als Marktverkäufer macht einen kaum zum Denker und öffnet die Augen für die existenziellen Probleme des Algotradings).

 
Igor Makanu:
...

PSPS: Es juckt Sie einfach in den Fingern, eine Art Schlacht )))) zu veranstalten, um zu beweisen, dass Sharpe Ihrer Arbeit in Bezug auf die Geschwindigkeit beim Schreiben angewandter Software unterlegen ist? )))) - Versuchen Sie doch mal, in Ihrem Thema "Mein Ansatz" eine Tabelle mit mindestens 10 Tausend Zellen zu posten, um zu sehen, wie es funktioniert;)

Ich habe in MQL4 eine Tabelle mit 1000 Zeilen gepostet, und jede Zeile hatte mehr als 20 Zellen darin. Insgesamt sind es mehr als 20 Tausend Zellen. Sie haben es gesehen. Es funktionierte sehr schnell. Schauen Sie noch einmal nach, wenn Sie mir nicht glauben. Ich unterstreiche MQL4. Auf einem 5er würde es 10 Mal schneller gehen.

 
Реter Konow:

Ich habe dort auf MQL4 eine Tabelle mit 1000 Zeilen gepostet, und jede Zeile hatte mehr als 20 Zellen darin. Insgesamt über 20k Zellen. Sie haben es gesehen. Es funktionierte sehr schnell. Schauen Sie noch einmal nach, wenn Sie mir nicht glauben. Ich unterstreiche MQL4. Auf einem 5er würde es 10 Mal schneller gehen.

Selbst wenn es eine Million Zellen sind. Wenn man maximal 1000 davon auf dem Bildschirm sehen kann, warum dann alles aktualisieren/zeichnen?