MT4 iMAOnArray et iBandsOnArray : effet du nombre d'éléments sur les calculs - page 7

 
Alexey Viktorov:

Voulez-vous dire qu'après if(rates_total-i >= rates_total-100) ;, lorsqu'il ne reste que 100 barres à calculer, la fonction iMAOnArray() recalcule d'abord le tableau ALL ?

Non, seulement la moitié.
 
Alexey Viktorov:

Voulez-vous dire qu'après if(rates_total-i >= rates_total-100) ;, lorsqu'il ne reste plus que 100 barres à calculer, la fonction iMAOnArray() recalcule d'abord le tableau ENTIER ?

iMAOnArray

Renvoiela valeurde l'indicateur technique Moving Average calculée sur les données stockées dans le tableau.

doubleiMAOnArray(
doublearray[],// array
inttotal,// nombre d'éléments
intma_period,//période
intma_shift,// décalage de la moyenne
intma_method,// méthode de calcul de la moyenne
int shift//shift
) ;

Paramètres

tableau[]

[in] Tableau avec les données.

total

[in]Nombre d'éléments à calculer. 0 signifie tous les éléments du tableau.

C'est exact, le premier appel de iMAOnArray avec 0 dans la valeur de taille calcule inconditionnellement le tableau entier, et ensuite il semble que seulement la dernière ou au plus les 2 dernières valeurs sont calculées, bien que qui sait, il peut tout recalculer... C'est pourquoi il ralentit. C'est pourquoi le nombre de barres que vous voulez obtenir par décalage n'a pas d'importance, l'ensemble du tableau est de toute façon compté.

 
Sergey Efimenko:

iMAOnArray

Renvoiela valeurde l'indicateur technique Moving Average calculée sur les données stockées dans le tableau.

doubleiMAOnArray(
doublearray[],// array
inttotal,// nombre d'éléments
intma_period,//période
intma_shift,// décalage de la moyenne
intma_method,// méthode de calcul de la moyenne
int shift//shift
) ;

Paramètres

tableau[]

[in] Tableau avec les données.

total

[in]Nombre d'éléments à calculer. 0 signifie tous les éléments du tableau.

C'est exact, le premier appel de iMAOnArray avec 0 dans la valeur de taille calculera certainement le tableau entier, et ensuite il semble que seulement la dernière ou au plus les 2 dernières valeurs sont calculées, bien que qui sait, il peut tout recalculer... C'est pourquoi il ralentit. C'est pourquoi le nombre de barres que vous voulez obtenir par décalage n'a pas d'importance, l'ensemble du tableau est de toute façon compté.

Donc, je me suis trompé. Et pourquoi n'y a-t-il pas de freins sans vos calculs complexes ?
 
Alexey Viktorov:
Alors je me suis trompé. Alors pourquoi n'y a-t-il pas de décalage sans vos calculs compliqués ?
C'est la question, pourquoi il ralentit quand on l'appelle depuis le code, mais pas quand on le superpose simplement sur le graphique. Seuls les développeurs sauront où trouver la réponse. J'ai beaucoup d'indicateurs compliqués dans mes graphiques et certains d'entre eux utilisent même des boucles récursives et ils sont censés "penser long", mais c'est une tâche simple qui prend tellement de temps à calculer.
 
Sergey Efimenko:
C'est la question, pourquoi il y a un décalage quand on l'appelle depuis le code, mais pas quand on le superpose simplement sur le graphique. Eh bien, seuls les développeurs savent où chercher la réponse. J'ai beaucoup d'indicateurs compliqués dans mes graphiques et certains d'entre eux utilisent même des boucles récursives et ils sont censés "penser long", mais c'est une tâche simple qui prend tellement de temps à être calculée.

Je ne parle pas d'une simple superposition de graphiques. Je parle de ce code de test. C'est écrit là, pas superposé.

Quand même, je pense que j'ai battu la merde en copiant une partie du tableau. Et même MODE_LWMA recalcule de la même manière que le comptage de l'ensemble du tableau.


Le rouge est calculé sur l'ensemble de l'historique. Le vert représente les 50 dernières mesures.

 
Alexey Viktorov:

...

Quand même, je pense que j'ai battu la merde en copiant une partie du tableau. Et même MODE_LWMA recalcule de la même manière que le comptage de l'ensemble du tableau.

...

Il l'a battu aussi.

 
Alexey Viktorov:

Je ne parle pas d'une simple superposition de graphiques. Je parle de ce code de test. C'est écrit là, pas superposé.

Quand même, je pense que j'ai battu la merde en copiant une partie du tableau. Et même MODE_LWMA recalcule de la même manière que le comptage de l'ensemble du tableau.


Le rouge compte toute l'histoire. Le vert représente les 50 dernières mesures.

J'ai l'impression que vous lisez mes posts mot à mot, ou même phrase par phrase. Gagner quoi ? J'ai écrit que j'ai eu une telle idée (code similaire avec limitation du calcul des barres) immédiatement et je l'ai essayée et n'ai pas obtenu de gain de performance parce que le tableau est toujours calculé entièrement (total=0), le fait que vous copiez (remplissez dans le tampon) seulement les 100 derniers éléments, ne change pas le ralentissement des calculs, il freine l'obtention d'éléments dans le tampon, et le calcul de la moyenne du tableau, qui est soit calculé entièrement (total=0) soit ne donne des résultats que pour les N premiers éléments (total=N), et qui a besoin des derniers, alors que le changement de direction de l'indexation ne donne pas l'effet désiré.
 
Sergey Efimenko:
J'ai l'impression que vous lisez mes posts mot à mot ou même phrase par phrase. Gagner quoi ? J'ai écrit que j'ai eu une telle idée (code similaire avec limitation du calcul des barres) immédiatement, et je l'ai immédiatement essayé et n'ai obtenu aucune augmentation de performance, parce que Le tableau est toujours calculé entièrement (total=0), le fait que vous ne copiez (remplissez le tampon) que les 100 derniers éléments ne rend pas les calculs lents, ce n'est pas le fait de mettre des éléments dans le tampon, c'est le calcul d'un tableau moyen, qui est soit entièrement calculé (total=0) soit ne montre des résultats que pour les N premiers éléments (total=N), et les derniers sont nécessaires, changer le sens de l'indexation ne donne pas l'effet désiré.

Apparemment, mes messages sont lus aussi... Le code précédent ne correspond pas, j'ai trouvé où l'erreur a été faite. La dernière capture d'écran montre une approche différente, bien que seules les 50 dernières barres soient comptabilisées.

Je n'ai pas posté le code tout de suite en m'attendant à des réactions du type "ça ne marchera pas de toute façon" parce que... Le code n'est pas secret, si vous voulez vérifier comment il fonctionnera avec votre indicateur, faites-le moi savoir.

Dmitry Fedoseev:

Il a aussi gagné.

Et vous ne pouvez que faire des histoires. Comptez avec combien de membres du forum vous communiquez avec ce ton de voix, comme maintenant avec moi. Va-t'en, Satan.
 
Alexey Viktorov:

...

Tout ce que tu peux faire, c'est faire des histoires. Comptez le nombre d'utilisateurs du forum à qui vous parlez avec ce ton de voix comme vous me parlez maintenant. Va-t'en, Satan.

C'est comme ça que j'ai parlé à des gens comme vous. Il y a une coalition de vous ici, je sais.

Hier encore, vous avez écrit ici sur l'échec de l'approche de la copie de tableau. Il a été pointé sur LWMA - ça a marché. Vous n'avez pas assez de paresse pour le vérifier avec l'EMA, et l'armée de la puissance sainte ? As-tu mis un cierge dans l'église ?

Tu n'arrêtes pas de te plaindre, et à chaque fois tu dis : "Oh, je me suis trompé".

Un combat. Si vous aviez un peu de bon sens, vous auriez vu depuis longtemps que le problème de ce sujet est résolu.

Tu voulais frimer une fois de plus, mais on t'a fait sauter les cornes et tu t'es immédiatement plaint à Satan. Mec !

 
Alexey Viktorov:

Apparemment, mes messages sont lus aussi... Le code précédent ne correspond pas, j'ai trouvé où l'erreur a été faite. La dernière capture d'écran montre une approche différente, bien que seules les 50 dernières barres soient comptabilisées.

Je n'ai pas posté le code tout de suite en m'attendant à des réactions du type "ça ne marchera pas de toute façon" parce que... Le code n'est pas secret, si vous voulez vérifier comment il fonctionnera avec votre indicateur, dites-le moi.

J'étais censé deviner qu'il y avait un code différent ? Vous trouverez également ci-dessus une capture d'écran où les 100 dernières barres sont comptées, mais en fait toutes les barres sont comptées, mais seulement 100 sont copiées dans le tampon. Oui et pourquoi ne pas poster le code en une seule fois ? Il n'y aurait pas eu une telle réponse. J'aurais répondu sur le fond, je ne comprends pas, quel est l'intérêt ? Vous pouvez immédiatement voir dans le code ce qui se passe, ce qui compte et s'il y a les défauts mentionnés ci-dessus. Et que vous donne l'écran ? Rien d'autre que le résultat, et à propos du résultat déjà dit, il peut être atteint de différentes manières, mais toutes ne sont pas acceptables pour la tâche à accomplir - réduire le temps de calcul.