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

 
forex2030:

Je ne comprends pas ce que cela va m'apporter ?

Peut-être une sorte d'énumération de jour à point et si dans la période jour = 6 ou 0 alors jour++ ;

Il n'y a aucun intérêt. Tous les graphiques sur le marché (de quelque nature que ce soit) sont réalisés sur la base du fait qu'il n'y a tout simplement pas de jours de repos.

 
Алексей Тарабанов:

Il n'y a aucun intérêt. Tous les graphiques sur le marché (n'importe quel marché) sont réalisés sur la base qu'il n'y a tout simplement pas de jours de repos.

Il est possible de passer d'un jour à l'autre, par exemple, si la dernière date est le 15 et que l'on connaît la date du 18, alors on retiendra +2 (c'est-à-dire 16 et 17 jours de congé).

 
forex2030:

Il est possible de passer d'un jour à l'autre, par exemple, si la dernière date est le 15 et que l'on connaît la date du 18, alors il faut retenir +2 (c'est-à-dire les week-ends 16 et 17).

Vous pouvez le faire si vous le voulez vraiment. Il n'y a aucun intérêt.

La tendance se poursuivra le 18. De 15 à 18, il y a une barre.

 
Алексей Тарабанов:

Vous pouvez le faire si vous le voulez vraiment. Il n'y a aucun intérêt.

En quoi est-ce inutile ?
J'ajouterai cette valeur à mes barres et j'obtiendrai 12+4=16 barres et la ligne sera à la bonne date à la fin.

 
forex2030:

Comment ça, ça ne sert à rien ?
J'ajouterai cette valeur à mes barres et j'obtiendrai 12+4=16 barres et la ligne s'arrêtera à la date souhaitée à la fin.

La ligne est suspendue dans l'air.

 
Алексей Тарабанов:

La ligne sera suspendue en l'air.

Si j'ajoute 16 mesures au premier point au lieu de 12, pourquoi reste-t-il en l'air ?

 
forex2030:

Si j'ajoute 16 mesures au premier point au lieu de 12 mesures, pourquoi resterait-il suspendu en l'air ?

Bonne nuit.

 

J'ai besoin de quelque chose comme ça, mais correctement encadré, c'est juste une idée.

int NumData(datetime data1,datetime data2){
    int num=0;
    for (int d=data1; d>=data2; d--)
    if(TimeDayOfWeek(d)==6 || TimeDayOfWeek(d)==0) num++;
return(num);}
 
Pourquoi ne pas prendre ce problème et le résoudre ? Les dates de début et de fin sont connues, nous pouvons compter le nombre total de jours qui les séparent. Puis comptez le nombre total de semaines entières. Chaque semaine compte cinq jours de travail et deux jours de congé - c'est facile. Les problèmes avec le reste (nous supposerons qu'il est au début), selon le premier jour de la semaine et sa durée, le reste peut ou non prendre le week-end. Nous devrions écrire un commutateur pour sept options pour chaque jour de la semaine et effectuer sept calculs en fonction du jour de la semaine du début et de la durée du reste. Regardez ensuite ce commutateur et vous verrez peut-être comment ces calculs peuvent être généralisés et simplifiés. Le fait est que quelque chose doit être fait.
 
Dmitry Fedoseev:
Et pourquoi ne pas résoudre ce problème ? Les dates de début et de fin étant connues, nous pouvons calculer le nombre total de jours qui les séparent. Puis comptez le nombre total de semaines entières. Chaque semaine compte cinq jours de travail et deux jours de congé - c'est facile. Les problèmes avec le reste (nous supposerons qu'il est au début), selon le premier jour de la semaine et sa durée, le reste peut ou non prendre le week-end. Nous devrions écrire un commutateur pour sept options pour chaque jour de la semaine et effectuer sept calculs en fonction du jour de la semaine du début et de la durée du reste. Regardez ensuite ce commutateur et vous verrez peut-être comment ces calculs peuvent être généralisés et simplifiés. Le fait est que quelque chose doit être fait.

compliqué, il y a un temps entre les dates en secondes (datetime) - c'est suffisant pour calculer le nombre de jours entiers dans lequel 24 heures, 60 minutes dans chaque heure et 60 secondes dans une minute.... google pour aider

Si nous parlons d'une manière tordue de compter, vous pouvez le faire de cette façon :

input datetime d_start = D'2020.01.01';
input datetime d_stop  = D'2020.02.01';
//+------------------------------------------------------------------+
void OnStart()
{
   MqlDateTime dts[2];
   TimeToStruct(d_start,dts[0]);
   TimeToStruct(d_stop,dts[1]);
   printf("Между датами %i дней",dts[1].day_of_year - dts[0].day_of_year);
}
//+------------------------------------------------------------------+

vous pouvez, comme vous le suggérez, compter chaque barre et savoir s'il y a eu un week-end entre la barre actuelle et la précédente.... en général ici, seule la possibilité de se compliquer la tâche est limitée par le désir ;)))