Encore une fois, à propos du multithreading - page 6

 
dd:

donc il ne s'agit pas seulement de l'envoi du mandat, il y a un tas d'autres vérifications qui sont faites. Mais elles sont toutes mises en attente jusqu'à ce qu'une fonction se termine, l'autre n'est pas exécutée .....

Je l'ai décrit dans les termes du problème. Et c'est une tâche complexe. DLL ou chats ou autre - ce qui m'intéresse, c'est le scénario dans lequel je peux paralléliser ces tâches et continuer à les exécuter dans le testeur pour comprendre la situation ...

Vous devez décider si vous êtes venu pour la lumière, ou pour dire à tout le monde ce qui doit fonctionner et comment cela doit fonctionner.

Je n'ai aucune envie de continuer à résoudre votre problème, vous savez mieux que moi ce qu'il faut faire et comment il faut le faire.

Bonne chance !

 
Andrey Khatimlianskii:

Vous devez décider si vous êtes ici pour la lumière ou pour dire à tout le monde ce qui doit fonctionner et comment cela doit fonctionner.

Je n'ai aucune envie de continuer à résoudre votre problème ; vous savez mieux ce qu'il faut faire et comment le faire.

Bonne chance !

aucun conseil pratique n'a été offert sur les termes du problème... Bonne nuit à vous aussi...
 
Andrey Khatimlianskii:

Vous devez décider si vous êtes ici pour la lumière ou pour dire à tout le monde ce qui doit fonctionner et comment cela doit fonctionner.

Je n'ai aucune envie de continuer à résoudre votre problème ; vous savez mieux ce qu'il faut faire et comment le faire.

Bonne chance !

mon cher, mon beau soleil, avez-vous lu le problème ? il y est clairement décrit - dans la boucle, en plus de l'envoi de l'ordre en une seconde, beaucoup d'autres tâches doivent être effectuées - par exemple fermer 500 000 ordres ou ne pas les fermer - vérifier ... 0.1 lot, 50 000 dépôt, vous êtes bon en maths ? Et oui, c'est synthétique. Mais votre conseil est sans valeur.
 
dd:

Il me faut 5 jours pour exécuter cette stratégie dans le testeur avec 24 cœurs à ma disposition. Et un seul noyau fonctionne. Sans parler du fait que le journal, dont personne n'a besoin, risque d'être gonflé à quelques téraoctets. Et tout cela sans optimisations. Et ce stupide journal ne peut être désactivé d'aucune façon ...

Que pensez-vous si j'accélère le processus disons - 4 programmes, chacun sur son noyau - une augmentation de ce point 4 fois. Plus un processus distinct pour la clôture de 1000 transactions, par exemple, ou la décomposition de ce processus en 5 ou 10 fils, soit une multiplication par 10. Plus un processus distinct pour l'ouverture de positions par signaux ...

Je pense que de multiples fois...

Mais chaque milliseconde + décalage vers le courtier + décalage du courtier vers la bourse (s'il ne s'agit pas d'une cuisine) est une perte énorme. Il est étrange que cela ne soit pas compris en Sibérie...

Un passage dans le testeur en 5 jours ? C'est un cas exceptionnel))

 
Dmitry Fedoseev:

Un passage dans le testeur en cinq jours ? C'est un cas exceptionnel))

Eh bien, quand vous avez une transaction et que vous attendez cinq minutes, rien de remarquable ... mais quand il y en a des milliers par seconde, rien d'exceptionnel :)
 
dd:
Eh bien, quand il y a une transaction et que nous attendons cinq minutes pour rien de particulier... mais quand il y en a des milliers par seconde, rien de remarquable :)

Exécutez l'optimisation, au moins 24 passages et tous les cœurs seront occupés. Par conséquent, il est inutile de mettre en parallèle quoi que ce soit en une seule fois.

 
Dmitry Fedoseev:

Exécutez l'optimisation, au moins 24 passages et tous les cœurs seront occupés. Par conséquent, il est inutile de mettre en parallèle quoi que ce soit en une seule fois.

Tu confonds le froid avec le chaud. Je commencerai à optimiser quand j'en aurai besoin. Pour l'instant, je veux obtenir une exécution optimale du code avec l'EA actuel, qui a un tas d'actions à chaque seconde. Ne pas confondre le parallélisme dans l'"optimisation" et le parallélisme dans une seule EA ... Ce sont deux grandes différences. Vous essayez toujours de dire que vous pouvez exécuter un seul et même script en parallèle ... Je ne discute pas de cela et personne ne discute de cela. Ce sujet traite d'autre chose - comment utiliser plusieurs cœurs dans l'exécution d'un script.
 
dd:
Ce sujet traite d'autre chose - comment utiliser plusieurs cœurs dans l'exécution d'un seul script.
Le code doit déjà être écrit pour utiliser plusieurs threads ! Il n'y a pas d'autre moyen.
 
Aliaksandr Hryshyn:
Le code devrait déjà être écrit pour utiliser plusieurs threads !
Pas de doute, et je demande un coup de pouce pour savoir comment le faire. Mais après avoir lu, et pas seulement ce fil, je me suis rendu compte que ce n'est pas si simple. J'ai décrit ma tâche aussi clairement que possible - et j'aimerais entendre la recette.
 
dd:
sans poser de questions, et je demande un coup de pouce pour savoir comment le faire. Mais après avoir lu, et pas seulement ce fil, je me suis rendu compte que ce n'est pas si simple. J'ai décrit ma tâche aussi clairement que possible - et j'aimerais entendre la recette.
Il peut y avoir différentes recettes, la plus idéale, selon la formulation du problème, est l'utilisation de dll avec ses calculs d'écriture dans les indicateurs. Mais c'est compliqué et ça n'en vaut pas la peine... Mais vous devez savoir exactement quel type de code vous avez là.