Поиск времени открытия и закрытия сессии

 

Нужно из всех баров найти бары, соответствующие времени открытия и закрытия сессии. Может кто видел такую библиотечку, подскажите пожалуйста. 

 

Дык. Зачем тебе библиотека?

uchar hour_session_open=5;
uchar hour_session_close=9;

uint bars_open[];
uint bars_close[];
ArrayResize(bars_open,Bars);
ArrayResize(bars_close,Bars);
uint bars_open_counter;
uint bars_close_counter;

for(int i=0;i<Bars-20;i++)
{
if(TimeHour(Time[i])==hour_session_close && TimeMinute(Time[i])==0) {bars_close[bars_close_counter]=i;bars_close_counter++;}
if(TimeHour(Time[i])==hour_session_open && TimeMinute(Time[i])==0) {bars_open[bars_open_counter]=i;bars_open_counter++;}
}
 

Можно более изящным путём.

extern string session_open="11:00";
extern string session_close="19:00";


////////////////////////////////////////////////////////////////////////
datetime session_open_=StringToTime(session_open);
datetime session_close_=StringToTime(session_close);

int bars_open[];
int bars_close[];
ArrayResize(bars_open,iBars(Symbol(),PERIOD_D1));
ArrayResize(bars_close,iBars(Symbol(),PERIOD_D1));


int day_in_seconds=60*60*24;
for(int i=0;i<iBars(Symbol(),PERIOD_D1);i++)
{
bars_open[i]=iBarShift(Symbol(),0,session_open_,true);
bars_close[i]=iBarShift(Symbol(),0,session_close_,true);

session_open_-=day_in_seconds;
session_close_-=day_in_seconds;
}

 
 
Vasyl Nosal:

Можно более изящным путём.

datetime session_open=D'11:00'; // получится datetime session_open=D'[дата компиляции] 11:00'
По крайней мере для четверки это так
 
Vasyl Nosal:


Задача немного сложнее. Твой вариант не учитывает выходные. Без дыр в истории можно было бы тупо вычитать 86400 и сравнивать время.
 
Alexey Volchanskiy:
По крайней мере для четверки это так

Спасибо. Исправил.

 
Timur Gatin:
Задача немного сложнее. Твой вариант не учитывает выходные. Без дыр в истории можно было бы тупо вычитать 86400 и сравнивать время.
А ты знаешь что делает iBarShift? А в конце true/false?
 

Можешь ещё поизвращатся. После ФОР добавь 

if(!IsTradeAllowed(Symbol(),session_open_) && !IsTradeAllowed(Symbol(),session_close_)) continue;
 
Vasyl Nosal:


Сделай такой индиратор и открой конец 2014 года. Твои варианты не сработают.

 

 
Timur Gatin:

Сделай такой индиратор и открой конец 2014 года. Твои варианты не сработают.

 

Дык. Так может ты заготовку скинешь???
 
А чего его делать, копируешь полученные данные в буферы индикатора и все.
Причина обращения: