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

 
Artyom Trishkin:

2. Que signifie "plus de zéro" ?

Signifie qu'il y a un certain prix dans le tampon, sinon il n'y a pas de prix dans le tampon.

Artyom Trishkin:

Que montrent les valeurs tampons de cet indicateur dans la fenêtre de données ?

Le prix ou rien.
 
Ghabo:

Signifie qu'il y a un certain prix dans le tampon, sinon il n'y a pas de prix dans le tampon.

EMPTY_VALUE est une valeur de tampon "vide", que de nombreux indicateurs utilisent par défaut, a une valeur de DBL_MAX - et celle-ci est très largement supérieure à zéro. C'est pour ça que je demande.

Essayez de vérifier si(M_A > 0 && M_A < EMPTY_VALUE)

 
Artyom Trishkin:

La valeur EMPTY_VALUE, la valeur de tampon "vide" que de nombreux indicateurs utilisent par défaut, a une valeur de DBL_MAX - qui est très supérieure à zéro. C'est pour ça que je demande.

Essayer de vérifier si(M_A > 0 && M_A < EMPTY_VALUE)

Les signaux sont bien là. C'est ça ?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Donc il n'y aura pas d'alerte au démarrage mais il y aura à l'apparition du signal sur la barre pendant laquelle l'indicateur a été attaché ?

J'en doute, à l'initialisationle temps est déjà égal au temps d'ouverture de la barre.

Comment décider ?

 
Ghabo:

Les signaux sont bien là. C'est tout ?

Il n'y aura donc pas d'alerte au démarrage mais il y en aura une lorsque le signal apparaîtra sur la barre pendant laquelle l'indicateur était attaché ?

J'en doute, à l'initialisation, letemps est déjà égal au temps d'ouverture de la barre.

Comment résoudre le problème ?

Supprimer le temps d'initialisation dans OnInit()

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

donc tout est déjà en place, il faut juste ajouter l'écriture/la lecture

Ce code fonctionne-t-il ou devrait-il fonctionner ? J'ai une divergence après la récupération de la variable globale avec l'ID réel. Et si vous le pouvez, un exemple sous forme d'indicateur. Merci.
 
inter78:
Ce code fonctionne-t-il ou devrait-il fonctionner ? J'ai une divergence après la récupération d'une variable globale avec un vrai ID. Et si possible un exemple sous forme d'indicateur. Merci.

Mon code, il fonctionne pour moi, je ne peux pas voir votre code.
s'il vous plaît)

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toutes questions pour les débutants sur MQL4, aide et discussion sur les algorithmes et les codes

Taras Slobodyanik, 2018.10.05 11:01

Les variables globales n'ont rien de compliqué :
- le nom de la variable sera préfixe+symbole+période, valeur = identifiant du graphique
- Lorsque vous commencez, recherchez les variables avec votre préfixe et comparez l'aidi
- Si un graphique n'est pas le nôtre, nous vérifions si un tel graphique existe ; s'il n'existe pas déjà, nous supprimons la variable
- Si un graphique nous appartient, nous retirons un symbole et un point du nom et supprimons aussi la variable (ou la réécrit)



J'essaie d'aider mes lecteurs à comprendre la signification du préfixe de la variable et son utilisation. Veuillez me donner un exemple de la création d'une telle variable globale.

Il est indiqué que les GPT sont stockés pendant 4 semaines, est-ce même si le terminal est éteint ?

 
psyman:

Je ne trouve rien dans l'aide sur ce qu'est un préfixe de variable ou pourquoi il est nécessaire. Veuillez me donner un exemple de la façon de créer une telle variable globale.

Il est dit que les GPT sont stockés pendant 4 semaines, même si le terminal est éteint ?

Je voulais dire le préfixe dans le nom pour pouvoir identifier où une variable est la sienne et où elle est celle de quelqu'un d'autre, et le préfixe peut supprimer toutes les variables en même temps :

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

par exemple :

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps. vous pouvez également stocker/extraire des informations dans le nom

 

Maintenant nous savons de quoi nous parlons.

=Le nom de la variable est préfixe+symbole+période, la valeur est l'identifiant du graphique.

Pourquoi si compliqué ? Si vous souhaitez uniquement stocker la période, vous pouvez la nommer avec l'identifiant du graphique.

 
psyman:

Maintenant nous savons de quoi nous parlons.

=Le nom de la variable est préfixe+symbole+période, la valeur est l'identifiant du graphique.

Pourquoi est-ce si compliqué ? Si vous ne voulez stocker qu'une période, vous pouvez nommerun id de graphique.

je l'écris juste à titre d'exemple)

si vous n'avez pas besoin de vous souvenir du symbole, vous n'avez pas besoin de vous en souvenir.

Si le nom n'est qu'un identifiant de graphique, comment supprimer les variables inutiles ?
(si utilisé souvent, il y aura beaucoup de variables)

si pas de préfixe - même chose, comment supprimer les variables inutiles ?