Скачать MetaTrader 5

Время будущего N-ного бара

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сотни статей помогут создать торгового робота. Заходи и изучай!
Андрей
492
Андрей 2015.10.18 08:50 

Добрый день! Возникла такая сложность: как получить время будущего N-ного бара. ?

По условиям открытия действие позиции истекает через 100 баров, но бывают же и выходные которые не должны учитываться.

Т.е. конструкция ниже попадает(может попасть) на выходной день и соответственно  int countR=ArraySize(rates);  countR будет меньше kvoBarovWaitPosition.

int copied=CopyRates(m_symbol,m_period,m_time+(kvoBarovWaitPosition*m_secondsbar),m_time,rates);
Alexey Kozitsyn
6372
Alexey Kozitsyn 2015.10.18 09:14  
Андрей:

Добрый день! Возникла такая сложность: как получить время будущего N-ного бара. ?

По условиям открытия действие позиции истекает через 100 баров, но бывают же и выходные которые не должны учитываться.

Т.е. конструкция ниже попадает(может попасть) на выходной день и соответственно  int countR=ArraySize(rates);  countR будет меньше kvoBarovWaitPosition.

Здравствуйте. Можно решить задачу иначе. После открытия позиции делать инкремент счетчика с образованием нового бара. Как только счетчик достигнет 100 - закрывать позицию.
Alexey Kozitsyn
6372
Alexey Kozitsyn 2015.10.18 09:21  
Либо можно поступить иначе. На каждом новом баре после открытия позиции запрашивать цену открытия сотой свечи в истории. И если время открытия этой свечи >= времени открытия позиции - закрываем позицию. Правда, в этом случае будет немного не точно. Т.е. будет запаздывать на одну свечу.
Андрей
492
Андрей 2015.10.18 09:25  

все-таки   хочется именно время будущего бара получить чтобы при открытии позиции указать дату истечения и забыть, а не ловить закрывать не закрывать....

Alexey Kozitsyn
6372
Alexey Kozitsyn 2015.10.18 09:29  
Андрей:

все-таки   хочется именно время будущего бара получить чтобы при открытии позиции указать дату истечения и забыть, а не ловить закрывать не закрывать....

MT4/5?
Андрей
492
Андрей 2015.10.18 09:31  

mql5

Alexey Kozitsyn
6372
Alexey Kozitsyn 2015.10.18 09:38  
Андрей:

mql5

Раньше (билд 1010) были проблемы с датой экспирации (правда для отложенных ордеров, не на сервере MQ), сейчас все в порядке?
Boris
3901
Boris 2015.10.18 09:43  
Андрей:

все-таки   хочется именно время будущего бара получить чтобы при открытии позиции указать дату истечения и забыть, а не ловить закрывать не закрывать....

Добавьте ещё одно условие, что, если до последнего бара пятницы остаётся меньше 100 бар при открытии позиции, прибавить к дате истечения 2 дня.
Alexey Kozitsyn
6372
Alexey Kozitsyn 2015.10.18 09:45  
Андрей:

все-таки   хочется именно время будущего бара получить чтобы при открытии позиции указать дату истечения и забыть, а не ловить закрывать не закрывать....

Время точно будет указать крайне проблематично, т.к. день не содержит в себе всегда постоянное количество свечей. Тем более, как Вы сказали, выходные, праздники.
Андрей
492
Андрей 2015.10.18 09:46  

до меня по моему дошло как решить, спасибо за советы!

   datetime tmp_time=m_time;
   int stepBar=0;
   while(stepBar<m_waitbars)
     {
      tmp_time=tmp_time+m_secondsbar;
      MqlDateTime stm;
      TimeToStruct(tmp_time,stm);
      if(stm.day_of_week!=0 && stm.day_of_week!=6)
        {
         stepBar++;
        }
     }
 //int copied=CopyRates(m_symbol,m_period,m_time+(kvoBarovWaitPosition*m_secondsbar),m_time,rates);
   int copied=CopyRates(m_symbol,m_period,tmp_time,m_time,rates);
Alexander Puzanov
29606
Alexander Puzanov 2015.10.18 10:12  
Андрей:

до меня по моему дошло как решить, спасибо за советы!

А кроме выходных бывают праздники. А у некоторых брокеров неделя начинается за неск часов до понедельника, т.е. будут пропущенные бары
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий