Erreurs, bugs, questions - page 3126

 
Nikolai Semko #:

Quel est le problème, Andrei ?
Formation d'une structure de données ou d'un tableau de structures

Aucun problème ! C'est juste les étapes supplémentaires, c'est de ça que je parle.

Tout indicateur mis en mémoire tampon peut être lu par tout autre indicateur ou conseiller expert.

Par exemple, j'ai un EA qui obtient une liste d'indicateurs en cours d'exécution, puis les crée sur une liste spécifiée d'instruments/TF, puis collecte des signaux à partir de ceux-ci (et les envoie à telegram). Ainsi, il suffit d'exécuter n'importe quel indicateur tampon sur un graphique pour qu'il soit repris automatiquement. Mais l'indicateur kanvas devra être connecté manuellement et ensuite le reste du travail devra être fait manuellement.

Nous devons unifier le travail avec les indicateurs kanvas. Je crains que cette unification n'aboutisse à ... indicateurs de tampon))

 
Nikolai Semko #:

Quel est le problème, Andrei ?

Je n'en ai pas trouvé et je n'ai même pas cherché à en trouver un.

 
Andrey Khatimlianskii #:

Il n'y a pas de problème ! Ce ne sont que des gestes inutiles, c'est ce dont je parle.

Tout indicateur tampon peut être lu par tout autre indicateur ou EA, et un kanvas a besoin d'une couche de kastum.

Par exemple, j'ai un EA qui obtient une liste d'indicateurs en cours d'exécution, puis les crée sur une liste spécifiée d'instruments/TF, puis collecte des signaux à partir de ceux-ci (et les envoie à telegram). Ainsi, il suffit d'exécuter n'importe quel indicateur tampon sur un graphique pour qu'il soit repris automatiquement. Mais l'indicateur kanvas devra être connecté manuellement et ensuite le reste du travail devra être fait manuellement.

Nous devons unifier le travail avec les indicateurs kanvas. Je crains que cette unification n'aboutisse à ... indicateurs de tampon)).

Je parle d'étendre les possibilités, y compris l'utilisation des mêmes classes pour la visualisation, tant dans les indicateurs que dans les Expert Advisors. Dans les indicateurs, bien sûr, il existe toujours une méthode de transfert par tampon et personne n'interdit son utilisation en cas de toile pure.
Et d'ailleurs, j'ai déjà implémenté une méthode hybride de transfert, lorsqu'un tableau de structures est transféré dans un seul tampon via une union. Bien qu'il y ait un ajout supplémentaire du côté de la réception, mais premièrement, ce n'est pas compliqué, et deuxièmement, cela rend le travail avec les données d'un autre indicateur plus facile et plus pratique pour l'utilisateur grâce aux structures, et non aux tableaux de doubles. Les utilisateurs l'apprécieront certainement.
 
Mihail Matkovskij #:

Kanvas lui-même fonctionne avec une ressource graphique (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Il reste donc à communiquer le nom de la ressource à une autre application et celle-ci pourra facilement accéder aux pixels. Il devra également transmettre le format des pixels. Et vous pouvez lire les pixels ou les modifier avec un autre CCanvas. Il dispose d'une méthode appelée CCanvas::Attach pour l'attacher à une ressource existante.

Il est peu probable qu'il y ait une tâche de transfert d'un graphique, car il est souvent synchronisé avec les barres et le prix de l'autre fenêtre, et est intégré au modèle d'événement.
La fenêtre de l'indicateur ne se formera pas si elle n'est pas présente ou si elle n'est pas active.
Si la fenêtre de l'indicateur n'existe pas, il n'y a qu'un moyen de passer par iCustom en utilisant un ou plusieurs tampons. Mais comme je l'ai déjà dit, vous pouvez placer une structure ou un tableau de structures dans ces tampons.
 
Andrei Trukhanovich #:

Je n'ai pas pu le trouver et je n'ai même pas cherché.

Merci pour votre rapport.
Maintenant, nous savons que vous n'avez pas
 
Nikolai Semko #:
De plus, je pense que la ressource graphique ne sera même pas générée si la fenêtre de l'indicateur n'existe pas ou n'est pas active.

Je me demande dans quels cas si un indicateur est en cours d'exécution et que sa fenêtre n'existe pas ? Et lorsque la fenêtre est inactive (l'utilisateur est passé à un autre graphique ou l'a minimisé), quelle ressource est déchargée de la mémoire, est-elle simplement supprimée ?

Nikolai Semko #:
Mais, comme je l'ai dit, vous pouvez placer une structure ou un tableau de structures dans ces tampons.

Je pense que je suis d'accord avec vous sur ce point. Je devais créer un robot multitâche. La première instance de l'application crée des tâches et des diagrammes pour celles-ci, puis applique un modèle spécial avec le même robot. Ensuite, le premier robot crée les tâches et les robots créés par l'automate les exécutent. Le transfert des données se fait par le biais de ressources. Les chaînes de chiffres et les structures y sont transférées. Il existe un exemple de transfert de données via http ici sur le site (si ma mémoire est bonne). Mais les données concernant les structures, leurs tailles et leurs types sont placées en premier, puis les données elles-mêmes. J'ai décidé de faciliter les choses dans mon Expert Advisor en faisant passer les chaînes et les nombres par un tableau de types uchar sous forme de chaînes, ce qui simplifie grandement le processus de lecture/écriture. Mais je n'ai jamais écrit d'octets dans des tampons indicateurs pour les lire à partir de là. Mais je vois déjà un inconvénient de cette méthode - le nombre limité d'octets dans les barres de l'indicateur. Bien qu'il y ait 8 octets dans chaque cellule du tableau. Peut-être que ce n'est pas un si grand désavantage. Qui sait...

 
Mihail Matkovskij #:

Je me demande dans quels cas si un indicateur fonctionne mais que sa fenêtre n'existe pas ?

Je voulais dire en utilisant iCustom

Et lorsque la fenêtre est inactive (l'utilisateur est passé à un autre graphique ou l'a minimisé), quelle ressource est déchargée de la mémoire, est-elle simplement supprimée ?

c'était juste mon hypothèse, car il n'y a pas d'intérêt particulier à former des images lorsque la fenêtre est réduite. Comment c'est implémenté dans MT - je n'ai pas vérifié, mais je suis tombé sur quelque chose de similaire. J'ai oublié toutes les nuances.
De toute façon, il est peu probable que la ressource soit supprimée, mais elle n'est pas non plus mise à jour avec le temps. Par exemple, CCanvas::Update ne fonctionne pas.

void CCanvas::Update(const bool redraw)
  {
//--- check
   if(m_rcname==NULL)
      return;
//--- update resource and redraw
   if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
      ChartRedraw(this.m_chart_id);
  }
 
Nikolai Semko #:

Je voulais dire en utilisant iCustom

Il s'avère que vous pouvez faire passer des valeurs par la ressource et les tampons, mais pas par la ressource Kanvas. C'est une tâche intéressante que d'appeler un indicateur avec une sortie vers Kanvas en utilisantiCustom. Je ne l'ai pas essayé. Il me semble que dans ce cas, il peut y avoir des erreurs. Peut-être qu'un tel indicateur chargé par iCustom ne fonctionnera pas du tout ?

Dans tous les cas, il est peu probable que la ressource soit supprimée, mais elle n'est pas non plus mise à jour dans le temps. Par exemple, CCanvas::Update ne fonctionne pas.

Je pense que ResourceCreate fonctionne, mais le résultat n'est pas rendu avec ChartRedraw. Les appels à la fonction se poursuivent, mais le système comprend que le graphique n'a pas besoin d'être mis à jour tant qu'il est inactif. Mais siResourceCreate ne fonctionne pas,imaginez que l'indicateur a mis à jour des données à un tick aléatoire lorsque le graphique est inactif, mais que la ressource de Kanvas n'a pas été mise à jour. Et puis l'utilisateur a décidé d'activer ce graphique inactif et de regarder l'indicateur (Kanwa). Et il s'avère qu'il y a eu un tic, mais que le Canva reste le même qu'avant que l'utilisateur ne modifie le graphique. Et si pendant la période d'inactivité il y avait beaucoup de tics ? Bien sûr, l'indicateur les traiterait, mais aucun des résultats ne serait affiché sur le canevas.

 
Mihail Matkovskij #:

Je pense que ResourceCreate fonctionne, mais le résultat ne s'affiche pas avec ChartRedraw.

Oui, vous avez probablement raison. C'est probablement le cas.
Et pour économiser des ressources, il serait bon de surveiller l'activité de la fenêtre et de ne pas générer de bitmap si la fenêtre n'est pas active.

Cela vaut la peine de vérifier plutôt que de faire des suppositions.

 

Ah, ce thème dans le débogage ne fonctionne plus ?
Dommage :(( Il était très utile dans mon travail.


Raison: