Собственные символы: проблема с добавлением истории

 

Добрый день! Пробую добавить исторические данные для собственного символа. Опустив все подробности имею следующие:

Исходный код

Получаем данные с биржи, форматируем, записываем в структуру.

Шаг 1. Ограничил цикл до одной итерации. Пробую записать данные для 1-й свечи

Имеем лог для 2018.09.02 10:09 свечи.
Строка "1: " - данные, которые получены от брокера.
Строка "2: " - данные, которые записываются в структуру.

Видно, что данные совпадают, записались корректно.

Шаг 2. Записываю данные для 2-й свечи.
Код при этом меняется на "for(int i = 1;i < 2; i++) {" (149 строка)

Имеем лог для 2018.09.02 10:16 свечи.
Строки "1: "  и "2: " имеют аналогичный формат.

Видно, что данные для этой свечи (10:16) записались с несуществующими данными.
Open должен был быть "0.04047821" и т.д.

Подскажите понять, в чем дело и что делать?

 

Заходишь в настройки символа и выставляешь точность ,у тебя должна стоять 8 или 9 , а стоит наверное 4 .

Хотя может проблема в чём то другом .

Но видно что у тебя округляется .

 

Во первых тебе сюда https://www.mql5.com/ru/docs/basis/variables и сюда https://www.mql5.com/ru/docs/convert и сюда https://www.mql5.com/ru/docs/basis/types/casting .

Ты вообще переменной типа double присвоил строковое значение .

https://www.mql5.com/ru/docs/constants/structures/mqlrates .

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов...
 

Я вообще не пойму как оно у тебя работает .

Вот преобразование строки в тайм https://www.mql5.com/ru/docs/convert/stringtotime

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Ananich:

Я вообще не пойму как оно у тебя работает .

Вот преобразование строки в тайм https://www.mql5.com/ru/docs/convert/stringtotime

Благодарю за ответы. Учел все пожелания и нюансы.
В результате так:

Точность - 8.

В цена Open должно было записаться выделенное значение.

Обновленный код.

 

mrate[0].open = jv["result"][i]["o"].toDbl()  ,а у тебя toStr() .

и остальное по аналогии .

Я тебе же все ссылки на доки дал .

 
Vladimir Ananich:

mrate[0].open = jv["result"][i]["o"].toDbl()  ,а у тебя toStr() .

и остальное по аналогии .

Я тебе же все ссылки на доки дал .

Использовал ваш вариант, но помогло.
Почему-то начиная со второй свечи всем полям (OHLC) записываются Close первой свечи. Однако из результатов Print видно, что данные для каждой свечи есть и в коде переменная mrate переопределяется. По видимому все логично. Что я делаю не так, это такой баг MT5?

Результат записи для пяти свечей:

Обновленный код:

Причина обращения: