[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 396

 
DanLett:

c'est-à-dire que pendant que la barre[0] actuelle est construite, la précédente est définie.


En option :

datetime last_time;   // глобальная переменная

...

int start()
{
   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      //... ваши расчеты с плюсованием
   }
   
... дальше работаем
 
7777877:

Oui, merci, ça a aidé... Mais je veux comprendre pourquoi ObjectSet(object_name,OBJPROP_TIMEFRAMES,PERIOD_H1) ne fonctionne pas (comme il devrait) ? S'agit-il de lacunes dans la langue elle-même ?

De fait, PERIOD_H1 et OBJ_PERIOD_H1 ne sont qu'une substitution alpha d'une valeur numérique.

OBJ_PERIOD_H1 = 0x0010 (pour la construction actuelle) = 0001 0000 (binaire)

PERIOD_H1 = 60 (pour cette construction) = 0011 1100 (binaire)


Comme il est facile à remplacer, vous avez accidentellement mis 4 délais au lieu d'un - H4, H1, M30 et M15.


Et au lieu d'appeler ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x0010) (ce que vous vouliez faire) vous avez appelé

ObjectSet(object_name,OBJPROP_TIMEFRAMES,0x3C).

 
datetime last_time;   // глобальная переменная

...

int start()
{
   if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(close[1]>open[1]) 
xBost_b=xBost_b+((close[1]-low[1])*10000);
   }

qu'est-ce que Time[0] et comment affecte-t-il 1 temps plus ? ! je suis un peu perdu...

 
DanLett:

qu'est-ce que Time[0] et comment affecte-t-il 1 temps plus ? ! je suis un peu perdu...

Time[0] est l'heure d'ouverture de la barre la plus récente (actuelle). Dès qu'une nouvelle barre arrive, elle change.

Tapez Time dans MetaEditor et appuyez sur F1 pour obtenir des détails.

 
ilunga:

Time[0] est l'heure d'ouverture de la barre la plus récente (actuelle). Dès qu'une nouvelle barre arrive, elle change.

Tapez Time dans MetaEditor et appuyez sur F1 pour obtenir des détails.

Je vais le lire maintenant ! Merci beaucoup !
 
DanLett:
Je vais le lire maintenant ! Merci beaucoup !

Alors n'oubliez pas de regarder iTime()
 
   datetime last_time;   // глобальная переменная
  int xBost_b;
  int xBost_s;
double hi=High[1];
double op=Open[1];
double cl=Close[1];
double lo=Low[1];
int Sum_xb;
int Sum_xs;
 
 if (last_time != Time[0])
   {
      // Ура, новый бар!
      last_time = Time[0];      // запоминаем новый бар
      if(Close[1]>Open[1]) 
xBost_b=(hi-cl)*10000;
Sum_xb=Sum_xb+xBost_b;<---------не плюсует,выдает такое же число как и xBost

      if(Close[1]<Open[1])
 xBost_s=(cl-lo)*10000; 
Sum_xs=Sum_xs+xBost_s;    
Comment("\n kolvo_b=",xBost_b,"\n Sum_xb=",Sum_xb,"\n kolvo_s=",xBost_s,"\n Sum_xs=",Sum_xs);

   }
comment faire pour qu'il vous donne un plus à chaque fois ?
 
DanLett:
comment faire pour que ça s'additionne à chaque fois ? ??
Lesvariables globales doivent être en dehors de toutes les fonctions. Envoyez les sommes là aussi. ou déclarez ces variables comme statiques
 
DanLett:
comment faire pour qu'il s'ajoute à chaque fois ? ??
Retirer last_time de start() et le déclarer statique.
 
Comment puis-je utiliser des barres synthétiques(https://www.mql5.com/ru/articles/1353) pour que la fonction dans l'EA ne fonctionne que sur les prix ouverts ? Sur les barres normales, cela se faisait par le temps d'ouverture de la barre actuelle, comme ceci if (Time[0] == prevtime4) return ;
prevtime4=Time[0] ; mais les barres synthétiques sont sans temps...en théorie vous pouvez écrire ici si le bid est le prix d'ouverture, mais je ne sais pas comment le faire.