// считаем что файл уже есть на диске int handle=FileOpen("balance.txt", FILE_CSV|FILE_READ|FILE_WRITE, '\t'); // переходим в конц файла , иначе все затрем новой записью FileSeek(handle, 0, SEEK_END); // пишем в конец - то есть добавляем FileWrite(handle, AccountBalance());
Хочу записывать эквити и баланс в CSV файл не чаще чем раз в 60 секунд. Написала экспертик, но почему-то с каждым FileWrite стирается предыдущая запись. Посмотрите пожалуйста. Что не так?
В вашем советнике (если я конечно не ошибаюсь что это советник) после 60 секунд от запуска ф-ции init() запись в файл будет
производится на каждом тике.
В вашем советнике (если я конечно не ошибаюсь что это советник) после 60 секунд от запуска ф-ции init() запись в файл будет
производится на каждом тике.
Не будет, т.к. в случае успешной записи я делаю reset:
if(res>0)timeprev=timecur;
Вот рабочий код, если кому надо (в папку experts и ставить наверное лучше на евру, т.к. тики чаще всех):
extern int write_frequency = 60; //how often to write
datetime timeprev;
string filename;
int init()
{
timeprev = TimeCurrent();
filename = "log_eq_bal.csv";
int handle=FileOpen(filename, FILE_CSV|FILE_READ|FILE_WRITE, ',');
string bal=DoubleToStr(AccountBalance(),2), eq=DoubleToStr(AccountEquity(),2);
if(handle>0)
{
if(FileSize(handle)==0) FileWrite(handle,"Time","Equity","Balance"); //writing header
FileSeek(handle, 0, SEEK_END);
FileWrite(handle,TimeToStr(TimeCurrent()),eq,bal); //writing starting values
FileClose(handle);
}
return(0);
}
int start()
{
datetime timecur = TimeCurrent();
if(timecur-timeprev<write_frequency)return(0);
int handle=FileOpen(filename, FILE_CSV|FILE_READ|FILE_WRITE, ','), res=-1;
string bal=DoubleToStr(AccountBalance(),2), eq=DoubleToStr(AccountEquity(),2);
if(handle>0)
{
FileSeek(handle, 0, SEEK_END);
res = FileWrite(handle,TimeToStr(timecur),eq,bal);
FileClose(handle);
if(res>0)timeprev=timecur;
}
return(0);
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочу записывать эквити и баланс в CSV файл не чаще чем раз в 60 секунд. Написала экспертик, но почему-то с каждым FileWrite стирается предыдущая запись. Посмотрите пожалуйста. Что не так?