Théorie de l'accélération de l'EA lors de l'utilisation d'un indicateur personnalisé (fonction - iCustom) - page 2

 
komposter:

Et si l'indicateur est 5-buffer, alors le premier appel d'iCustom calculera tous les buffers, les appels suivants et les demandes d'autres buffers ne liront que les informations prêtes (jusqu'à l'apparition de nouvelles données pour le calcul).

C'est-à-dire que si l'indicateur a été appelé au moins une fois, il a reçu l'information non seulement sur le tampon demandé, mais sur tous les tampons inclus dans l'indicateur ? Ou, cela signifie que le calcul des autres tampons sera trouvé dans la mémoire et qu'il n'y aura pas de recalcul à cause de cela - les données seront prises de la RAM, si elle n'a pas été appelée explicitement avant (le programme (EA) n'a pas alloué de mémoire explicitement pour le stockage des données de l'indicateur). J'ai lu auparavant que chaque fois que l'indicateur est appelé, il est recalculé - n'est-ce pas ?

komposter:

Si vous avez un indicateur vraiment lourd, pensez à votre propre système de cache, de sorte qu'au premier appel les données soient calculées et écrites dans le fichier, et qu'à l'appel suivant elles soient en lecture seule. Je l'ai fait de cette façon, c'est beaucoup plus rapide.

Mais dans 95% des cas, tout cela n'est pas nécessaire, le testeur est assez rapide comme ça, et dans 5 cas, vous pouvez également connecter le cloud.

Bonne chance !

La lecture à partir d'un disque dur serait-elle plus rapide, ou avez-vous créé un disque virtuel en mémoire avec les données de l'indicateur calculé ?

Eh bien, je ne rêve que des cinq, pour l'instant je ne mets en œuvre des idées personnalisées que sur les quatre.

Merci de me souhaiter bonne chance !

 
komposter:

Si vous avez un indicateur vraiment lourd, concevez votre propre système de cache, de sorte que lors de la première exécution, les données soient calculées et écrites dans le fichier, et que lors des exécutions suivantes, elles soient en lecture seule. Je l'ai fait de cette façon, c'est beaucoup plus rapide.

Mais dans 95% des cas, tout cela n'est pas nécessaire, le testeur est assez rapide comme ça, et dans 5 cas, vous pouvez également connecter le cloud.

Bonne chance !

Je ne parle pas d'un indicateur, mais d'un conseiller expert, mais le sujet est proche. Mon scalper compte pas mal, toutes sortes de filtres, de conversions. J'ai mis en cache mon modèle dans Matlab et j'ai d'abord calculé toutes les mathématiques et les ai introduites dans un fichier .mat, puis j'ai utilisé ces données pour exécuter une stratégie. Maintenant, j'ai envie de faire la même chose pour MQL4 Strategy Tester, car l'optimisation est tout simplement irréelle.
 
-Aleks-:

C'est-à-dire que si l'indicateur est appelé au moins une fois par le programme, il a reçu des informations non seulement sur le tampon demandé, mais aussi sur tous ceux qui sont inclus dans l'indicateur ? Ou, cela signifie que le calcul des autres tampons sera trouvé en mémoire et qu'il n'y aura pas de recalcul à cause de cela - les données seront prises de la RAM, si elle n'a pas été appelée explicitement avant (le programme (Expert Advisor) n'a pas alloué de mémoire explicitement pour le stockage des données de l'indicateur). J'ai lu précédemment que chaque fois que l'indicateur est appelé, il est recalculé - n'est-ce pas ?

L'indicateur ne peut pas calculer un seul tampon, il considère tout ce qu'il a à l'intérieur à chaque appel. Sauf si vous pouvez limiter le calcul à l'aide de paramètres, mais c'est un autre problème.

Le recalcul a lieu à chaque appel mais généralement seule la 0ème barre est recalculée. Et si un EA est écrit intelligemment, ces appels ne se produisent pas à chaque tick.

-Aleks-:

La lecture à partir d'un disque dur serait-elle plus rapide ou avez-vous créé un disque virtuel dans la mémoire avec des données d'indicateur calculées ?

Je lis sur un disque normal, mais pas les valeurs des indicateurs sur chaque barre, mais la chaîne "time;signal" ; ces données sont beaucoup moins nécessaires.

Il est peu probable qu'il existe une solution universelle pour un indicateur, vous devez vous baser sur le problème global.

-Aleks-:

Je n'ai rêvé que de l'indicateur cinq, je n'ai réalisé mes idées que sur l'indicateur quatre.

La seule différence réside dans la partie trading et le travail avec les séries temporelles (y compris les indicateurs).

Et le nuage est une chose vraiment puissante.

 
VDev:
Je ne parle pas de l'indicateur mais du conseiller expert, mais le sujet est proche. J'ai un scalper qui calcule pas mal de choses, toutes sortes de filtres et de transformations. J'ai mis en cache le modèle dans Matlab et j'ai d'abord calculé toutes les mathématiques et les ai introduites dans un fichier .mat, puis j'ai utilisé ces données pour exécuter une stratégie. Maintenant, j'ai envie de faire la même chose pour MQL4 Strategy Tester, car l'optimisation est tout simplement irréelle.

Il n'y a guère d'intérêt à avoir un cache pour un indicateur séparé, j'ai aussi commencé à partir des données nécessaires dans l'EA.

En gros, les signaux prêts étaient enregistrés, puis ils n'étaient lus que pour effectuer les entrées et le soutien de la position.

 
komposter:

L'indicateur ne peut pas calculer un seul tampon, il calcule tout ce qu'il contient à chaque appel. À moins que le calcul puisse être limité par les paramètres, mais c'est un autre sujet.

Le recalcul a lieu à chaque appel, mais généralement seule la 0ème barre est recalculée. Et si un EA est écrit intelligemment, alors ces appels ne se produisent pas à chaque tick.

Il s'avère donc que si nous adressons un indicateur avec beaucoup de tampons et que nous recevons des informations sur tous ces tampons à partir d'un seul d'entre eux, alors il sera plus rapide et plus économique en termes de mémoire que de calculer autant de fois que les informations de ses différents tampons sont nécessaires pour cet indicateur ?


Néanmoins, quelqu'un pourrait peut-être faire une expérience, car l'idée me tient occupé ! Ou bien la recherche sur l'innovation n'est-elle intéressante que si elle est payante ?

 
Le OnCalculate() de l'indicateur n'est appelé que la première fois que iCustom() est appelé à un nouveau prix. Les appels ultérieurs à iCustom() ne font que recevoir des données sans lancer OnCalculate(). Disons que le prix change, l'appel iCustom() suivantlance onCalculate(), les appels suivants ne reçoivent que des données et ainsi de suite, jusqu'à ce que le prix change, etc. (testé expérimentalement en ce moment).
 
-Aleks-:

Donc, au final, il s'avère que si vous adressez un indicateur avec plusieurs tampons et que vous obtenez des informations de l'un d'entre eux sur tous les autres, cela sera plus rapide et plus économe en mémoire que de calculer autant de fois que cet indicateur a besoin d'informations de ses différents tampons ?

1 indicateur pour 5 tampons ou 5 indicateurs pour 1 tampon, c'est à peu près la même chose.
Si vous n'avez besoin que des informations de 2 tampons, il sera plus rentable d'appeler 2 indicateurs avec 1 tampon qu'un indicateur avec 5 tampons. Mais pas plus rentable qu'un indicateur avec 2 tampons.


-Aleks:

Néanmoins, quelqu'un pourrait peut-être faire une expérience, car l'idée me tient occupé ! Ou bien la recherche sur l'innovation n'est-elle intéressante que si elle est payante ?

komposter:

Cette approche réduira la consommation de mémoire de l'indicateur (environ un multiple de la différence entre le nombre de tampons avant et après), mais augmentera la charge sur le processeur (et l'"assemblage" et la "décomposition" doivent être faits constamment).

Si vous n'avez pas de limite de mémoire (ce qui est peu probable avec les volumes actuels), il ne fera que ralentir.

 

J'ai l'impression d'être incompris ! :)

Mais je comprends que c'est probablement moi qui ne comprends pas.

Supposons que nous appelons l'indicateur personnalisé dans le code - nous devons spécifier le tampon de cet indicateur et ensuite, en suivant le code, nous appelons à nouveau l'indicateur personnalisé avec le même nom que la première fois mais avec un tampon différent.

Question : l'indicateur sera-t-il calculé deux fois ou une seule fois ?

 
-Aleks-:

...

Question : l'indicateur sera-t-il calculé deux fois ou une seule fois ?

Une fois.
 
Integer:
Une seule fois.
Ainsi, un ensemble de bons indicateurs fonctionnera plus rapidement que l'utilisation des indicateurs individuellement - il y aura donc moins de demandes d'informations sur les devis ?
Raison: