Barres de comptage, y compris les week-ends - page 4

 

Merci beaucoup à tous pour votre aide et votre participation ! !!

Les versions 1,2 et 4 sont plus correctes, mais comportent des erreurs, quelque part elles sont correctes (jour après jour) et quelque part elles manquent 2-3 jours.

La version 3 indique le nombre de barres de la période qui ont déjà été calculées.

//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 1 рассчитывает бары за период только выходных дней  12бар=3вых  | 
//+------------------------------------------------------------------------+ 
int NumData1(datetime d_start,datetime d_stop){
   const int day_in_sec = 24 * 60 * 60;
   datetime d_corect1 = d_start - d_start % day_in_sec;
   datetime d_corect2 = d_stop - d_stop % day_in_sec;
   int result = (int)((d_corect2 - d_corect1) / day_in_sec);
   datetime t_arr[];
   int allbarD1 = CopyTime(_Symbol, PERIOD_D1, d_start, d_stop, t_arr);
   if(allbarD1 < 0) return(0);
return(result-allbarD1);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 2 рассчитывает бары за период только рабочих дней  12бар=9раб   | 
//+------------------------------------------------------------------------+ 
int NumData2(datetime d_start,datetime d_stop){
   int bar=Bars(Symbol(),0,d_start,d_stop);
return(bar);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 3 рассчитывает бары за период                      12бар=12бар  | 
//+------------------------------------------------------------------------+ 
int NumData3(datetime d_start,datetime d_stop){
   MqlDateTime dts[2];
   TimeToStruct(d_start,dts[0]);
   TimeToStruct(d_stop,dts[1]);
return(dts[1].day_of_year - dts[0].day_of_year);}
//+------------------------------------------------------------------------+ 
//| ВЕРСИЯ 4 рассчитывает бары за период только рабочих дней  12бар=9раб   | 
//+------------------------------------------------------------------------+ 
int NumData4(datetime startDate,datetime endDate){
   int d=int((endDate-startDate)/86400);   
   int m[7,7]={
   {0, 0,1,2,3,4,5}, // воскр
   {0, 1,2,3,4,5,5}, // понед
   {0, 1,2,3,4,4,4}, // вторн
   {0, 1,2,3,3,3,4}, // среда
   {0, 1,2,2,2,3,4}, // четв
   {0, 1,1,1,2,3,4}, // пятн
   {0, 0,0,1,2,3,4}  // субб
   };
return((d/7)*5+m[(int)TimeDayOfWeek(startDate)][d%7]);}
 

Bien qu'il compte 1, 2 et 4 correctement.
Je n'ai pas pris en compte le fait que le deuxième point se déplace ensuite vers les barres reçues +n
et il y a aussi les week-ends, ce qui fait que je suis à 2-3 barres près au bon endroit.

Est-il possible d'identifier les barres visibles?
C'est-à-dire que nous avons le premier prix et ajoutons les barres visibles sur le graphique
. Sinon, nous avons le premier point le 5 du mois + 12 barres = le 17 du mois + 4 jours de décalage = le 21 du mois et il nous manque quelques jours de plus pour atteindre le point final.

 
forex2030:

Est-il possible d'identifier exactement les barres visibles?

Oui, pas de problème. Et cette réponse particulière était la toute première du fil de discussion. Simple, rapide, élégant.

Подсчёт баров с учётом выходных
Подсчёт баров с учётом выходных
  • 2020.04.25
  • www.mql5.com
Есть две точки t1 и t2, между ними 25 баров, как узнать сколько было выходных между точками например на D1 чтобы потом их прибавить к нужным барам...
 

Y compris les week-ends ?

Écrire 12 mois, c'est-à-dire 12 variables avec le nombre de jours qu'elles contiennent, le tout dans un tableau.

dans un tableau d'années, avec le nombre de jours en février, ou calculer une année avec un saut en février.

dans une boucle :

additionner les jours complets et restants des mois de début et de fin de la période requise

 
Comment les vacances s'échappent-elles ? Ou bien ne comptent-ils pas comme des vacances ?)
 
Aleksey Nikolayev:
Comment les vacances s'échappent-elles ? Ou bien ne comptent-ils pas comme des vacances ?)
calcule le nombre total de jours et soustrait le nombre de jours de l'historique du devis.
 
Renat Akhtyamov:
Il calculera le nombre total de jours et soustraira le nombre de jours de l'historique des devis.

Vous pouvez le faire si vous êtes sûr qu'il n'y a pas d'autres raisons de manquer le jour.

Il est également possible de ne manquer qu'une partie de la journée, ce qui peut également avoir un impact négatif sur les calculs.

 
Aleksey Nikolayev:

Il est également possible de ne sauter qu'une partie de la journée, ce qui peut également avoir un effet négatif sur les calculs.

Dans ce cas, la barre quotidienne sera toujours présente sur le graphique.

 
Aleksey Nikolayev:

Vous pouvez le faire si vous êtes sûr qu'il n'y a pas d'autres raisons de manquer le jour.

Il est également possible de ne manquer qu'une partie de la journée, ce qui peut également avoir un impact négatif sur les calculs.

Vous devez utiliser le TF quotidien et rien d'autre.
 
Igor Makanu:

Dans ce cas, la barre quotidienne sera toujours présente sur le graphique.

Elle le fera, bien sûr. Mais, par exemple, son high-low se distinguera des autres et il y aura toujours une question - s'agit-il d'un jour férié ou de bars à la minute ? La manière d'automatiser ces contrôles n'est pas très claire.

Raison: