tmp1204:
Всем доброго времени.
Подскажите, почему во время тестерного прогона (без оптимизации) стандартные функции не пишут данные в файл (без тестера все работает)?
Почему Вы решили, что данные в файл не пишутся?
Лучше правильно вставлять код, это делает его более читаемым.
Не создается файл. Он должен создаваться и заполняться при первом тике. "Не в тестере" все работает.
void PrintToFile(string text) { //-- Добавляем дату время к тексту лога text=TimeToString(TimeCurrent()/*TimeLocal()*/,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" "+text; Print(text); //--END Добавляем дату время к тексту лога //-- //static string mq5Path=StringSubstr(__PATH__,0,StringLen(__PATH__)-StringLen(__FILE__)); //static string dataPath=mq5Path; //************************************************************* //-- static int fileHandle=-1; MqlDateTime dt; string fdt; string fName; //-- if(fileHandle==INVALID_HANDLE) { //-- TimeLocal(dt); fdt=(string)(dt.year)+"_"; if(dt.mon<10) {fdt+="0";} fdt+=(string)(dt.mon) +"_"; if(dt.day<10) {fdt+="0";} fdt+=(string)(dt.day) +" "; if(dt.hour<10) {fdt+="0";} fdt+=(string)(dt.hour)+"_"; if(dt.min<10) {fdt+="0";} fdt+=(string)(dt.min) +"_"; if(dt.sec<10) {fdt+="0";} fdt+=(string)(dt.sec); fName=__FILE__+" ["+fdt+"] log.txt"; //-- ResetLastError(); fileHandle=FileOpen(fName,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_TXT|FILE_SHARE_WRITE); if(fileHandle==INVALID_HANDLE){Print("LastError()="+(string)(_LastError)+" "+fName);} else {FileSeek(fileHandle,0,SEEK_END);} } //-- if(fileHandle!=INVALID_HANDLE) { ResetLastError(); FileWrite(fileHandle,text); ulong fs=FileSize(fileHandle); //Print("FileSize="+(string)fs); if(fs>1000000){FileClose(fileHandle);fileHandle=INVALID_HANDLE;}//нарезка файлов с ограничением длины } else {Print("FileError "+(string)fileHandle+" "+fName);} }
Разобрался. Пишет в каталог тестера "mt5\tester\Agent\MQL5\Files". Все ok.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем доброго времени.
Подскажите, почему во время тестерного прогона (без оптимизации) стандартные функции не пишут данные в файл (без тестера все работает)?
//+------------------------------------------------------------------+
void PrintToFile(string text)
{
//-- Добавляем дату время к тексту лога
text=TimeToString(TimeCurrent()/*TimeLocal()*/,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" "+text;
Print(text);
//--END Добавляем дату время к тексту лога
//--
//static string mq5Path=StringSubstr(__PATH__,0,StringLen(__PATH__)-StringLen(__FILE__));
//static string dataPath=mq5Path;
//*************************************************************
//--
static int fileHandle=-1;
MqlDateTime dt;
string fdt;
string fName;
//--
if(fileHandle==INVALID_HANDLE)
{
//--
TimeLocal(dt);
fdt=(string)(dt.year)+"_";
if(dt.mon<10) {fdt+="0";} fdt+=(string)(dt.mon) +"_";
if(dt.day<10) {fdt+="0";} fdt+=(string)(dt.day) +" ";
if(dt.hour<10) {fdt+="0";} fdt+=(string)(dt.hour)+"_";
if(dt.min<10) {fdt+="0";} fdt+=(string)(dt.min) +"_";
if(dt.sec<10) {fdt+="0";} fdt+=(string)(dt.sec);
fName=__FILE__+" ["+fdt+"] log.txt";
//--
ResetLastError();
fileHandle=FileOpen(fName,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_TXT|FILE_SHARE_WRITE);
if(fileHandle==INVALID_HANDLE){Print("LastError()="+(string)(_LastError)+" "+fName);}
else {FileSeek(fileHandle,0,SEEK_END);}
}
//--
if(fileHandle!=INVALID_HANDLE)
{
ResetLastError();
FileWrite(fileHandle,text);
ulong fs=FileSize(fileHandle);
//Print("FileSize="+(string)fs);
if(fs>1000000){FileClose(fileHandle);fileHandle=INVALID_HANDLE;}//нарезка файлов с ограничением длины
}
else {Print("FileError "+(string)fileHandle+" "+fName);}
}
//+------------------------------------------------------------------+