Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2563
- Рейтинг:
- Опубликован:
- 2013.03.29 11:42
- Обновлен:
- 2016.11.22 07:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Эксперт на каждом тике получает значения цен Bid и Ask и запоминает их в массив структуры "prices". На каждом двадцатом тике эксперт осуществляет запись данных объекта структуры в файл, используя функцию FileWriteArray(). Данные будут записываться в бинарный файл в поддиректории локальной папки терминала. Местоположение локальной папки терминала можно получить при помощи вызова функции TerminalInfoString().
PrintFormat("Путь к локальной папке терминала: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));При удалении эксперта с графика производится запись еще не записанных данных в файл, после чего эксперт завершает свою работу.
Код:
//--- входные параметры input string InpFileName="data.bin"; input string InpDirectoryName="SomeFolder"; //+------------------------------------------------------------------+ //| Структура для хранения данных о ценах | //+------------------------------------------------------------------+ struct prices { datetime date; // дата double bid; // цена бид double ask; // цена аск }; //--- глобальные переменные int count=0; int size=20; string path=InpDirectoryName+"//"+InpFileName; prices arr[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- выделение памяти для массива ArrayResize(arr,size); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- запись оставшихся count строк, если count<n WriteData(count); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- сохраним данные в массив arr[count].date=TimeCurrent(); arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID); arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK); //--- отобразим текущие данные Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask); //--- увеличим счетчик count++; //--- если массив заполнился, то записываем данные в файл и обнуляем его if(count==size) { WriteData(size); count=0; } } //+------------------------------------------------------------------+ //| Запись n элементов массива в файл | //+------------------------------------------------------------------+ void WriteData(const int n) { //--- откроем файл ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arr,0,n); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); }

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

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

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

Сигналы входов по системе "Понедельник"