Existe-t-il une fonction intégrée ou un moyen élégant d'obtenir le nombre de jours du mois en cours en utilisant MQL4? Ou est-il possible de détecter le dernier lundi du mois en cours?Comment trouver le nombre de jours dans le mois en cours en utilisant MQL4?
1
A
Répondre
1
A1: Non, il n'y a pas de fonction intégrée pour cela.
A2: Oui, il existe plusieurs façons élégantes de résoudre ce problème. On pourrait ressembler à ceci:
int HowManyDaysInMONTH = { EMPTY,// stump
31, // Jan
28, // Feb + int LeapYear(const int aDate){...}
31, // Mar
30, // Aug
31, // May
30, // Jun
31, // Jul
31, // Aug
30, // Sep
31, // Oct
30, // Nov
31 // Dec
};
//-------------------------------------------------------------+
int LeapYear(const int aDateToTEST){
return (366 == TimeDayOfYear(StringToTime(StringFormat("%4d.12.31", TimeYear(aDateToTEST)))) ? 1
: 0
)
}
//-------------------------------------------------------------+
PrintFormat("This month has %d days",
HowManyDaysInMONTH[TimeMonth(aDateTODAY)]
);
A3: Alternativement, on peut mettre en oeuvre cette combinaison soit.
bool IsLastMondayOfMONTH(const int aDateTODAY){
return (TimeDayOfWeek(aDateTODAY) != 1 ? False
: TimeMonth(aDateTODAY) == TimeMONTH (aDateTODAY + 7) ? False
: True
);
}
2
ce que j'utilisé:
bool isLeapYear(const int _year){
if(_year%4 == 0){
if(_year%400 == 0)return true;
if(_year%100 > 0)return true;
}
return false;
}
int getDaysInMonth(MqlDateTime &mql){
if(mql.mon==2)
return 28+isLeapYear(mql.year);
return 31-((mql.mon-1)%7)%2;
}
//your function to get number of days:
MqlDateTime mql;
TimeToStruct(TimeCurrent(),mql);
int days = getDaysInMonth(mql); //result that you are looking for
grâce à une excellente réponse et pour la modifier! –