Собираюсь читать отчеты СОТ и создавать файлы на их основе(пока на MQL4)
Не совсем понятен алгоритм чтения файла. Нужно помещать чтение в цикл, то есть каждый раз чтение начинается с новой строки?
Или зацикливать не обязательно?
Прикрепленному файлу сделал расширение txt, csv не прикрепляется.
оно тебе надо? )) Данные выходят раз в неделю, и те не актуальные!!! плюс ко всему они практически не меняются со временем - посмотрел и забыл
Надо посмотреть кое-что. Почему не актуальные?
Они выходят пятничные - в следующий вторник ))
дату посмотри в отчете ))
Они выходят пятничные - в следующий вторник ))
csv читается кусочками: либо до разделителя (здесь запятая), либо до конца строки.
Разделитель или конец строки в считанную строку не попадают.
Окончание строки можно понять по FileIsLineEnding(...).
Т.е. наверно нужен еще один встроенный цикл для разбора строк.
зы В файле есть поля в кавычках, а внутри - запятые. Эти запятые (наверно) будут восприниматься как разделители, т.е. их нужно будет правильно обрабатывать: искать парную кавычку, и объединять строки в одно поле.
csv читается кусочками: либо до разделителя (здесь запятая), либо до конца строки.
Разделитель или конец строки в считанную строку не попадают.
Окончание строки можно понять по FileIsLineEnding(...).
Т.е. наверно нужен еще один встроенный цикл для разбора строк.
Понятно. Буду дальше думать. Они в конце есть вроде только, эти данные мне не нужны.
Мне нужен открытый интерес, шорт, лонг.
Нужно считать эти данные и перейти на другую строку. Только пока не разобрался, как сделать)
Я думаю, в данном случае лучше открыть файл как текстовый, читать целиком строки, и разбирать их на поля уже самому.
Вот на С++ когда-то делал:
Сделал файл еще меньше. Данные в кавычках вообще убрал. Скрипт переделал:
void OnStart() { int Handle; int shet; datetime Dat_DtTm; string File_Name="FinFutYY.csv",Text; Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,",");// открываем файл if(Handle<0) // Failure when opening a file { if(GetLastError()==4103) Alert("There is no file named ",File_Name); else Alert("Error when opening a file ",File_Name); PlaySound("Bzrrr.wav"); return; } while(FileIsEnding(Handle)==false) { Dat_DtTm =FileReadDatetime(Handle);// строка даты Text =FileReadString(Handle);// строка значения Print("Dat_DtTm=",Dat_DtTm,"Text=",Text); if(FileIsEnding(Handle)==true){ Print("Конец отсчета=");} if(FileIsLineEnding(Handle)){ Print("Конец строки=");} } }
Читает вроде все строки. Только не все значения выходят в принтах, одно пропускается, другое выводится и так вся строка. Даты тоже непонятные выходят, местами принтуются, которых нет в файле)
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Собираюсь читать отчеты СОТ и создавать файлы на их основе(пока на MQL4)
Не совсем понятен алгоритм чтения файла. Нужно помещать чтение в цикл, то есть каждый раз чтение начинается с новой строки?
Или зацикливать не обязательно?
Прикрепленному файлу сделал расширение txt, csv не прикрепляется.