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

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

Просмотров:
2089
Рейтинг:
(33)
Опубликован:
2013.03.26 08:51
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Скрипт демонстрирует пример использования функции FileCopy(). Для этого производится копирование содержимого одного файла в другой. Для успешного копирования в локальной папке терминала должен находиться файл источник, чье имя указывается во входном параметре "InpSrc". Местоположение локальной папки терминала можно получить при помощи вызова функции TerminalInfoString().

PrintFormat("Путь к локальной папке терминала: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); 
Сначала скрипт пытается отобразить содержимое файлов. Если файл приемник не существует, то копирование функцией FileCopy() нужно проводить без использования флага FILE_REWRITE. Если же файл приемник уже был создан, то для успешного копирования флаг FILE_REWRITE должен использоваться.

Код:

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры
input string InpSrc="source.txt";       // источник
input string InpDst="destination.txt";  // копия
input int    InpEncodingType=FILE_ANSI; // ANSI=32 или UNICODE=64
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- отобразим содержимое источника (он должен существовать)
   if(!FileDisplay(InpSrc))
      return;
//--- проверим, существует ли уже файл копии (не обязан быть создан)
   if(!FileDisplay(InpDst))
     {
      //--- файл копии не существует, копирование без флага FILE_REWRITE (правильное копирование)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("File is copied!");
      else
         Print("File is not copied!");
     }
   else
     {
      //--- файл копии уже существует, попробуем скопировать без флага FILE_REWRITE (неправильное копирование)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("File is copied!");
      else
         Print("File is not copied!");
      //--- содержимое файла InpDst останется прежним
      FileDisplay(InpDst);
      //--- скопируем еще раз с флагом FILE_REWRITE (правильное копирование при существовании файла)
      if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))
         Print("File is copied!");
      else
         Print("File is not copied!");
     }
//--- получили копию файла InpSrc
   FileDisplay(InpDst);
  }
//+------------------------------------------------------------------+
//| Чтение содержимого файла                                         |
//+------------------------------------------------------------------+
bool FileDisplay(const string file_name)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- откроем файл
   int file_handle=FileOpen(file_name,FILE_READ|FILE_TXT|InpEncodingType);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- отобразим в цикле содержимое файла
      Print("+---------------------+");
      PrintFormat("File name = %s",file_name);
      while(!FileIsEnding(file_handle))
         Print(FileReadString(file_handle));
      Print("+---------------------+");
      //--- закроем файл
      FileClose(file_handle);
      return(true);
     }
//--- не удалось открыть файл
   PrintFormat("%s is not opened, error = %d",file_name,GetLastError());
   return(false);
  }

Demo_FileFind Demo_FileFind

Скрипт является простым примером использования функций FileFindFirst(), FileFindNext() и FileFindClose()

FigurelliSeries FigurelliSeries

Индикатор, позволяющий определять направление тренда

Demo_FileDelete Demo_FileDelete

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

The20sv0.20 The20sv0.20

Семафорный трендовый сигнальный индикатор