Оператор "==" используется только в операциях сравнения.
Для присвоения значений используйте оператор "="
if(canread==true) { ... }принт и убедитесь что файл читается правильно
Доброго всем времени суток. Спасибо за ответы, не ожидал такой отзывчивости.:)
Roger: Я не совсем понял что вы имели ввиду, потому что if(time<TimeCurrent()-100), то time точно не может быть>TimeCurrent(). И данное условие никогда не будет верно, а следовательно и
canread всегда будет иметь значение false. Если я не так понял поправьте....
Ina01: Корректность прочтения файла я проверял другим, более громоздким способом - эксперт создавал ещё один текстовый файл, в который записывал (при canread==true) значение даты и времени, которое прочитывал в другом файле. Файл читается правильно, значение даты и времени верное, что говорит о том что файл с приходом нового тика каждый раз читается с новой строки.
Вы это имели ввиду? Если нет поправьте.. И ещё момент, файле новости от 1999года. Если время в тесте больше (пример: с 2007.07.01 по 2008.01.24 ) то в создаваемый текстовый файл перепишутся
все значения даты и времени только до 2007.07.01, а дальше только точка с запятой, хотя в файле-календаре история до 2008года...
Похоже тут дежурные грабли срабатывают: time - локальная перемення, она инициализируется нулём при каждом запуске start. Если блок чтения файла был пропущен, она нулём и остаётся. То есть читаться файл должен не каждый тик, а через тик :).
Нужно описать time как static или глобально.
Roger: Я не совсем понял что вы имели ввиду, потому что if(time<TimeCurrent()-100), то time точно не может быть>TimeCurrent(). И данное условие никогда не будет верно, а следовательно и
canread всегда будет иметь значение false. Если я не так понял поправьте....
Поправляю. Вы задаете это время загодя в своем файле, значит сразу оно всегда больше текущего. Т.е. эта часть начинает действовать сразу. Вторая часть начинает действовать, когда разница между заданным и текущим меньше 100 секунд. После наступления события вторая часть действует, а первая прекратилась.
Можете посмотреть, как эта проблема решена здесь http://forum.alpari.ru/thread38326.html. Может Вам подойдет такое решение.
Еще раз вниательно посмотрел код. Ты объявляешь переменную time в теле start. Это неправильно.
Каждый второй тик она обнуляется, что приводит к
if(time<TimeCurrent()-100) canread=true;
А в остальном все нормально, кроме того,что файл держать открытым нельзя. Делай открытие и закрытие в теле start.
Еще раз вниательно посмотрел код. Ты объявляешь переменную time в теле start. Это неправильно.
Каждый второй тик она обнуляется, что приводит к
if(time<TimeCurrent()-100) canread=true;
А в остальном все нормально, кроме того,что файл держать открытым нельзя. Делай открытие и закрытие в теле start.
Roger, Вам тоже полезно прочитать мой предыдущий пост. Там упоминается о существовании модификатора static.
Подумайте также о том, что если файл каждый раз переоткрывать, всё время будет читаться одна и та же запись.
В общем будьте внимательнее и думайте, прежде чем давать категоричные рекомендации.
Можно статик, а проще вынести объявление за рамки модуля. Имел большие грабли с незакрытыми файлами, теперь не советую держать файл, проще пропарсить и найти подходящую строку.
А Ваш ответ действительно пропустил, покорнейше извиняюсь.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте,уважаемые зубры программирования, и все кто так или иначе..... Нужна помощь так как мозг уже отказывается что либо понимать.. Сам я новичёк в программировании-мой опыт ограничивается парочкой скриптов и экспертом, на котором я и застрял. Новостной эксперт, идея проста-есть новостной календарь в виде файла .txt, эксперт прочитывает первую строку определяет
время выхода новости, определяет диапазон цен последних нескольких баров перед выходом новости, расставляет ордера по обе стороны от диапазона. Всё просто. Проблема в следующем: Для того
чтобы прочтение файла было своевременным(следующее прочтение после выхода новости), поставил переключатель bool canread==true; после прочтения принимает значение false (как это ни странно))))))). Условием для того чтобы canread снова ==true; является time(время выхода новости)<TimeCurrent()-100.
По моей логике получается следующее. После того как переключатель получил значение false текстовый файл по приходу нового тика не читается, ждёт true. Условие для того чтобы false стало true
происходит один раз и на последующих тиках прочтение текстового файла не происходит пока условие опять не станет ложным. Проблема в том что, условие if(Time<TimeCurrent()-100) на каждом
тике почему то верно и canread постоянно становится true. Поможите пожалуйста... Мозг ужо кипит....