Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Non, Vladimir. C'est un peu faux.
Dans ce cas, vous devez appliquer ArraySetAsSeries(array, false) ; à un tableau de trois cents éléments parmi lesquels iMAOnArray() est considéré. Mais nous ferions mieux d'utiliser CopyOpen() au lieu de la boucle de remplissage du tableau.
Si je comprends bien, dans cette variante, il sera préférable de
Non, Vladimir. C'est un peu faux.
Dans ce cas, vous devez appliquer ArraySetAsSeries(array, false) ; à un tableau de trois cents éléments parmi lesquels iMAOnArray() est considéré. Mais nous ferions mieux d'utiliser CopyOpen() au lieu de la boucle de remplissage du tableau.
Si je comprends bien, dans cette variante, il sera préférable de
Voici la question. Si je n'ai pas besoin de calculer l'ensemble du tableau, mais seulement les N derniers éléments.
Je ne comprends pas bien la logique du calcul de ces fonctions lors de la limitation. J'ai un tableau de timeseries (un des buffers de l'indicateur), si je laisse le nombre d'éléments égal à 0, pas de questions, tout est compté et calculé, mais si je diminue le nombre d'éléments impliqués dans le calcul par les mêmes décalages, je n'obtiens que les primaires. Pour simplifier, il y a un tableau de 5000 éléments (barres sur le graphique), pour gagner du temps je dois calculer seulement les 300 derniers, mais quand j'ai spécifié la valeur 300 dans le deuxième paramètre j'ai obtenu 5000-4700 éléments primaires, mais sur le décalage 300-0, et les autres valeurs à un appel ne changent pas. Quel est l'intérêt d'utiliser ce paramètre ?
L'enfer sait. Oublie ça. Si vous devez accélérer les calculs, réduisez le nombre d'éléments calculés dans votre boucle.
De deux choses l'une : soit c'est impossible, soit il faut une combinaison secrète de séries temporelles, non temporelles, de directions de calcul.
Je ne sais pas. Oublie ça. Si vous voulez accélérer les calculs, réduisez le nombre d'éléments à calculer dans votre cycle.
De deux choses l'une : soit c'est impossible, soit il faut une combinaison secrète de séries temporelles, de non séries temporelles, de sens de calcul.
Oui, comme je l'ai déjà écrit un peu plus tôt, il n'y a qu'une seule possibilité - utiliser vos propres analogues des fonctions ci-dessus, qui peuvent être utilisées pour calculer au moins un élément.
Le paradoxe de la situation est que si nous faisons un modèle similaire, en superposant la moyenne ou les barres de bollinger sur n'importe quel indicateur (ligne de prix), il n'y aura pas de tel ralentissement du calcul initial de toutes les barres de l'historique, comme lors de l'utilisation de ces fonctions dans le code, lors du redémarrage du terminal ou du changement de TF, donc il n'est pas clair, ce qui prend si longtemps à être calculé dans ces fonctions.
Je ne sais pas. Oublie ça. Si vous voulez accélérer les calculs, réduisez le nombre d'éléments à calculer dans votre cycle.
De deux choses l'une : soit c'est impossible, soit il faut une combinaison secrète de séries temporelles, non temporelles, de directions de calcul.
J'ai également utilisé une telle construction.
Au fait,"MovingAverages.mqh" est deux fois plus rapide que"iMAOnArray", même l'ancienne version.
https://www.mql5.com/ru/forum/79988
Oui, comme je l'ai écrit un peu plus tôt, il n'y a qu'une seule option - utiliser nos propres analogues des fonctions mentionnées où il est possible de calculer au moins un élément.
Le paradoxe de la situation est que si nous faisons un modèle similaire en attachant la MA et les bandes de Bollinger à n'importe quel indicateur (ligne de prix), nous ne verrons pas un tel ralentissement du calcul initial de toutes les barres de l'historique, comme lors de l'utilisation de ces fonctions dans le code, lors du redémarrage du terminal ou du changement de TF, donc il n'est pas clair ce qui prend si longtemps à calculer dans ces fonctions.
Est-ce qu'il y a un ralentissement même en utilisant iMAOnArray? Il ne doit pas en être ainsi. Comme vous l'étiez, il y a eu un ralentissement à partir de StdOnArray (ou BandsOnArray, je ne me souviens plus) les développeurs n'ont pas admis l'existence du bug pendant longtemps. Puis, soudainement, il a été réparé et il a fonctionné rapidement. Qui sait, peut-être que le bug est revenu. Si iMAOnArray() provoque également des ralentissements notables, il s'agit d'un bug. Il semble qu'il y ait eu des discussions à ce sujet il y a quelques mois... Mais c'est toujours là, apparemment.
Le ralentissement provient-il même de l'utilisation de iMAOnArray? Ça ne devrait pas être comme ça. Comme vous l'avez été à une époque, il y avait un ralentissement dû à StdOnArray, les développeurs n'ont pas reconnu le bug pendant longtemps. Puis ils l'ont soudainement réparé et ça a marché rapidement. Qui sait, peut-être que le bug est revenu. Si iMAOnArray() provoque également des ralentissements notables, il s'agit d'un bug. Il semble qu'il y ait eu des discussions à ce sujet il y a quelques mois... Mais c'est toujours là, apparemment.
Il est difficile de juger si c'est trop lent ou non, car tout dépend de la longueur du graphique (nombre de barres), le problème est que pour l'optimisation, il suffit de calculer un petit peu, et on ne peut pas limiter la durée du calcul par le calcul réel.
Faites le calcul avecMovingAverages.mqh et le calcul sera très rapide.
Montrez-moi donc la variante "fonctionnelle" du code, le code original est ici, que vous essayez de réduire à 12 éléments affichés au lieu des trois cents demandés par moi, et qui devrait se retrouver avec 3 tampons indicateurs avec les données spécifiées, de sorte qu'au moins 300 éléments ont été affichés dans le sous-sol, Et ensuite, quand une nouvelle barre arrive, respectivement, 301 et ensuite la valeur sera dessinée, mais n'oubliez pas que dans ce cas, si vous utilisez 0 comme limite pour le calcul, seule la nouvelle barre sera recalculée, et le type de moyenne (lissage) pour le deuxième tampon n'est pas nécessairement SMA, et peut être n'importe lequel des 4 disponibles.
Voilà.