Programmation asynchrone et multithread dans MQL - page 37

 

J'ai compris pourquoi std::async est si lent. Le problème est que j'ai linux+gcc/clang, il n'y a pas de pool de threads derrière async, un nouveau thread est stupidement lancé à chaque fois pour chaque nouveau travail. Ce qui m'a troublé, c'est que deux fils créés consécutivement et immédiatement détruits auraient le même identifiant :

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

Le test asynchrone sur wind+msvc a montré que dans le test où gcc a démarré 10 threads, msvc en a démarré 6 (CPU 4 cœurs), c'est-à-dire que ce n'est pas un nouveau thread qui démarre pour la tâche, il y a manifestement une sorte de file d'attente.

Conclusion : asynchronisme plus ou moins adéquat uniquement sur winnda (via le pool de threads).

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

Le pool n'est pas statique et sa taille peut être modifiée. Mais comme si vous contrôliez fortement async() :), comme c'est évident - la norme ne garantit même pas l'implémentation (un pool de threads ou non), et si c'est un pool, vous n'avez aucune influence dessus (le compilateur peut vouloir assigner 1 thread au pool, il ne vous le demandera même pas).

Mais si vous n'écrivez que pour le vent, alors vous pouvez utiliser l'asynchronisme en principe (bien que je ne l'aime pas actuellement).

SZY : pourquoi avons-nous besoin d'asynchronisme sans pool de threads, je ne comprends pas du tout ...

 
Vict:

J'ai compris pourquoi std::async est si lent. Le problème est que j'ai linux+gcc/clang, il n'y a pas de pool de threads derrière async, un nouveau thread est stupidement lancé à chaque fois pour chaque nouveau travail. Ce qui m'a troublé, c'est que deux fils créés consécutivement et immédiatement détruits auraient le même identifiant :

Le test asynchrone sur wind+msvc a montré que dans le test où gcc a démarré 10 threads, msvc en a démarré 6 (CPU 4 cœurs), c'est-à-dire que ce n'est pas un nouveau thread qui démarre pour la tâche, il y a manifestement une sorte de file d'attente.

Conclusion : asynchronisation plus ou moins adéquate uniquement sur winnda (via le pool de threads).

Le pool n'est pas statique et sa taille peut être modifiée. Mais comme si vous contrôliez fortement async() :), comme c'est évident - la norme ne garantit même pas l'implémentation (un pool de threads ou non), et si c'est un pool, vous n'avez aucune influence dessus (le compilateur peut vouloir assigner 1 thread au pool, il ne vous le demandera même pas).

Mais si vous n'écrivez que pour le vent, alors vous pouvez utiliser l'asynchronisme en principe (bien que je ne l'aime pas actuellement).

SZY : pourquoi avons-nous besoin d'asynchronisme sans pool de threads, je ne comprends pas du tout ...

Compte tenu des résultats de l'expérience et des nouvelles informations, votre opinion sur la nécessité du multithreading dans MQL a-t-elle changé ?
 
Реter Konow:
En tenant compte des résultats de l'expérience et des nouvelles informations, votre opinion concernant la nécessité du multithreading dans MQL a-t-elle changé ?

Eh bien, j'ai fait de l'asynchronisme ici - une enveloppe de haut niveau pour les paresseux. En général, je ne suis pas contre le multithreading.

Est-ce que j'utiliserais le multithreading en µl ? Non, je ne le ferai pas. Peter, j'ai dépassé le marché, et franchement, je ne suis pas très intéressé par un écosystème fermé avec un langage puissant. Pourquoi créer un autre C++ (ce qui n'est pas du tout une tâche facile) ? Pour que les plus "entreprenants" vendentleurs "graals" uniquement sur le marché ? Eh bien, ce n'est pas vraiment une mission.

 
Vict:

Eh bien, j'ai fait de l'asynchronisme ici - une enveloppe de haut niveau pour les paresseux. En général, je ne suis pas contre le multithreading.

Est-ce que j'utiliserais le multithreading en µl ? Non, je ne le ferai pas. Peter, j'ai dépassé le marché, et franchement, je ne suis pas très intéressé par un écosystème fermé avec un langage puissant. Pourquoi créer un autre C++ (ce qui n'est pas du tout une tâche facile) ? Pour que les plus "entreprenants" vendent leurs "graals" uniquement sur le marché? Eh bien, ce n'est pas ce genre de mission.

Eh bien, c'est probablement l'inverse. Pour que les plus entreprenants vendent autre chose que des"grails". Après tout, ce sont les "grails" qui ne nécessitent pas d'outils sérieux. Si de nouvelles applications puissantes apparaissent, peut-être que le "graal-parasitisme" dans l'algotrading diminuera et que la valeur de l'approche professionnelle prévaudra. Ce n'est pas un fait, bien sûr, mais c'est peut-être le cas...
 
Vict:

Est-ce que j'utiliserai le multithreading en µl ? Non, je ne le ferai pas.

Au moins une réponse sincère à la question : pourquoi avez-vous besoin du multithreading dans les problèmes MQL ?

Si je ne me trompe pas, j'ai posé la question 5 fois sans obtenir de réponse précise.

ReTeg Konow:
Eh bien, c'est probablement l'inverse. Pour les plus entreprenants de vendre autre chose que des "grails". Après tout, ce sont les "grails" qui ne nécessitent pas d'outils sérieux.

Peter, vous avez le talent de faire des déclarations fracassantes en raison de votre faible compétence !

Si je ne me trompe pas, vous n'avez aucune compétence dans l'écriture de conseillers experts de trading, même un simple indicateur d'ouverture/fermeture, et maintenant vous dites qu'il ne faut pas d'outils sérieux pour créer un conseiller expert qui trade sur un historique purement positif ?

Essayez d'écrire un seul conseiller expert en trading - un monde d'aventures passionnantes vous attend !

))))

 
Igor Makanu:

Au moins une réponse sincère à la question : pourquoi avons-nous besoin du multithreading dans les problèmes MQL ?

Si je ne me trompe pas, j'ai demandé 5 fois pourquoi c'est nécessaire, aucune réponse n'a été donnée, il y a eu des tentatives de lier l'enfilage à la formation NS, mais à mon avis "passé ça".

Peter, vous avez le talent de faire des déclarations fracassantes en raison de votre faible compétence !

Si je ne me trompe pas, vous n'avez aucune compétence dans l'écriture de conseillers experts de trading, même un simple indicateur d'ouverture/fermeture, et maintenant vous dites qu'il ne faut pas d'outils sérieux pour créer un conseiller expert qui trade sur un historique purement positif ?

Essayez d'écrire un seul conseiller expert en trading - un monde d'aventures passionnantes vous attend !

))))

Je ne veux pas commencer un hors-sujet dans le fil, mais vous avez aussi un talent pour faire des déclarations tapageuses en raison de votre faible compétence. Dans ce cas, vous ne connaissez pas mes capacités et mon expérience. Je n'ai jamais écrit d'indicateurs, c'est vrai, mais je les ai écrits. Et que dire de vos déclarations sur le Sharpe dans MQL, qui ont dû écraser mes développements ? Que je ne peux rien faire de sérieux avec mon approche et que tout fonctionne mal, etc. Haute compétence ? )

Il suffit de regarder le marché pour voir que (presque) rien d'autre que des"grails" y sont vendus. 13000 "grails" et 1000 utilitaires, indicateurs et bibliothèques. A vue de nez. Par conséquent, il est facile de réaliser ces "grails". Surtout sur MT4. Et c'est la création des "grails" qui définit la boîte à outils de développement MQL très demandée, mettant ainsi une barrière au développement d'applications.

 
Реter Konow:

Je ne veux pas faire de hors-sujet, mais vous avez aussi le talent de faire des déclarations fracassantes en raison de votre faible compétence. Dans ce cas, vous ne connaissez pas mes capacités et mon expérience. Je n'ai jamais écrit d'indicateurs, c'est vrai, mais j'ai écrit des experts et j'en ai fait beaucoup. Et que dire de vos déclarations sur le Sharpe dans MQL, qui ont dû écraser mes développements ? Que je ne peux rien faire de sérieux avec mon approche et que tout fonctionne mal, etc. Haute compétence ? )

Il suffit de regarder le marché pour voir que (presque) rien d'autre que des "grails" y sont vendus. 13000 "grails" et 1000 utilitaires, indicateurs et bibliothèques. A vue de nez. Par conséquent, il est facile de réaliser ces "grails". Surtout sur MT4. Et c'est la création des "grails" qui définit la boîte à outils de développement MQLQL en grande demande, mettant une barrière pour le développement d'applications.

étrange, si vous écriviez des experts en trading, pourquoi avez-vous des questions dans le fil "mon approche" sur les actions élémentaires, comment obtenir les propriétés d'un ordre ouvert ? (quand vous avez écrit le tableau), tout comme maintenant, l'affirmation bruyante que l'écriture d'un graal de testeur n'est pas laborieuse ?

Puisque vous savez tout faire, vous n'avez pas fait une bonne blague ?


mes affirmations sur Sharp sont sur mon blog et dans KB dans les publications de @fxsaber, tout fonctionne et les tableaux aussi, et@fxsaber testait sa vision de la façon dont les tableaux devraient fonctionner, dans une mise en œuvre technique qui s'est avérée assez difficile - il devait afficher un tableau de l'historique des transactions de plus de 6000 lignes sur 20 colonneset plus de 100 000valeurs ! et dans le deuxième onglet les ordres ouverts actuels en 19 colonnes d'information, tout fonctionne et rien n'est lent ni en ligne ni dans le testeur ;) . Le principal est qu'il ne surcharge pas le terminal et le PC en général (je l'ai testé et il prend 7-8% de la charge CPU ni sur le PC ni sur l'ordinateur portable).

PS : à propos du marché qui ne dira rien et que vous ne conseillez pas, voir mon prépost - ni vous ni moi ne sommes publiés là-bas, respectivement, le niveau de compétence est nul ;)

PSPS : vous tenez trop à une sorte de bataille )))) pour prouver que Sharp est inférieur à votre travail par la vitesse d'écriture des logiciels appliqués ? )))) - Essayez dans votre fil "Mon approche" de poster un tableau avec au moins10 000 cellules, pour voir comment ça marche ;)

 
Igor Makanu:

étrange, si vous écriviez des experts en trading, pourquoi avez-vous des questions dans le sujet "mon approche" sur les actions élémentaires, comment obtenir les propriétés d'un ordre ouvert ? (lorsque vous avez écrit le tableau), tout comme aujourd'hui, l'affirmation bruyante que l'écriture du Graal du testeur n'est pas laborieuse ?

Puisque vous savez tout faire, vous n'avez pas fait de bonne blague ?


mes affirmations sur Sharp sont sur mon blog et QB dans les publications de @fxsaber, tout fonctionne et les tableaux aussi, et testés par @fxsaber à sa vision de la façon dont les tableaux devraient fonctionner, dans ce cas, il s'est avéré être une mise en œuvre technique assez difficile - il avait besoin d'afficher un tableau de l'historique des transactions de plus de 6000 lignes en 20 colonnes ~ 12 000valeurs et dans le deuxième onglet les ordres ouverts actuels en 19 colonnes d'informations, tout fonctionne et rien n'est lent ni en ligne ni dans le testeur ;) . L'essentiel est qu'il ne surcharge pas le terminal et le PC en général ( j'ai vérifié et il n'y avait pas plus de 7-8% de charge CPU sur le PC ou le portable).

PS : Je ne dirai rien sur le marché et je vous le conseille, voir mon prépost - ni vous ni moi ne sommes publiés là-bas, respectivement, le niveau de compétence est nul ;)

L'historique des ordres n'était pas nécessaire dans mes stratégies et je n'ai pas travaillé avec, mais cela ne signifie pas que je ne sais pas comment ouvrir des ordres, etc. De plus, j'ai travaillé avec des EA il y a longtemps. Mais tout cela est très simple, (surtout avec mon approche). Je n'ai pas de difficulté à créer un conseiller expert de trading. Le niveau de difficulté pour créer des graphiques est beaucoup plus élevé, et c'est pourquoi il y a beaucoup de conseillers experts et presque aucun graphique. (Demandez à@fxsaber.) Et cela fait longtemps que j'attends un article sur la connexion des tables Sharp. (Seulement, vous n'obtiendrez pas mon niveau de facilité de connectivité, croyez-moi sur parole. :))

Le statut de vendeur de marché ne fait guère de quelqu'un un penseur et ouvre les yeux sur les problèmes existentiels de l'algotrading).

 
Igor Makanu:
...

PSPS : une sorte de bataille vous démange )))) pour prouver que Sharpe est inférieur à votre travail en termes de vitesse d'écriture de logiciels appliqués ? )))) - Eh bien, essayez dans votre fil "Mon approche" de poster un tableau avec au moins 10k cellules, voyez comment cela fonctionne ;)

J'ai affiché un tableau dans MQL4 avec 1000 lignes et chaque ligne contenait plus de 20 cellules. Au total, plus de 20 000 cellules. Vous l'avez vu. Cela a fonctionné très rapidement. Regardez encore, si vous ne me croyez pas. Je souligne MQL4. Il fonctionnerait 10 fois plus vite sur un 5.

 
Реter Konow:

J'y ai posté un tableau sur MQL4 avec 1000 lignes et chaque ligne contenait plus de 20 cellules. Au total, plus de 20 000 cellules. Vous l'avez vu. Cela a fonctionné très rapidement. Regardez encore, si vous ne me croyez pas. Je souligne MQL4. Il fonctionnerait 10 fois plus vite sur un 5.

Même si c'est un million de cellules. Si vous pouvez en voir un maximum de 1000 à l'écran, pourquoi tout mettre à jour/dessiner ?