Получение данных по последним 3 барам - страница 2

 
Fresto:
Я понял, что вы берете не последний бар, а предпоследний 
***

Да, я копирую от бара с индексом "1". Это сделано специально: "... Работает только в момент рождения нового бара...." Но кто Вам мешает получать данные с бара с индексом "0"?
Fresto:
***

P.s. например, я должен изменить SL в зависимости от бара. Т.е. Я получаю данные за предыдущий закрывшийся бар, изменяю SL и он изменится только на следующем баре. В итоге у меня получается всегда промежуточный бар.
Что Вам мешает получать данные с бара с индексом "0"? Или вообще с любого бара? Просто измените запрос на получение серий.
 
Fresto:

И вот тогда у нас по бару одно и то же значение у close, open, high, low. 


Вы вообще понимаете как формируется бар? В момент рождения у бара будут ВСЕ четыре параметра OHLC РАВНЫ между собой. С каждым новым тиком начинают появляться различия - будут меняться High, Low и Close.
 
Vladimir Karputov:

Вы вообще понимаете как формируется бар? В момент рождения у бара будут ВСЕ четыре параметра OHLC РАВНЫ между собой. С каждым новым тиком начинают появляться различия - будут меняться High, Low и Close.

Я вас понял, это я знаю. Просто тогда возможно вопрос в выставление ордера на изменение позиции. Она выполняется только на следующем баре. И поэтому появляется этот промежуточный бар.
 
Fresto:

Я вас понял, это я знаю. Просто тогда возможно вопрос в выставление ордера на изменение позиции. Она выполняется только на следующем баре. И поэтому появляется этот промежуточный бар.

Кто мешает проверять возможность модифицикации позицию на каждом тике? Какой промежуточный бар? Пожалуйста пишите ОЧЕНЬ подробно, вставляйте скриншоты, указывайте время события - Вы или явно что-то путаете или Вы никак по перейдёте на терминологию MQL5. Код должен быть полным и воспроизводимым.
 
Vladimir Karputov:

Кто мешает проверять возможность модифицикации позицию на каждом тике? Какой промежуточный бар? Пожалуйста пишите ОЧЕНЬ подробно, вставляйте скриншоты, указывайте время события - Вы или явно что-то путаете или Вы никак по перейдёте на терминологию MQL5. Код должен быть полным и воспроизводимым.

Я вас понял, скоро пришлю все данные по данному вопросу.
 
Примерно это выглядит так. Я проверяю условие на предыдущем завершенном баре, изменяю sl, и он изменяется только на следующем баре. Как видно на скриншоте, разница между изменениями 1 бар. Можно ли как-нибудь, чтобы после закрытия бара менять sl уже на следующем баре? 
if(Buy_opened)
   {
      m_position.Select(_Symbol);
      if(mrate[1].close > mrate[1].open)
      {
         stloss = NormalizePrice(_Symbol,m_position.StopLoss() + 70*_Point);
      }
      else
      {
         stloss = NormalizePrice(_Symbol,m_position.StopLoss() - 30*_Point);
      }
      mytrade.PositionModify(_Symbol,stloss,0);
   }


Тут скриншот из TsLab. Я пытаюсь сделать, чтобы было аналогично. Там на следующем баре уже изменено SL.
 
Fresto:
***Я проверяю условие на предыдущем завершенном баре, изменяю sl, и он изменяется только на следующем баре.***
С чего Вы взяли, что после модификации позиции изменение наступит только на следующем баре? :) Если не проясним этот момент, дальше говорить бессмысленно.
 

Вы опишите, что именно Вы хотите:

  1. М‌одифицировать позицию (менять Stop Loss) ТОЛЬКО В МОМЕНТ ПОЯВЛЕНИЯ НОВОГО БАРА?
  2. М‌одифицировать позицию (менять Stop Loss) ВНУТРИ БАРА?

 
Vladimir Karputov:
С чего Вы взяли, что после модификации позиции изменение наступит только на следующем баре? :) Если не проясним этот момент, дальше говорить бессмысленно.

Моя ошибка. Программа меняет его сразу, это у меня отрисовка SL была написана до места изменения Sl и поэтому только на следующем баре у нас выходило такое. Поменял местами строчки кода, теперь всё правильно. Снова мой недочет. Спасибо за ответ :)
Причина обращения: