Приветствую господа трейдеры. Ломаю голову уже не один час но так и не могу понять в чём ошибка при загрузке данных из файла КСВ с разделителем точка запятой?
Собственно функция :
Как из ней видно она читает файл в котором есть три столбца разделённых точка с запятой. Данные в файле есть и упорядочены. То есть в файле три одинаковых столбца данных. Дата, ОИ и Дельта. Однако при считывании файла данные из среднего столбца постоянно нулевые. То есть читается только первый столбец и последний. Сколько бы не ломал голову никак не могу понять что не так? Помогите, вроде и код простенький и предельно понятный но факт. НЕ РАБОТАЕТ!!! Может я чего то не знаю? Заранее благодарю!!!!во первых - победите все предупреждения компилятора.. :-) ";" и ';' - сильно разные вещи
и ещё перед StringToDouble неплохо заменять в строке запятые на точки , а пробелы удалять.
во первых - победите все предупреждения компилятора.. :-) ";" и ';' - сильно разные вещи
и ещё перед StringToDouble неплохо заменять в строке запятые на точки , а пробелы удалять.
Спасибо за ответ но он ни к чему не привёл увы.
Во первых я компелиру советники в режиме strict, надеюсь Вы в курсе что это такое и ни одного предупреждения не говоря уж про ошибку нет,
Во вторых файл у меня выглядит примерно вот так.
Где как Вы видите идёт дата, которая читается прекрасно, потому как она записана другим советником, ОИ имеет сугубо положительное значение ну а дельта она и в африке дельта. То есть когда два столбца было всё читалось без проблем, стоило добавить ещё один и внутренний столбец просто перестал читаться.
Продолжаю ожидать помощи. Спасибо!
а третий - это не 2-ой?
потом делаем третий, он так же через один
помню было такое, тоже плюхался...
Проблема сводится к не исполнению условия когда pos=1, то есть второй столбец!!!
Как то странно, ты конвертишь полную строку во время, целое и дабл.
string str=FileReadString(h); // это целая строка из трех записей.
У тебя первые две записи фиксированные. Может лучше читать с позиции по позицию и только потом конвертить.
Как то странно, ты конвертишь полную строку во время, целое и дабл.
У тебя первые две записи фиксированные. Может лучше читать с позиции по позицию и только потом конвертить.
Это такой способ инициализации массива, когда не посредственно перед записью в ячейку она предварительно обнуляется. НО Вы оказались абсалютно правы, я забыл что он эти строчки выполняет перед каждым считыванием. Вот я лох. Спасибо большое за подсказку. Правильнее будет вот так
if (pos==1)DATA_TMP[line].oi=0.0; if (pos==2)DATA_TMP[line].dl=0.0;
Как говорят в наших кругах "Благодарствую серый ёж " :-)
Попробуйте для работы с csv файлами использовать класс CSV fast.mqh , который можно взять тут - этот класс я использую постоянно и очень доволен!
Там всё описано на русском языке, в моей статье есть примеры по использованию - всё продумано для применения в МО.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую господа трейдеры. Ломаю голову уже не один час но так и не могу понять в чём ошибка при загрузке данных из файла КСВ с разделителем точка запятой?
Собственно функция :
Как из ней видно она читает файл в котором есть три столбца разделённых точка с запятой. Данные в файле есть и упорядочены. То есть в файле три одинаковых столбца данных. Дата, ОИ и Дельта. Однако при считывании файла данные из среднего столбца постоянно нулевые. То есть читается только первый столбец и последний. Сколько бы не ломал голову никак не могу понять что не так? Помогите, вроде и код простенький и предельно понятный но факт. НЕ РАБОТАЕТ!!! Может я чего то не знаю? Заранее благодарю!!!!