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

 
Alexey Viktorov:

La question semble porter sur MT5. La réponse est : pas de manière programmatique. La question peut être close.

Merci.

 

Bonjour tout le monde, comme promis je suis de retour pour plus de tutorielsЈ ;-) Bien sûr, j'ai fait fonctionner la machine Grail, mais elle a été lente à tester, alors j'ai cherché des moyens d'exécuter du code à l'intérieur du tick seulement quand une nouvelle barre arrive. J'ai trouvé l'option suivante. Au niveau global, une variable est définie

int intBars;// ГЛОБАЛЬНО ОПРЕДЕЛЁННАЯ ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ НАСТУПЛЕНИЯ

Ensuite, j'ai écrit une fonction qui vérifie si une nouvelle barre est apparue - c'est un chef-d'œuvre .


bool f_IsNewBar()
{
   if(intBars != Bars) 
   {
      intBars = Bars;
      return(true);
   } 
return(false);
}

Quand j'ai trouvé cette variante, ils disent que je dois créer une fonction avec toute la logique du on-tick. Je n'aime pas franchement cette approche avec les fonctions, donc je vérifie simplement s'il y a une nouvelle barre et si c'est vrai, j'exécute du code dans le on-tick. Sous une forme simplifiée - sans aucun travail réel - cela ressemble à ceci

void OnTick()
{//НАЧАЛО ОН ТИК
   // если появился новый бар:
   if(f_IsNewBar()) // ЕСЛИ ПОЯВИЛСЯ НОВЫЙ БАР
    {// ВЫПОЛНЯЕМ ВЕСЬ КОД В ОН ТИК
/*
МНОГО МНОГО СЕКРЕТНОГО ГРААЛЬНОГО КОДА😃😃😃
*/

    }
}// КОНЕЦ ОН ТИК

J'ai une autre question. Le graal fonctionnera bien sûr sur le cas réel. Donc, cette vérification doit être supprimée dans la version du graal qui ne sera pas testée dans le testeur mais exécutée sur le tick réel, afin que l'EA fonctionne sur chaque tick, ou devons-nous laisser cette vérification pour le tick réel également ? Si ce contrôle est également inclus dans la version pour compte réel, comment devons-nous planifier une deuxième tentative d'ouverture des ordres s'ils n'ont pas été ouverts la première fois ?

 
DanilaMactep:

Bonjour tout le monde, comme promis je suis de retour pour plus de tutorielsЈ ;-) Bien sûr, j'ai fait fonctionner la machine Grail, mais elle a été lente à tester, alors j'ai cherché des moyens d'exécuter du code à l'intérieur du tick seulement quand une nouvelle barre arrive. J'ai trouvé l'option suivante. Au niveau global, une variable est définie

Ensuite, j'ai écrit une fonction qui vérifie si une nouvelle barre est apparue - c'est un chef-d'œuvre .


Quand j'ai trouvé cette variante, ils disent que je dois créer une fonction avec toute la logique du on-tick. Je n'aime pas franchement cette approche avec les fonctions, donc je vérifie simplement s'il y a une nouvelle barre et si c'est vrai, j'exécute du code dans le on-tick. Sous une forme simplifiée - sans aucun travail réel - cela ressemble à ceci

J'ai une autre question. Le graal fonctionnera bien sûr sur le cas réel. Donc, cette vérification doit être supprimée dans la version du graal qui ne sera pas testée dans le testeur mais exécutée sur le tick réel, afin que l'EA fonctionne sur chaque tick, ou devons-nous laisser cette vérification pour le tick réel également ? Si ce contrôle est également inclus dans la version pour compte réel, comment devons-nous planifier une deuxième tentative d'ouverture des ordres s'ils n'ont pas été ouverts la première fois ?

Si les calculs sont effectués sur les valeurs des barres OPT, HI, LO, CLOSES, nous n'avons pas besoin de le faire à chaque tick. Mais il est correct de surveiller le prix à chaque tick. Il doit s'agir de calculs ou de contrôles de condition distincts.

Le nouveau bar est également suivi par l'heure d'ouverture du bar zéro.

FlagNewBar=false;   // глобальная или статик булева переменная
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }
 
Artyom Trishkin:

Dans ce fil de discussion, je veux commencer à aider ceux qui veulent vraiment comprendre et apprendre la programmation dans le nouveau MQL4 et qui veulent passer facilement à MQL5 - les langages sont très similaires.

Ce blog sera un bon endroit pour discuter des problèmes, des algorithmes de leur solution et de toute autre question concernant la programmation MT d'une manière ou d'une autre.

J'espère que d'autres membres expérimentés de notre forum se joindront à la discussion et que la branche sera intéressante pour tous.

Tâches MQL4 : Déterminez le numéro de position d'une lettre majuscule dans une chaîne de caractères. Merci.

 
Mikhail Nazarenko:

MQL4 Task : Déterminez le numéro de position d'une lettre majuscule dans une chaîne de caractères. Merci.

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   pos=StringFind(uppercase,StringSubstr(str,i,1));
   if(pos>=0) break;
   }
printf(pos);
 
Aleksei Stepanenko:

Merci.

 
Mikhail Nazarenko:

Merci.

Faux, ce n'est pas le résultat de StringFind que nous voulons, c'est le i.

Bien :

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   if(StringFind(uppercase,StringSubstr(str,i,1))>=0)
      {
      pos=i;
      break;
      }
   }
printf(pos);
 
Mikhail Nazarenko:

MQL4 Task : Déterminez le numéro de position d'une lettre majuscule dans une chaîne de caractères. Merci.

Vous pouvez utiliser StringGetCharacter() Le caractère "A" est 65 et "a" est 32 de plus - 97. Et tous les personnages le sont aussi. Par conséquent, si le code d'un caractère est > 90 et <= 122, il s'agit d'un caractère latin minuscule. Les caractères cyrilliques diffèrent également par 32

 
Alexey Viktorov:

Vous pouvez

Exactement, une bonne option.

 
Bonjour. Comment puis-je créer un compte de dirigeant ici ?
Raison: