//+------------------------------------------------------------------+ //| bin_to_cvs.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property script_show_inputs #define _LBF_UTIL enum day_of_week_t { day_of_week_t_sunday = 0, day_of_week_t_monday = 1, day_of_week_t_tuesday = 2, day_of_week_t_wednesday = 3, day_of_week_t_thursday = 4, day_of_week_t_friday = 5, day_of_week_t_saturday = 6 }; #include "logic\enum\enum.mqh" #include "framework\enum\enum.mqh" #include "Libs\CtrlPanel\Common\LBFFunction_V2.mqh" input string fileName="drawdown.bin"; input bool decimalSeparatorComma=true; input bool writeSetFile=true; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ResetLastError(); //--- int handleFrom=FileOpen(fileName, FILE_READ | FILE_WRITE | FILE_BIN); if(handleFrom == INVALID_HANDLE) { Print("Ошибка при открытие бинарного файла просадки "+ fileName +" , код ="+IntegerToString(GetLastError())); return; } string fileNameTo=fileName+".csv"; int handleTo=FileOpen(fileNameTo, FILE_READ | FILE_WRITE | FILE_CSV | FILE_UNICODE,"\t"); if(handleTo == INVALID_HANDLE) { Print("Ошибка при создание CSV файла просадки "+ fileNameTo +" , код ="+IntegerToString(GetLastError())); return; } LBFHeader header; uint bytesread=0; bytesread=FileReadStruct(handleFrom,header); if(bytesread!=sizeof(LBFHeader)) { PrintFormat("Ошибка чтения данных из файла источника! Код ошибки=%d",GetLastError()); //--- закрываем файл FileClose(handleFrom); FileClose(handleTo); return; } string s1=CharArrayToString(header.word); PrintFormat("Данные заголовка - word: %s, version: %d, bot_ver: %s, bot_mod: %s, leverage: %d, items: %d, set_size: %d", s1, header.format_ver, CharArrayToString(header.bot_ver), CharArrayToString(header.bot_mod), header.leverage, header.count_item, header.size_of_set_struct); if(StringCompare(s1,LBF_WORD,false)!=0) { PrintFormat("Файл %s не содержит телеметрию EA-Setka из тестера стратегий!", fileName); //--- закрываем файл FileClose(handleFrom); FileClose(handleTo); return; } if(header.format_ver!=LBF_VERSION) { PrintFormat("Версия %d файла %s не может быть обработана данной утилитой!", header.format_ver,fileName); //--- закрываем файл FileClose(handleFrom); FileClose(handleTo); } LBFWriteHeaderCVSFile(handleTo); LBFBalanceItem balanceItem; int i; for(i=0; i