Как убрать время окончания выходных при вычитании (datetime) в MQL4

Как точно вычесть datetime-s, не включая выходные?

Пример:

datetime gapOpenTime  = 2015.01.01 00:00;
datetime gapCloseTime = 2015.12.19 00:00;

int      diff         = gapCloseTime - gapOpenTime;

Это diff также включает выходные дни (когда рынок закрыт)

Как удалить эти нежелательные времена?


person PraAnj    schedule 23.12.2015    source источник
comment
Привет, PraAnj, как вам предоставленное решение? StackOverflow поощряет пользователей вознаграждать хорошие идеи или решения с помощью UpVote — так что не стесняйтесь нажимать UpVote и Accept Checker — так работает StackOverflow. Хорошего дня!   -  person user3666197    schedule 15.11.2017


Ответы (1)


Можно использовать

datetime barTimes[]; 

ArrayCopySeries( barTimes, MODE_TIME, _Symbol, PERIOD_CURRENT ); // Time[] array was sorted in a descending order

int gapOpenSHIFT  = ArrayBsearch( barTimes, gapOpenTime,  WHOLE_ARRAY, 0, MODE_DESCEND );
int gapCloseSHIFT = ArrayBsearch( barTimes, gapCloseTime, WHOLE_ARRAY, 0, MODE_DESCEND );

int diff          = PeriodSeconds( PERIOD_CURRENT ) * ( gapOpenSHIFT - gapCloseSHIFT );
person user3666197    schedule 29.12.2015
comment
Не могли бы вы добавить примеры примеров ввода-вывода, чтобы улучшить ответ. - person PraAnj; 27.08.2018