Trader7777: Нет, отложенных ордеров нет. Что такое реквота?
Это когда цена во время попытки открыть рыночную позицию усвистала дальше разрешённого проскальзывания. В тестере тагого нету, значит имеет место попытка открыть позицию не по Бид или Аск, а по какой-то левой цене.
Добрый день! Появился вопрос по записи данных в файлы.
Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?
Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.
file_log = "expert_" + magic_number + "_log.csv";
handle_log = FileOpen(file_log, FILE_CSV|FILE_READ|FILE_WRITE, ',');
if(handle_log < 0) {
Alert("Ошибка при открытии файла ", file_log, "Возможно, файл занят другим приложением.");
PlaySound("alarm.wav");
}
else {
if(FileWrite(handle_log, "time", "ticket", "type", "openprice", "stoploss", "takeprofit", "lot", "closeprice", "effect_points", "деньги советника") < 0 || // это заголовки
FileWrite(handle_log, TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "Советник открыт с параметром delta=", delta) < 0) { // для отраж-я возмож. изм-я параметра при рестарте
Alert( "Ошибка записи в файл ", file_log, " ошибка-", GetLastError() );
PlaySound("alarm.wav");
}
}
Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.
Добрый день! Появился вопрос по записи данных в файлы.
Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?
Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.
Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.
Если я не ошибаюсь, то в функции открытия файла должно быть только два варианта, у вас их три: "FILE_CSV|FILE_READ|FILE_WRITE"
У Вас нет функции закрывающей файл, соответственно данные не сохраняются
Ну и на конец можно прописать, чтобы "курсор" записи уходил в самый конец, при добавлении новой записи
Добрый день! Появился вопрос по записи данных в файлы.
Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?
Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.
Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.
А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?
А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?
А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?
Вот здорова... я конечно рад, что проблема стала у Вас решаться, но моё сообщение Вы почему то не заметили, где я сказал то же самое, чуть другими словами, и сразу сказал на недочёты, кроме закрытия файла, не сразу увидел где это у Вас происходит:)
Еще такой вопрос, тестер пестрит ошибкой 138 (ERR_REQUOTE) что она значит?
Это значит, что в тестере реквот не бывает. А значит - ошибка в торговом приказе. Скорее всего пытаетесь рыночный открыть как отложенный.
Нет, отложенных ордеров нет. Что такое реквота?
Добрый день! Появился вопрос по записи данных в файлы.
Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?
Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.
Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.
Добрый день! Появился вопрос по записи данных в файлы.
Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?
Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.
Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.
Если я не ошибаюсь, то в функции открытия файла должно быть только два варианта, у вас их три: "FILE_CSV|FILE_READ|FILE_WRITE"
У Вас нет функции закрывающей файл, соответственно данные не сохраняются
Ну и на конец можно прописать, чтобы "курсор" записи уходил в самый конец, при добавлении новой записи
Добрый день! Появился вопрос по записи данных в файлы.
Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?
Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.
Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.
А перейти в конец файла для записи не пробовали?
А перейти в конец файла для записи не пробовали?
Хм-м... Логично... :) Спасибо.
А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?
Хм-м... Логично... :) Спасибо.
А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?
FileSeek()
FileSeek()
Спасибо.
Хм-м... Логично... :) Спасибо.
А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?
Вот здорова... я конечно рад, что проблема стала у Вас решаться, но моё сообщение Вы почему то не заметили, где я сказал то же самое, чуть другими словами, и сразу сказал на недочёты, кроме закрытия файла, не сразу увидел где это у Вас происходит:)