Un conseiller sans indicateur, est-ce possible ? - page 3

 
Алексей Тарабанов:

Une idée fausse et dangereuse.

Quelle est l'idée fausse ?
Si vous avez besoin d'un tableau historique, faites-le. Si vous n'en avez pas besoin, ne le faites pas.
Personnellement, je fais surtout un tableau, car j'utilise souvent des tests internes, etc. Mais mon tableau est rarement égal au nombre de barres du graphique. Parfois moins, parfois plus.
Prenez un zigzag commun par exemple. Il y a moins de 10% des éléments du tableau informatif et le reste est vide, mais le tableau entier est énuméré. Alors ? C'est efficace ? Évidemment, il est plus correct d'utiliser un tableau plus court de structures avec valeur et index.
 

Mais mon tableau est rarement égal au nombre de barres du graphique. Parfois moins, parfois plus.

Ce qui m'inquiète, c'est que ça pourrait être plus grand.

 
Nikolai Semko:
Tout d'abord, qui vous empêche d'avoir un tableau de données interne, le même que le tampon de l'indicateur, et de le remplir de la même manière.
Deuxièmement, pourquoi un conseiller aurait-il besoin de toute l'histoire. En règle générale, la dernière et peut-être l'avant-dernière valeur. Et nous n'avons pas besoin de tous ces indicateurs.

Et qu'est-ce qui est le plus raisonnable en termes de ressources, calculer dans l'indicateur ou dans l'Expert Advisor, qui est le plus rapide ?

 
Алексей Тарабанов:

Mais mon tableau est rarement égal au nombre de barres du graphique. Parfois moins, parfois plus.

Ce qui m'inquiète, c'est que ça pourrait être plus grand.

Vous vous inquiétez en vain, Alexey.
Il peut y avoir des situations où cela est nécessaire, gugilen.
Par exemple.
J'utilise principalement les données des barres de minutes ou les ticks, quelle que soit la TF.
C'est une erreur et un gaspillage lorsque votre Expert Advisor doit recalculer tous les indicateurs tampons chaque fois que vous changez de TF. Je ne veux pas que ça m'arrive.
Par conséquent, si je suis sur une échelle de temps hebdomadaire, mon tableau sera évidemment beaucoup plus grand que le nombre de barres du graphique.
Et je ne parle même pas des tiques.
En règle générale, je dispose de plusieurs tableaux de structures et de tableaux d'index pour augmenter la productivité et économiser la mémoire. Leurs dimensions peuvent être différentes.
De manière générale, lorsque vous utilisez des indicateurs via iCustom, vous êtes très limité dans de nombreux domaines.
Vous êtes rigidement lié à la taille du tableau égale au nombre de barres du graphique. Et si vous avez un nombre illimité de places debout ?
Vous n'êtes lié qu'à un seul type de double. Et vous ne pouvez même pas rêver d'avoir un ensemble de structures.
C'est même ridicule avec les indicateurs de couleur. 8 octets par barre, c'est évidemment trop.
Les tampons d'indicateurs sont très gaspilleurs en termes de consommation de mémoire.
De plus, vous n'avez accès aux tampons que par le biais de CopyBuffer, même si vous n'avez besoin que d'une dernière barre. Dans tous les cas, cette opération est beaucoup plus lente qu'un simple accès aux éléments d'un tableau.

Bien sûr, si vous utilisez des indicateurs intégrés standard comme iMA, vous n'avez pas à vous en préoccuper outre mesure. Mais je pense néanmoins que nous parlons ici d'indicateurs personnalisés. Je ne pense pas que les professionnels utilisent des indicateurs intégrés pour le trading réel.


 
VVT:

Et qu'est-ce qui est le plus raisonnable en termes d'économie de ressources, le fait de compter dans un indicateur ou de compter la même chose dans un conseiller expert, qui est plus rapide ?

J'ai partiellement répondu dans le post précédent.
Cette question est très longue et il est préférable de la poser aux développeurs, en particulier à ceux qui sont responsables du multithreading.

Je ne suis pas un spécialiste de cette question. Mais je peux partager mes pensées. Si je me trompe sur quelque chose, veuillez me corriger si vous le savez correctement.
Comme vous le savez, chaque Expert Advisor travaille dans un thread séparé, tandis que tous les indicateurs d'un symbole (même dans des graphiques différents) travaillent dans un thread commun.
Par conséquent, nous pouvons supposer que si le symbole n'est pas surchargé d'indicateurs, le travail de l'Expert Advisor et le calcul de la mémoire tampon de l'indicateur fonctionneront en parallèle et même dans différents cœurs de CPU, si le planificateur de l'OS a la chance de trouver un cœur de processeur séparé pour le thread de votre indicateur. Il est tout à fait possible que vous obteniez des résultats plus efficaces avec un tel système. Je ne sais pas quelle est la probabilité d'obtenir un noyau séparé pour un thread indicateur, mais je pense qu'elle n'est pas très élevée.
Mais il y a des notions telles que la vitesse de changement de contexte des threads et de nombreuses autres subtilités de l'interaction de plusieurs threads. Je sais que la vitesse de changement de contexte des threads est très élevée par rapport aux processus, mais elle n'est pas gratuite.
De plus, comme je l'ai dit précédemment, l'accès à l'élément du tampon indicateur par CopyBuffer sera plus coûteux que l'accès à un élément de tableau par son index.
La possibilité d'optimiser lescalculs inutiles, la taille des tableaux internes et leur indexationdans le conseiller expert offre également un grand potentiel de réduction de la consommation de ressources.
Bien sûr, vous aurez besoin d'expériences et de tests appropriés pour répondre pleinement à votre question. Mais je suis toujours plus enclin à croire que la performance moyenne est meilleure - tout cela dans un seul fil de discussion Expert Advisor.

 
Dmitry Fedoseev:

Et courir à chaque fois dans un cycle ? L'EMA serait encore plus intéressante.

Utilisez l'algorithme à passage unique pour calculer la moyenne pondéréeexponentielle.

ma = (1 - a) * prix + a * ma

 
Dmitry Fedoseev:

Un indicateur normal ne compte toutes les barres qu'au début, puis il compte 1 barre par la suite. Dans l'indicateur, il est facile de créer des SMA de telle manière que même lors du calcul d'une barre, il n'est pas nécessaire de parcourir toute la période de la MA.

Bien sûr, nous pouvons créer des tableaux tampons dans l'Expert Advisor. Mais à quoi bon, s'il y a un élément spécialement conçu - les indicateurs ?

Quel est donc le problème ? Un nouveau bar est apparu - nous l'avons considéré.

 
anim:
Je veux que le conseiller expert ne soit pas lié à un indicateur. Ilcalculerait les barres et prendrait les signaux d'achat/de vente en interne. Est-ce possible ?
Bien sûr, c'est possible, si vous implémentez la formule de l'indicateur dans le conseiller expert!
 
Vladimir Mikhailov:

Utilisez l'algorithme à passage unique pour calculer une moyenne pondéréeexponentiellement.

ma = (1 - a) * prix + a * ma

Ce n'est pas correct !

C'est correct :

ma[i] = (1 - a) * prix + a * ma[i+1]

c'est-à-dire que nous avons besoin d'un tableau dont la profondeur nécessaire dépend du paramètre a.

Sinon, ce sera un non-sens total, du moins tant que le processus de transition durera, ce qui peut prendre un temps assez long, selon le paramètre a.

Il est facile de vérifier tout cela en comparant les lectures de l'indicateur avec les calculs correspondants dans l'EA.
 
Dmitry Fedoseev:

Bien sûr, il est possible de créer des tampons à partir d'un tableau dans l'Expert Advisor également... Mais pourquoi, alors qu'il existe un élément spécialement conçu - les indicateurs ?

J'ai un problème avec le saut de signaux d'un indicateur, personne n'a donné de recommandation.

https://www.mql5.com/ru/forum/365021

les impressions montrent que l'événement provient de l'indicateur, vérifie la présence d'une nouvelle barre, et il y a les données de la barre précédente, pas de la nouvelle.

J'ai testé dans 3 terminaux en même temps, les deux sauts étaient dans l'un des trois terminaux, peut-être est-ce aléatoire.

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...