Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Demo_FileWriteInteger - скрипт для MetaTrader 5
- Просмотров:
- 2831
- Рейтинг:
- Опубликован:
- 2013.04.04 09:30
- Обновлен:
- 2016.11.22 07:33
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Скрипт получает цены с определенного символа, анализирует их и записывает в бинарный файл данные о направлении движения цены в определенные моменты времени. Запись всех данных осуществляется при помощи функции FileWriteInteger().
Значение даты предварительно преобразуется в строку, далее разбивается на массив типа uchar и уже потом записывается в файл при помощи функции.
Код:
//--- покажем окно входных параметров при запуске скрипта #property script_show_inputs //--- параметры для получения данных из терминала input string InpSymbolName="EURUSD"; // валютная пара input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1; // таймфрейм input datetime InpDateStart=D'2013.01.01 00:00'; // дата начала копирования данных //--- параметры для записи данных в файл input string InpFileName="Trend.bin"; // имя файла input string InpDirectoryName="Data"; // имя директории //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { datetime date_finish=TimeCurrent(); double close_buff[]; datetime time_buff[]; int size; //--- сбросим значение ошибки ResetLastError(); //--- скопируем цену закрытия для каждого бара if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1) { PrintFormat("Не удалось скопировать значения цен закрытия. Код ошибки = %d",GetLastError()); return; } //--- скопируем время для каждого бара if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1) { PrintFormat("Не удалось скопировать значения времени. Код ошибки = %d",GetLastError()); return; } //--- получим размер буфера size=ArraySize(close_buff); //--- откроем файл для записи значений (если его нет, то создастся автоматически) ResetLastError(); int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN); if(file_handle!=INVALID_HANDLE) { PrintFormat("Файл %s открыт для записи",InpFileName); PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); //--- int up_down=0; // флаг тенденции int arr_size; // размера массива arr uchar arr[]; // массив типа uchar //--- запишем значения времени в файл for(int i=0;i<size-1;i++) { //--- сравним цены закрытия на текущем и следующем барах if(close_buff[i]<=close_buff[i+1]) { if(up_down!=1) { //--- запишем значение даты в файл, используя FileWriteInteger StringToCharArray(TimeToString(time_buff[i]),arr); arr_size=ArraySize(arr); //--- сначала запишем количество символов в массиве FileWriteInteger(file_handle,arr_size,INT_VALUE); //--- запишем сами символы for(int j=0;j<arr_size;j++) FileWriteInteger(file_handle,arr[j],CHAR_VALUE); //--- изменим флаг тенденции up_down=1; } } else { if(up_down!=-1) { //--- запишем значение даты в файл, используя FileWriteInteger StringToCharArray(TimeToString(time_buff[i]),arr); arr_size=ArraySize(arr); //--- сначала запишем количество символов в массиве FileWriteInteger(file_handle,arr_size,INT_VALUE); //--- запишем сами символы for(int j=0;j<arr_size;j++) FileWriteInteger(file_handle,arr[j],CHAR_VALUE); //--- изменим флаг тенденции up_down=-1; } } } //--- закрываем файл FileClose(file_handle); PrintFormat("Данные записаны, файл %s закрыт",InpFileName); } else PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError()); }
Скрипт демонстрирует пример использования функции FileTell()
Demo_FileSizeСкрипт демонстрирует пример использования функции FileSize()
Индикатор демонстрирует пример использования функции FileReadInteger()
Profit Loss CalculatorКалькулятор-панель для расчёта прибыли/убытка. Данные пересчитываются при сдвиге линий, либо изменении параметров в полях ввода цены входа, лота, прибыли или убытка в пипсах или валюте депозита.