Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 917

 
leonerd:


Comment passer par tous les IDs de graphiques dans le terminal ? current_chart_id dans mon code est 1662429437, first_chart_id est 1859831371. ChartNext() renvoie déjà -1. Qu'est-ce que ChartFirst() ?

Qu'est-ce que cela signifie d'abord ? Ouvert en premier ? Pourquoi son ID est-il plus grand que celui du graphique actuel (ouvert plus tard, d'ailleurs) ?

Apparemment, c'est à cause de la conversion long -> int.

 
Artyom Trishkin:

Merci, oui, c'était comme ça avant.

 
Qui sait comment créer des boucles for while etc. Je voudrais créer une boucle en utilisant ma technologie, que puis-je apprendre ?
 
leonerd:

Apparemment, c'est à cause de la conversion long -> int.

cette logique n'existe pas, voir l'exemple de l'aidehttps://www.mql5.com/ru/docs/chart_operations/chartnext

Les numéros d'identification des graphiques n'ont aucune logique dans leur formation, il s'agit peut-être de poignées Windows ou d'autres numéros, pour regarder tous les ID de graphiques dans le terminal, l'exemple de l'aide est suffisant, j'ai posté dans kodobase un indicateur qui construit le second TF, j'ai utilisé un exemple de l'aide - tout fonctionne comme une horloge - je trouve mon graphique personnalisé - je me souviens de son ID de graphique et je génère des ticks sur celui-ci.


Seric29:
Qui sait comment sont créées les boucles pour while etc. Je voudrais créer une boucle en utilisant ma technologie, que puis-je apprendre ?

hmm, voir votre question pendant quelques jours, quelle réponse voulez-vous entendre ? - ce sont des opérateurs de langage, ils fonctionnent tels que définis par les développeurs et cela est indiqué dans l'aide. dans aucun langage de programmation les opérateurs de langage ne sont décrits "tels quels" - les opérateurs de langage sont toujours "fournis tels quels" - ni plus ni moins.

voici les opérateurs du langage MQL4https://docs.mql4.com/ru/basis/operators- ils sont "comme ça" - c'est labase de tout langage de programmation

 
Igor Makanu:

hmm, plusieurs jours je vois votre question, et quelle réponse voulez-vous entendre ? - ce sont des opérateurs de langage, ils fonctionnent tels que définis par les développeurs, ce qui est indiqué dans l'aide, les opérateurs de langage ne sont pas décrits "tels qu'arrangés" dans aucun langage de programmation - les opérateurs de langage sont toujours "fournis tels quels" - ni plus ni moins

voici les opérateurs du langage MQL4https://docs.mql4.com/ru/basis/operators- ils sont "comme ça" - c'est la base de tout langage de programmation

Il est donc mauvais qu'ils ne soient pas décrits et que la moitié des informations nécessaires soient cachées. Je m'intéresse à la façon dont ils sont structurés. Je veux créer mes propres boucles, et il s'est avéré qu'il y a au moins 3 boucles dans mql qui existent en c++ et pascal, et ces boucles pourraient également faciliter le travail pour réduire le nombre de vérifications et d'initialisation de drapeaux et de variables inutiles, mais je veux créer les miennes, mais je ne peux pas comprendre comment ces itérations se produisent, comment il est fait dans n'importe quel bloc de code, vous pouvez écrire une boucle et des accolades ouvertes, qui contiennent également du code. Très intéressant, si quelqu'un veut écrire quelque chose, s'il vous plaît.

 
Seric29:

De plus, il s'est avéré que mql a au moins 3 boucles qui sont en c++ et pascal.

J'ai étudié le Pascal et le C++ à l'université et c'est toujours le cas :

C++ : for, while, do...while

Pascal : for , while , repeat

MQL : for , while , do...while

? ???


Seric29:

C'est donc une mauvaise chose qu'ils ne soient pas décrits et que la moitié des informations nécessaires soient cachées. Je me demande comment ils fonctionnent.

Je ne sais même pas comment expliquer l'absurdité de votre question, mais je vais quand même essayer :

Vous : - "J'étudie le russe et j'ai besoin de savoir comment fonctionne l'alphabet".

Moi : "L'alphabet n'a pas de structure, ce sont juste des lettres et elles forment des mots"(dans MQL il y a environ une douzaine d'opérateurs et ils forment le programme)https://docs.mql4.com/ru/basis/operators

Vous : "pas question ! Je sais que les lettres de l'alphabet en zimbabwéen signifient beaucoup de choses !".

Moi : "Malheureusement, je ne connais pas la langue, mais en russe une lettre signifie juste que c'est une lettre, vous pouvez bien sûr faire une analyse phonétique, mais cela n'empêchera pas une lettre d'être un élément élémentaire du mot.

Tu dis : "Hmm, c'est étrange, mais en zimbabwéen, si tu dis 'a', c'est une lettre, et si tu dis 'A', ça veut dire paix chez toi, et si tu dis 'aaaaaaah!'". - ça veut dire que j'ai le plus gros zizi !" - il n'y a pas moyen que tu ne puisses pas voir comment les lettres sont disposées dans la langue russe ! - il y a une technologie cachée là-dedans....


c'est à peu près comme ça que je vois notre dialogue, désolé pour mon anglais - je ne peux pas faire autrement

)))

 
Igor Makanu:

Cette logique n'existe pas, consultez l'exemple d'aidehttps://www.mql5.com/ru/docs/chart_operations/chartnext.

Les numéros d'identification des graphiques n'ont aucune logique dans leur formation, il s'agit peut-être de poignées Windows ou d'autres numéros. Pour rechercher tous les ID des graphiques dans le terminal, l'exemple de l'aide est suffisant, j'ai utilisé un indicateur pour construire des sec-tFs dans kodobase.

ChartFirst() retourne le plus petit ID du graphique ouvert ?

 
leonerd:

ChartFirst() retourne le plus petit ID des graphiques ouverts ?

Encore une fois, non ! - La valeur numérique de ChartFirst() n'a aucun sens.

PZS : ......peut-être que je me trompe, mais j'ai lu quelque part que ChartFirst() renvoie l'ID du graphique qui a été ouvert en premier, pas celui qui est le premier dans votre séquence de graphiques (vous pouvez le déplacer), mais celui qui a été ouvert en premier dans le terminal du client - enfin, je ne suis pas sûr d'avoir raison sur ce point...


ChartFirst() vous donne un point de départ à partir duquel vous pouvez faire défiler les graphiques avec ChartNext(). Cela se présente comme suit : obtenir le premier ID ChartFirst() - mémoriser la valeur et transmettre cette valeur à ChartNext() - et ainsi de suite, jusqu'à ce que la première valeur ChartFirst() soit répétée - ce qui signifie que vous avez fait défiler tous les graphiques possibles,

voici le code de mon indicateur dans KB - je l'ai trouvé dans l'aide, l'ai vérifié et l'utilise pour trouver mon graphique :

//+------------------------------------------------------------------+
//| поиск  идентификатора графика                                    |
//+------------------------------------------------------------------+
long CheckChart(string sym,int period,int &wh)
  {
   long result=0,id=ChartFirst();
   while(id>=0)
     {
      if(ChartSymbol(id)==sym && ChartPeriod(id)==period && ChartGetInteger(id,CHART_IS_OFFLINE))
        {
         result=id;
         ChartSetInteger(id,CHART_AUTOSCROLL,true);
         ChartSetInteger(id,CHART_SHIFT,true);
         ChartNavigate(id,CHART_END);
         ChartRedraw(id);
         wh=WindowHandle(sym,period);
         PrintFormat("Найдено окно графика: [%s,%d]",sym,period);
         break;
        }
      id=ChartNext(id);
     }
   return(result);
  }
//+------------------------------------------------------------------+
 
Igor Makanu:

Encore une fois, non ! - La valeur numérique de ChartFirst() n'a aucun sens.

SZY : ......peut être faux, mais j'ai lu quelque part que ChartFirst() retourne l'ID du graphique qui a été ouvert en premier, pas le premier graphique dans votre séquence de graphiques (vous pouvez le déplacer), mais celui qui a été ouvert en premier dans le terminal du client - en général, je ne suis pas sûr d'avoir raison à ce sujet


ChartFirst() vous donne un point de départ à partir duquel vous pouvez faire défiler les graphiques avec ChartNext(). Cela se présente comme suit : obtenir le premier ID ChartFirst() - mémoriser la valeur et transmettre cette valeur à ChartNext() - et ainsi de suite, jusqu'à ce que la première valeur ChartFirst() soit répétée- ce qui signifie que vous avez fait défiler tous les graphiques possibles,

voici le code de mon indicateur dans KB - je l'ai trouvé dans l'aide, l'ai vérifié et l'utilise pour trouver mon graphique :

Étrange. L'aide ne dit rien sur "jusqu'à ce que la première valeur ChartFirst() soit répétée". À la fin de la liste des cartes, il retourne -1.

Valeur retournée

L'identifiant de la carte. Si la liste des cartes est terminée, la fonction renvoie -1.

Документация по MQL5: Операции с графиками / ChartNext
Документация по MQL5: Операции с графиками / ChartNext
  • www.mql5.com
Операции с графиками / ChartNext - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

Étrange. L'aide ne dit rien sur "jusqu'à ce que la première valeur ChartFirst() soit répétée". Lorsque la liste des cartes se termine, elle renvoie -1

Je suis désolé - je suis un pécheur ! Je ne l'ai pas lu, j'étais ivre quand j'écrivais sur ce forum !