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

 

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

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

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

int copied=CopyRates(m_symbol,m_period,m_time+(kvoBarovWaitPosition*m_secondsbar),m_time,rates);
 
Андрей:

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

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

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

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

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

 
Андрей:

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

MT4/5?
 

mql5

 
Андрей:

mql5

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

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

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

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

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

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

   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);
 
Андрей:

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

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