Indicateur, besoin de conseils sur l'auto-contrôle de la DISTANCE entre les textes (MT-4)

 

Bonjour chers programmateurs !
Veuillez donner votre avis :

Nous créons un Expert Advisor sous la forme d'un indicateur ! Sa tâche - rechercher un PATTERN sur le graphique, et sur les barres écrire du texte (multi-lignes ( !), comme par exemple

ligne 1 " nom du signal "
ligne #2 "% de probabilité"
ligne n°3 "icône" (flèche)

Le problème est que SI vous définissez une distance FIXE entre les lignes = par ex. 25 pips, tout va bien sur m5 ... mais sur H1 = les lignes sont trop espacées (c'est le problème avec le texte fixe ( !!!)


S'il vous plaît, dites-moi comment vous pouvez faire un "calcul automatique" de la distance entre les lignes quand vous changez le TF ou la "hauteur" du graphique quand vous décalez le graphique un peu vers la gauche, ou par la hauteur ( ????!!!)

..... Une seule chose me vient à l'esprit :

1) "récupérer" la hauteur actuelle du graphique (prix min. et max.) :


2) Prix Max - Prix Min = "hauteur du graphique en pips" et nous le prenons toujours à 100%.

3) au lieu de "distance fixe entre les lignes (25 pips) - spécifiez la distance en pourcentage (par exemple 2% de la hauteur du graphique à partir du point 2))


..... a parlé à un programmeur - il dit == NE PAS DÉPLACER LES OBJETS ... eh bien, vous ne pouvez pas le faire ....... pour réarranger le texte multi-lignes afin qu'il ne se chevauche pas == vous devez supprimer tout le texte après avoir retourné le graphique == supprimer tout le texte, et le réécrire à nouveau à la nouvelle hauteur du graphique (point 2) ( !)


..... puis je continue à me demander == OK, et si = je fais le dessin UNIQUEMENT dans le SCREEN GUIDE ? ??!

Il a dit = ok, les NOUVEAUX signaux seront écrits de la manière correcte, mais ceux qui restent = = OU à nouveau s'emboîtent les uns sur les autres, ou vice versa = s'étirent encore plus largement (de haut en bas) car "on ne peut pas déplacer les objets déjà dessinés, mais il suffit de les supprimer, et de les redessiner à nouveau ( !)


Question à vous = Quelqu'un a-t-il déjà rencontré un tel ? ?????? comment a-t-il résolu ce problème ? ?? )))
(de sorte que, quelle que soit l'échelle et la hauteur du graphique, le texte multiligne retrouve un espacement normal entre les lignes (s'il est mesuré avec une règle visuellement == 3mm à l'œil nu) ... c'est-à-dire que l'espacement des lignes doit être DYNAMIQUE) ? ???? )))))))))

Je ne veux pas faire toute l'inscription en UNE ligne, et à un angle de 45° ( !) , parce qu'il est visuellement plus pratique de faire le texte HORIZONTAL, et en 2-3 lignes :)

Veuillez nous conseiller (partagez vos expériences)


Merci ;).

 
Vitaliy Kostrubko:


Étudiez ce court code et il pourrait vous aider. Tout est mis en œuvre dans Canvas.

Ce qui est bien avec Canvas, c'est que le code sera pratiquement le même pour MT4 et MT5.

Dossiers :
 
Vitaliy Kostrubko:

Bonjour, chers programmateurs !
Veuillez me donner vos meilleurs conseils :

...


Merci ;)

Dessinez sur la toile :

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
  • www.mql5.com
Стандартная библиотека / Пользовательская графика / CCanvas - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Oups... Nikolaï m'a devancé...
 

Vous pensez correctement.

//подсчитывает количество пунктов цены в одном пикселе
double GetPointsInPixel(long eChartId, int eWindow)
   {
   double eMin=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MIN,eWindow,eMin);
   if(eMin==EMPTY_VALUE) return(0);
   double eMax=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MAX,eWindow,eMax);
   if(eMax==EMPTY_VALUE) return(0);
   long ePixels=-1;
   ChartGetInteger(eChartId,CHART_HEIGHT_IN_PIXELS,eWindow,ePixels);
   if(ePixels<=0) return(0);
   return(double(eMax-eMin)/ePixels);
   }

double eIndent=GetPointsInPixel(eChartId,eWindow) ;

Ajoutez ou soustrayez ensuite cette valeur au prix requis, lorsque les événements changent :

-changement de calendrier,

-Augmentation/diminution d'un graphique,

-Réduction de l'échelle des prix.

 
Nikolai Semko:

Étudiez ce court code et il pourrait vous aider. Tout est mis en œuvre dans Canvas.

Ce qui est bien avec Canvas, c'est que le code sera pratiquement le même pour MT4 et MT5.

OK, merci)

 
Artyom Trishkin:
Oups... Nikolaï m'a devancé...

... )))))) L'essentiel est que les pensées soient les mêmes ))))
Merci )))))

 
Aleksei Stepanenko:

Vous pensez correctement.

double eIndent=GetPointsInPixel(eChartId,eWindow) ;

Ajoutez ou soustrayez ensuite cette valeur au prix requis, lorsque les événements changent :

-changement de calendrier,

-Augmentation/diminution d'un graphique,

-Réduction/réduction de l'échelle des prix.

Merci ))))))))

 

Vitaliy Kostrubko:

Aleksei Stepanenko:

Vous pensez correctement.

double eIndent=GetPointsInPixel(eChartId,eWindow) ;

Ajoutez ou soustrayez ensuite cette valeur au prix requis, lorsque les événements changent :

-changement de calendrier,

-Augmentation/diminution d'un graphique,

-Réduction/réduction de l'échelle des prix.

Merci ))))))))

Et dites à ce consultant malheureux qu'il doit commencer à apprendre la langue, pas les exemples de ****coders.

 
Alexey Viktorov:

Et dites à ce consultant malheureux qu'il doit commencer à apprendre la langue, pas les exemples de ****coders.

Copie )))))
... Le temps montre, que même 10 ans d'expérience de programmation avec une variété d'EA (différents niveaux de complexité) == il n'est pas suffisant de connaître l'ensemble du domaine de codage).
parce que pendant ces 10 ans, vous pouvez devenir un super-professionnel dans 2/3 des langages de programmation ... et n'en connaissent pas 1/3 du tout))
donc pas besoin d'être offensé)) mais c'est à vous de maîtriser cette partie 1/3 == c'est une affaire individuelle)).

.... il est juste plus intéressé par les "ALGORITHMES astucieux qui apportent des PROFITS... et écrire des "dessins animés" n'est pas son intérêt ...

Mais je lui montrerai votre exemple, c'est sûr)).
Merci ))))

 
Vitaliy Kostrubko:

Prenez-le )))))
... Le temps montre que même 10 ans d'expérience de programmation avec les EA les plus diverses (différents niveaux de complexité) == il ne suffit pas de connaître le domaine de codage TOTAL)
parce que pendant ces 10 ans, vous pouvez devenir un super-professionnel dans 2/3 des langages de programmation ... et n'en connaissent pas 1/3 du tout))
donc pas besoin d'être offensé)) mais c'est à vous de maîtriser cette partie 1/3 == c'est une affaire individuelle)).

.... il est juste plus intéressé par les "ALGORITHMES astucieux qui apportent des PROFITS... et les "dessins animés" ne l'intéressent pas...

Mais votre exemple, je vais le lui montrer, c'est sûr )).
Merci ))))

Vous n'avez pas besoin de vous référer à moi. Cette option, bien que je l'aie utilisée, je ne l'ai pas exprimée. Je ne faisais que soutenir mon homonyme dans son opinion.

Et si un "programmeur" parle de l'impossibilité de déplacer un objet graphique, il n'est pas du tout un programmeur et pas même une parodie de programmeur, mais juste ****coder.
Raison: