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

Выгрузка котировок (баров D1, W1, MN1) по всем инструментам в файлы csv. Uploading quotes (bars D1, W1, MN1) for all instruments to csv files - скрипт для MetaTrader 4

Просмотров:
2276
Рейтинг:
(5)
Опубликован:
2020.09.26 22:03
Обновлен:
2020.09.27 10:14
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Код:

Код

Консоль:

Консоль

Папки:

Папки

Файлы:

Файлы

Бары в csv файле:

Бары




Код:

#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   string FolderName = "Bars";          // имя папки для сохранения баров
   
   
   int Symbols_Total = SymbolsTotal(false);        // кол-во символов (true – только символы в MarketWatch, false - возвращается общее количество всех символов)
   Print("--> Symbols_Total = ", Symbols_Total);   // печать в консоль
   
   
   // загрузка истории
   ResetLastError();
   for(int i=0; i<Symbols_Total; i++)              // перебор всех инструментов
   {
      MqlRates rates[];
      string Symbol_Name = SymbolName(i, false);   // имя символа
      CopyRates( Symbol_Name, PERIOD_MN1, 0, iBars(Symbol_Name, PERIOD_MN1), rates );
      CopyRates( Symbol_Name, PERIOD_W1, 0, iBars(Symbol_Name, PERIOD_W1), rates );
      CopyRates( Symbol_Name, PERIOD_D1, 0, iBars(Symbol_Name, PERIOD_D1), rates );
      if( _LastError == ERR_HISTORY_WILL_UPDATED )
      {
         i=i-1;
         //Print("--> Ожидание истории (ERR_HISTORY_WILL_UPDATED):   Symbol - ", Symbol_Name );
         ResetLastError();
      }
   }
   
   // создание файлов для все инструментов
   for(int i=0; i<Symbols_Total; i++)              // перебор всех инструментов
   {
      string Symbol_Name = SymbolName(i, false);   // имя символа
      string FileName;                             // имя файла
      int filehandle;                              // хендел файла
      
      if( _LastError == ERR_HISTORY_WILL_UPDATED)  Print("--> Ожидание истории - ERR_HISTORY_WILL_UPDATED" );
      
   // Месяц =========================================================================================
      ResetLastError();
      
      FileName = FolderName+"\\MN1\\"+Symbol_Name+".csv";      // имя файла, в который будем писать
      filehandle = FileOpen(FileName, FILE_WRITE|FILE_CSV);    // открываем файл
      
      if(filehandle != INVALID_HANDLE) 
      { 
         FileWrite(filehandle,                     // названия столбцов
               "№",
               "Time",
               "Open",
               "High",
               "Low",
               "Close",
               "Volume");
               
         for(int j=0; j<iBars(Symbol_Name, PERIOD_MN1); j++)   // перебор всех бавров Месяц1
         {
            FileWrite(filehandle,                  // пишем параметры бара в файл
               j,
               iTime(Symbol_Name, PERIOD_MN1, j),
               ReplacePoint(iOpen(Symbol_Name, PERIOD_MN1, j)),
               ReplacePoint(iHigh(Symbol_Name, PERIOD_MN1, j)),
               ReplacePoint(iLow(Symbol_Name, PERIOD_MN1, j)),
               ReplacePoint(iClose(Symbol_Name, PERIOD_MN1, j)),
               ReplacePoint(iVolume(Symbol_Name, PERIOD_MN1, j)) );
         }

         FileClose(filehandle);                    // закрываем файл
         //Print("--> ", FileName, " - OK"); 
      } 
      else Print("--> Операция FileOpen(", FileName, ") неудачна, ошибка - ", _LastError); 
      
      
      
   // Неделя =========================================================================================
      ResetLastError();
      
      FileName = FolderName+"\\W1\\"+Symbol_Name+".csv";       // имя файла, в который будем писать
      filehandle = FileOpen(FileName, FILE_WRITE|FILE_CSV);    // открываем файл
      
      if(filehandle != INVALID_HANDLE) 
      { 
         FileWrite(filehandle,                     // названия столбцов
               "№",
               "Time",
               "Open",
               "High",
               "Low",
               "Close",
               "Volume");
               
         for(int j=0; j<iBars(Symbol_Name, PERIOD_W1); j++)   // перебор всех бавров Неделя1
         {
            FileWrite(filehandle,                  // пишем параметры бара в файл
               j,
               iTime(Symbol_Name, PERIOD_W1, j),
               ReplacePoint(iOpen(Symbol_Name, PERIOD_W1, j)),
               ReplacePoint(iHigh(Symbol_Name, PERIOD_W1, j)),
               ReplacePoint(iLow(Symbol_Name, PERIOD_W1, j)),
               ReplacePoint(iClose(Symbol_Name, PERIOD_W1, j)),
               ReplacePoint(iVolume(Symbol_Name, PERIOD_W1, j)) );
         }

         FileClose(filehandle);                    // закрываем файл
         //Print("--> ", FileName, " - OK"); 
      } 
      else Print("--> Операция FileOpen(", FileName, ") неудачна, ошибка - ", _LastError); 
      
      
      
   // День =========================================================================================
      ResetLastError();
      
      FileName = FolderName+"\\D1\\"+Symbol_Name+".csv";       // имя файла, в который будем писать
      filehandle = FileOpen(FileName, FILE_WRITE|FILE_CSV);    // открываем файл
      
      if(filehandle != INVALID_HANDLE) 
      { 
         FileWrite(filehandle,                     // названия столбцов
               "№",
               "Time",
               "Open",
               "High",
               "Low",
               "Close",
               "Volume");
               
         for(int j=0; j<iBars(Symbol_Name, PERIOD_D1); j++)   // перебор всех бавров День1
         {
            FileWrite(filehandle,                  // пишем параметры бара в файл
               j,
               iTime(Symbol_Name, PERIOD_D1, j),
               ReplacePoint(iOpen(Symbol_Name, PERIOD_D1, j)),
               ReplacePoint(iHigh(Symbol_Name, PERIOD_D1, j)),
               ReplacePoint(iLow(Symbol_Name, PERIOD_D1, j)),
               ReplacePoint(iClose(Symbol_Name, PERIOD_D1, j)),
               ReplacePoint(iVolume(Symbol_Name, PERIOD_D1, j)) );
         }
         
         FileClose(filehandle);                    // закрываем файл
         //Print("--> ", FileName, " - OK"); 
      } 
      else Print("--> Операция FileOpen(", FileName, ") неудачна, ошибка - ", _LastError);
       
   }
   ResetLastError();
   Print("--> Скрипт - ОК");
}
//+------------------------------------------------------------------+



string ReplacePoint( double in )
{
   string s = DoubleToString(in);
   StringReplace( s, ".", ",");
   return s;
}
    CORR CORR

    Скрипт для подбора коррелирующих пар

    gbpusd M5 571 17.09.20 gbpusd M5 571 17.09.20

    Exported on 17.09.2020 from Forex Strategy Builder Professional, v3.8.8

    Time Buy Sell Time Buy Sell

    Советник открывает противоположные позиции в заданное времяю

    Price Bid Price Bid

    Отображение цены Bid.