Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Скрипты

Demo_FileSize - скрипт для MetaTrader 5

Просмотров:
2179
Рейтинг:
(29)
Опубликован:
2013.04.03 16:25
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Скрипт поочередно перебирает все CSV файлы в общей папке всех клиентских терминалов для получения их размеров. После получения размера, его значение сравнивается с пороговым значением "InpThresholdSize" и в зависимости от результата файл помещается либо в папку с именем "InpBigFolderName", либо в "InpSmallFolderName". Таким образом осуществляется сортировка файлов с большими и маленькими размерами.

Помимо использования функции FileSize(), в скрипте также используются функции FileFindFirst(), FileFindNext() и FileFindClose() для перебора файлов и функция FileMove() для их перемещения.

Код:

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры
input ulong  InpThresholdSize=20;        // граница размера файлов в килобайтах
input string InpBigFolderName="big";     // папка для больших файлов
input string InpSmallFolderName="small"; // папка для маленьких файлов
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string   file_name;      // переменная для хранения имен файлов
   string   filter="*.csv"; // фильтр для поиска файлов
   ulong    file_size=0;    // размер файла в байтах
   int      size=0;         // количество файлов
//--- распечатаем путь к папке в которой будем работать
   PrintFormat("Работаем в папке %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- получение хэндла поиска в корне общей папки всех терминалов
   long search_handle=FileFindFirst(filter,file_name,FILE_COMMON);
//--- проверим, успешно ли отработала функция FileFindFirst()
   if(search_handle!=INVALID_HANDLE)
     {
      //--- в цикле перемещаем файлы в зависимости от их размера
      do
        {
         //--- откроем файл
         ResetLastError();
         int file_handle=FileOpen(file_name,FILE_READ|FILE_CSV|FILE_COMMON);
         if(file_handle!=INVALID_HANDLE)
           {
            //--- получим размер файла
            file_size=FileSize(file_handle);
            //--- закроем файл
            FileClose(file_handle);
           }
         else
           {
            PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",file_name,GetLastError());
            continue;
           }
         //--- распечатаем размер файла
         PrintFormat("Размер файла %s равен %d байт",file_name,file_size);
         //--- определим путь для перемещения файла
         string path;
         if(file_size>InpThresholdSize*1024)
            path=InpBigFolderName+"//"+file_name;
         else
            path=InpSmallFolderName+"//"+file_name;
         //--- переместим файл
         ResetLastError();
         if(FileMove(file_name,FILE_COMMON,path,FILE_REWRITE|FILE_COMMON))
            PrintFormat("Файл %s перемещен",file_name);
         else
            PrintFormat("Ошибка, код = %d",GetLastError());
        }
      while(FileFindNext(search_handle,file_name));
      //--- закрываем хэндл поиска
      FileFindClose(search_handle);
     }
   else
      Print("Files not found!");
  }
Demo_FileReadDouble Demo_FileReadDouble

Индикатор демонстрирует пример использования функции FileReadDouble()

Demo_FileWriteDouble Demo_FileWriteDouble

Скрипт демонстрирует пример использования функции FileWriteDouble()

Demo_FileTell Demo_FileTell

Скрипт демонстрирует пример использования функции FileTell()

Demo_FileWriteInteger Demo_FileWriteInteger

Скрипт демонстрирует пример использования функции FileWriteInteger()