Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 410

 
Trader7777:
Еще такой вопрос, тестер пестрит ошибкой 138 (ERR_REQUOTE) что она значит?
Это значит, что в тестере реквот не бывает. А значит - ошибка в торговом приказе. Скорее всего пытаетесь рыночный открыть как отложенный.
 
artmedia70:
Это значит, что в тестере реквот не бывает. А значит - ошибка в торговом приказе. Скорее всего пытаетесь рыночный открыть как отложенный.

Нет, отложенных ордеров нет. Что такое реквота?
 
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.

 
yan720:

Добрый день! Появился вопрос по записи данных в файлы.

Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?

Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.

Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.

Если я не ошибаюсь, то в функции открытия файла должно быть только два варианта, у вас их три: "FILE_CSV|FILE_READ|FILE_WRITE"

У Вас нет функции закрывающей файл, соответственно данные не сохраняются

Ну и на конец можно прописать, чтобы "курсор" записи уходил в самый конец, при добавлении новой записи

 
yan720:

Добрый день! Появился вопрос по записи данных в файлы.

Подскажите, пожалуйста, почему в режиме FILE_READ|FILE_WRITE при попытке записи в файл происходит запись поверх старого файла, а не дописывание к нему?

Причём присходит отнюдь не открытие нового пустого файла и его заполнение (как в режиме FILE_WRITE), а именно запись поверх - то есть, если при последнем запуске советника произошло меньше событий, подлежащих записи, нежели при предпоследнем, то в конце файла будут висеть остатки записей от предпоследнего запуска.

Открытие файла и первая запись (приведено выше) производятся в init. В start рабочие записи в соответствии с событиями по очереди добавляются в файл. Закрытие файла происходит в deinit.


А перейти в конец файла для записи не пробовали?
 
Vinin:

А перейти в конец файла для записи не пробовали?

Хм-м... Логично... :) Спасибо.

А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?

 
yan720:

Хм-м... Логично... :) Спасибо.

А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?


FileSeek()
 
Vinin:

FileSeek()

Спасибо.
 
yan720:

Хм-м... Логично... :) Спасибо.

А как?.. В описании файловых функций языка я такого не увидел. Прочитать всё в нём имеющееся через while(!FileIsEnding(handle_log)) или есть более "прямой" способ?


Вот здорова... я конечно рад, что проблема стала у Вас решаться, но моё сообщение Вы почему то не заметили, где я сказал то же самое, чуть другими словами, и сразу сказал на недочёты, кроме закрытия файла, не сразу увидел где это у Вас происходит:)