Встречал ли кто исходник iBars, iOpen,iBarShift ... !?

 

Встречал ли кто исходник iBars, iOpen,iBarShift...

вроде такого

int iBars_( string symbol, int timeframe){
  if(symbol=="0"||symbol=="")symbol=Symbol();
  if(timeframe==0)timeframe=Period();
  string FileName = symbol + timeframe + ".hst";
  int handle.iBars = FileOpenHistory(FileName, FILE_BIN|FILE_READ);
  int kolvo_barov=(FileSize(handle.iBars)-148)/44;
  FileClose(handle.iBars);
return (kolvo_barov);
} 

Спасибо, не могу найти.

 
Вернее не исходники а функции работающие непосредственно с истор. файлами.
 
В скрипте period_convertor показана вся работа с файлами hst.
 
почитайте https://www.mql5.com/ru/articles/81 неплозая статья, где указаны реализации вышеперечисленных ф-ций средствами MQL5, по сути Си++, а формат файла .hst и в кодобазе и в сети есть
 

Это все понятно, но чтобы не писать отлаживать думал уже где-то лежит.

Пока дошел до сих пор (думал будет сложнее) Спасиб.

int handle.iBars;
int handle.iOpen;

int start(){


Alert("iOpen(0,0,0) "+iOpen(0,0,0));
Alert("iOpen_(0,0,0) "+iOpen_(0,0,0));
Alert("iLow(0,0,0) "+iLow(0,0,0));
Alert("iLow_(0,0,0) "+iLow_(0,0,0));
}
int iBars_( string symbol, int timeframe){
  if(symbol=="0"||symbol=="")symbol=Symbol();
  if(timeframe==0)timeframe=Period();
  string FileName = symbol + timeframe + ".hst";
  int handle.iBars = FileOpenHistory(FileName, FILE_BIN|FILE_READ);
  int kolvo_barov=(FileSize(handle.iBars)-148)/44;
  FileClose(handle.iBars);
return (kolvo_barov);
} 
 //OLHCV
//********************************************************************************************
double iOpen_( string symbol, int timeframe, int shift) {
  if(symbol=="0"||symbol=="")symbol=Symbol();
  if(timeframe==0)timeframe=Period();
  string FileName = symbol + timeframe + ".hst";
  int handle.iOpen = FileOpenHistory(FileName, FILE_BIN|FILE_READ);
  FileSeek(handle.iOpen, 148, SEEK_SET);         //смещаем от начала на 148байт
  int kolvo_barov=(FileSize(handle.iOpen)-148)/44;
  if(kolvo_barov<shift)return(0);
  FileSeek(handle.iOpen, -44*(1+shift), SEEK_END);          //смещаем от текущего положения на 
  FileSeek(handle.iOpen, 4, SEEK_CUR);          //смещаем от текущего положения на 
  double dou=FileReadDouble(handle.iOpen,DOUBLE_VALUE);
  FileClose(handle.iOpen);
  return(dou);
}
//********************************************************************************************
double iLow_( string symbol, int timeframe, int shift) {
  if(symbol=="0"||symbol=="")symbol=Symbol();
  if(timeframe==0)timeframe=Period();
  string FileName = symbol + timeframe + ".hst";
  int handle.iLow = FileOpenHistory(FileName, FILE_BIN|FILE_READ);
  FileSeek(handle.iLow, 148, SEEK_SET);         //смещаем от начала на 148байт
  int kolvo_barov=(FileSize(handle.iLow)-148)/44;
  if(kolvo_barov<shift)return(0);
  FileSeek(handle.iLow, -44*(1+shift), SEEK_END);          //смещаем от текущего положения на 
  FileSeek(handle.iLow, 12, SEEK_CUR);          //смещаем от текущего положения на 
  double dou=FileReadDouble(handle.iLow,DOUBLE_VALUE);
  FileClose(handle.iLow);
  return(dou);
} 
Причина обращения: