Erreurs, bugs, questions - page 2962

 
A100:

Conseil - en MQL pur, pensez... Il m'est venu à l'esprit

Enveloppez la variable dans une classe et obtenez le descripteur d'objet.
Il n'y a aucun moyen de passer le descripteur à l'Expert Advisor, de l'obtenir directement de l'objet. )))
Je ne sais pas, je n'ai pas essayé, l'idée m'est venue aussi. Mais je ne suis pas un fan des classes, j'utiliserais plutôt le mapping.
Tout est disponible dans le standard WinApi.

Документация по MQL5: Основы языка / Типы данных / Указатели объектов
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
  • www.mql5.com
Указатели объектов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Vous créez une variable int dans l'indicateur, l'initialisez et y stockez le nombre.
Dans l'indicateur, définissez une fonction personnalisée qui renvoie cette variable.
Définissez la fonction avec le mot-clé export.
Importez cette fonction dans le conseiller expert à partir de name_indicator.ex4
Appelez la fonction lorsque cela est nécessaire.
Je n'ai pas mesuré la vitesse.

Ce système ne semble pas fonctionner. Montrez un exemple élémentaire, s'il vous plaît.

 
Nikolai Semko:

Si l'utilisation de user32.dll n'est pas critique, voici une autre option. Je ne me souviens pas des mesures, mais j'ai écrit ci-dessous qu'il semble fonctionner rapidement. Vous avez également demandé pourquoi j'avais besoin de rapidité :)) La solution
est universelle (je peux l'utiliser entre les terminaux également), et non événementielle. Vous devrez travailler avec la minuterie. Cependant, le temps minimum entre les événements dansOnChartEvent ne peut pas non plus être inférieur à 1/64 de seconde.

Merci, mais cela ne fonctionne pas, car la situation suivante est possible.

Expert1 et Expert2 lisent les données de l'Indicateur1, Expert3 lit les données de l'Indicateur2.


Le modèle piloté par les événements n'est pas nécessaire. C'est-à-dire que le conseiller expert doit être capable de lire le numéro uniquement lorsqu'il en a besoin. Il n'a pas besoin de saisir le moment où l'indicateur change de chiffre. Donc, en substance, la tâche est très simple.


Dans le langage des variables globales, la solution est la suivante

Indicateur :

GlobalVariableSet(IndividualName, Number);


Conseiller expert :

Number = (int)GlobalVariableGet(IndividualName);


Avec cette implémentation, la lecture est terriblement lente. Quelques heures d'observation de la variante sur les ressources montrent qu'elle est environ 100 fois plus rapide.

 
A100:

Conseil - en MQL pur, pensez... Ça m'est venu comme ça.

Je vais attendre une solution.

 
fxsaber:

Merci, mais cela ne convient pas, car c'est une situation possible.

Expert1 et Expert2 lisent les données de l'Indicateur1, Expert3 lit les données de l'Indicateur2.

Vous pouvez placer un petit tableau d'int dans la chaîne, puis "diviser pour mieux régner".

 
Nikolai Semko:

Vous pouvez placer un petit tableau d'int dans la chaîne, puis "diviser pour mieux régner".

L'indicateur 1 et l'indicateur 2 doivent alors être synchronisés d'une manière ou d'une autre pour pouvoir écrire les deux nombres dans une chaîne commune.

Il s'agit d'une solution très complexe.

 
fxsaber:

L'Indicateur1 et l'Indicateur2 doivent alors être synchronisés d'une manière ou d'une autre pour pouvoir écrire les deux nombres sur la même ligne commune.

Il s'agit d'une solution très complexe.

Deux indicateurs et un EA sur un seul graphique ?

 
fxsaber:

L'indicateur 1 et l'indicateur 2 doivent alors être synchronisés d'une manière ou d'une autre pour que les deux chiffres puissent être écrits sur la même ligne commune.

Il s'agit d'une solution très complexe.

La fonction GlobalVariableSetOnCondition a été inventée depuis longtemps pour la synchronisation
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
  • www.mql5.com
GlobalVariableSetOnCondition - Глобальные переменные терминала - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:
La fonction GlobalVariableSetOnCondition a été inventée il y a longtemps pour synchroniser

Je suis conscient de cela, je sais comment l'utiliser. J'essaie de m'éloigner des systèmes mondiaux, car ils sont terriblement lents.

 
fxsaber:

L'indicateur 1 et l'indicateur 2 doivent alors être synchronisés d'une manière ou d'une autre pour que les deux chiffres puissent être écrits sur la même ligne commune.

Il s'agit d'une solution très complexe.

Pourquoi auraient-ils besoin d'être synchronisés ? user32.dll le fera pour eux.
L'essentiel est de les numéroter correctement, de sorte que chaque numéro soit unique et que ce numéro soit un index du tableau de données.
En dernier recours, cette opération peut être effectuée manuellement. Ou vous pouvez le faire automatiquement. À propos, j'ai récemment publié quelque chose de similaire dans KB(Indicator Cases).
Comment ne pas aimer les ressources ? Je pense que c'est optimal dans les limites d'un seul terminal. La variante que je propose, utilisant user32.dll (j'ai mis en œuvre cette variante il y a environ 10 ans, lorsque j'étais jeune et que je faisais de l'arbitrage), le temps d'accès et l'analyse des données sont d'environ 50 microsecondes (je pense qu'il peut être accéléré de 1,5 à 2 fois). Est-il plus lent avec les ressources ?