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

 
Dmitry Fedoseev:

Декабрь 2014 ведет со счетом 3:0


Файлы:
2.mq4  6 kb
 

Вот ещё с exect time

Файлы:
 
Vasyl Nosal:

Вот ещё с exect time

С фолс сам влево ищет. Если влево это конец дня предыдущего, то не будет гистограммы.

тебе отсалось только придумать что делать в этом случае. 

 
Timur Gatin:

Декабрь 2014 ведет со счетом 3:0


Что это?
 

Задача простая на первый взгляд. Проблемы возникают при обработке дыр в истории. Например, нельзя объединять пятницу и понедельник. Так же надо учитывать что сессия может открыться позже или закрыться раньше. Просто добавить условие if(выходные) не правильно, потому что может быть праздник или просто дыра в истории.

Можно выделить 4 случая:

- все попадает идеально на бары (открытие и закрытие) 

- все попадает на выходные

- закрытие не попадает на бар (выхоные, праздники) 

- открытие не попадает на бар (выхоные, праздники) 

Так же надо учитывать, что открытие должно быть меньше закрытия, без синхронизации в зависимисти от введенного времени они будут "меняться местами".

На скринах которые я привожу конец 2014 года. Золотистые линии - это разрыв в истории (выходные/праздники).

24 декабря последний бар в 19 часов.

25 декабря праздник.

26 декабря первый бар в  9 часов.

 
Timur Gatin:

Задача простая на первый взгляд. Проблемы возникают при обработке дыр в истории. Например, нельзя объединять пятницу и понедельник. Так же надо учитывать что сессия может открыться позже или закрыться раньше. Просто добавить условие if(выходные) не правильно, потому что может быть праздник или просто дыра в истории.

Можно выделить 4 случая:

- все попадает идеально на бары (открытие и закрытие) 

- все попадает на выходные

- закрытие не попадает на бар (выхоные, праздники) 

- открытие не попадает на бар (выхоные, праздники) 

Так же надо учитывать, что открытие должно быть меньше закрытия, без синхронизации в зависимисти от введенного времени они будут "меняться местами".

На скринах которые я привожу конец 2014 года. Золотистые линии - это разрыв в истории (выходные/праздники).

24 декабря последний бар в 19 часов.

25 декабря праздник.

26 декабря первый бар в  9 часов.

Открытие может быть больше закрытия  (с вечера до утра) и меняться они не должны при этом.

Если все попадают на выходные (кто все?), то зачем вообще об этом говорить?

Можно ли объединять пятницу и понедельник - это еще под вопросом. 

У всех задач в основном только одна сложность - отсутствие их формулировок. 

 
Timur Gatin:

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

Не знаю точно как вы это хотите использовать, но может такой вариант натолкнет на какие мысли
//+------------------------------------------------------------------+
//|                                                       тест 2.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

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

datetime arr[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   //datetime session_open_=StringToTime(session_open);
   //datetime session_close_=StringToTime(session_close);

   int ty= Year(); // год
   int tm=Month(); // месяц
   int td=12; // день

   datetime session_open_=StringToTime((string)ty+"."+(string)tm+"."+(string)td+" "+session_open);
   datetime session_close_=StringToTime((string)ty+"."+(string)tm+"."+(string)td+" "+session_close);
//ArrayResize(arr,100);
//---
   int size=CopyTime(_Symbol,PERIOD_H1,session_open_,session_close_,arr);
   
   Print("size = ",size);
   Print("seze arr = ",ArraySize(arr));
  }
//+------------------------------------------------------------------+
 
Можно сделать так. Ввести идентификатор сессии. Для каждого бара, кроме попадания его в сессию, используя его время, вычислять время начала сессии (это и будет идентификатором сессии). Таким образом можно отделить сессии при их слиянии из-за отсутствия баров. Надо будет делать проверки не есть/нет сессии, а по несовпадению значения идентификатора.
 
Dmitry Fedoseev:

Открытие может быть больше закрытия  (с вечера до утра) и меняться они не должны при этом.

Если все попадают на выходные (кто все?), то зачем вообще об этом говорить?

Можно ли объединять пятницу и понедельник - это еще под вопросом. 

У всех задач в основном только одна сложность - отсутствие их формулировок. 

Я имею в виду время в datetime.

Время закрытия и открытия попадают на выходные. Просто расписал все варианты, которые вижу.

Думаю нельзя, сессия начавшаяся в пятницу должна заканчиваться в субботу. А так как в субботу баров нет, то в пятницу.

 
Timur Gatin:

Думаю нельзя, сессия начавшаяся в пятницу должна заканчиваться в субботу. А так как в субботу баров нет, то в пятницу.

Только узнаем об этом в понедельник. Нарисовать конец можно и нужно на пятничном баре, но только сдеалть это сможем в понедельник