Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Закажи разработку и отслеживай ее через мобильный телефон.
Vadim Zhunko
5219
Vadim Zhunko 2009.10.17 11:05 

Стандартные функции к таймсериям не работают с пользовательской историей!!!

Вернее, работают, но для этого надо открыть график офлайн. И можно, даже, сразу закрыть его.


Кто-нибудь, может, решил эту проблему?

Может, Метаквоты разрешат эту возможность?

Vadim Zhunko
5219
Vadim Zhunko 2009.10.25 18:21  

Странно, что этот вопрос никого не волнует.

Решил эту проблему написанием своих функций аналогов стандартных, но с возможностью читать в любом каталоге.

Теперь можно одним МТ4 создавать историю для второго МТ или любой МТ4 сможет читать историю откуда угодно.

Вот такие функции для чтения таймсерий получились:

//+-------------------------------------------------------------------------------+
//|                                         ZH_Universal_Standard_Functions_TF.mqh|
//|                                         Copyright © Zhunko                    |
//|17.10.2009 - 25.10.2009                  ZHUNKO vadim@zhunko.ru                |
//+-------------------------------------------------------------------------------+
//| Заголовочный файл библиотеки стандартных функций для всех ТФ.                      |
//| Функции отличаются от встренных тем, что работают с пользовательской историей.         |
//| Графики пользовательского ТФ можно не открывать.                                   |
//+-------------------------------------------------------------------------------+
#import "ZH_UniversalStandardFunctionsTF.lib.ex4"
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
 // 1.Возвращает количество баров на определенном графике. В случае ошибки функция возвращает "-1".
 int iBarsUniversal (string path,       // Полный путь к папке истории.
                     string symbol,     // Символьное имя инструмента.
                     int    timeframe); // Период.
 //===============================================================================================================================================
 // 2.Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. Если для указанного времени
 //   бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости от параметра exact, -1 или смещение ближайшего бара.
 //   В случае ошибки функция возвращает:  -2  файл не открыт или не создан;
 //                                        -3  файловый указатель файла в начало файла не смещён;
 //                                        -4  файловый указатель файла в конец файла не смещён;
 //                                        -5  файловый указатель файла на предполагаемое время открытия не смещён;
 //                                        -6  файловый указатель файла при поиске времени в цикле не смещён.
 int iBarShiftUniversal (string   path,      // Полный путь к папке истории.
                         string   symbol,    // Символьное имя инструмента.
                         int      timeframe, // Период.
                         datetime time,      // Значение времени для поиска.
                         bool     exact);    // Возвращаемое значение если бар не найден (FALSE - iBarShift возвращает ближайший/TRUE - iBarShift возвращает -1).
 //==============================================================================================================================================
 // 3.Возвращает значение времени открытия указанного параметром shift бара с соответствующего графика.
 //   В случае ошибки функция возвращает:  0  запрошен запредельный номер бара;
 //                                       -1  файл не открыт или не создан;
 //                                       -2  файловый указатель файла в начало файла не смещён;
 datetime iTimeUniversal (string path,      // Полный путь к папке истории.
                          string symbol,    // Символьное имя инструмента.
                          int    timeframe, // Период.
                          int    shift);    // Номер бара.
 //==============================================================================================================================================
 // 4.Возвращает значение цены открытия указанного параметром shift бара с соответствующего графика. В случае ошибки функция возвращает 0.
 double iOpenUniversal (string path,      // Полный путь к папке истории.
                        string symbol,    // Символьное имя инструмента.
                        int    timeframe, // Период.
                        int    shift);    // Номер бара.
 //==============================================================================================================================================
 // 5.Возвращает значение максимальной цены указанного параметром shift бара с соответствующего графика. В случае ошибки функция возвращает 0.
 double iHighUniversal (string path,      // Полный путь к папке истории.
                        string symbol,    // Символьное имя инструмента.
                        int    timeframe, // Период.
                        int    shift);    // Номер бара.
 //==============================================================================================================================================
 // 6.Возвращает значение минимальной цены указанного параметром shift бара с соответствующего графика (symbol, timeframe). В случае ошибки функция возвращает 0.
 double iLowUniversal (string path,      // Полный путь к папке истории.
                       string symbol,    // Ввалютная пара.
                       int    timeframe, // Период.
                       int    shift);    // Номер бара.
 //==============================================================================================================================================
 // 7.Возвращает значение цены закрытия указанного параметром shift бара с соответствующего графика (symbol, timeframe). В случае ошибки функция возвращает 0.
 double iCloseUniversal (string path,      // Полный путь к папке истории.
                         string symbol,    // Символьное имя инструмента.
                         int    timeframe, // Период.
                         int    shift);    // Номер бара.
 //==============================================================================================================================================
 // 8.Возвращает значение тикового объема указанного параметром shift бара с соответствующего графика (symbol, timeframe). В случае ошибки функция возвращает 0.
 double iVolumeUniversal (string path,      // Полный путь к папке истории.
                          string symbol,    // Символьное имя инструмента.
                          int    timeframe, // Период.
                          int    shift);    // Номер бара.
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
Vadim Zhunko
5219
Vadim Zhunko 2009.10.26 11:37  
А ещё теперь можно одним МТ4 брать исходную историю из второго МТ4 и класть сформированную историю в третий МТ4... :-)))
World Stocks Capital s.r.o.
141
Konstantin Ignashin 2011.04.16 11:19  
Привет!  А где можно достать этот .ex4 не давно столкнулся с похожей проблемой.
Vadim Zhunko
5219
Vadim Zhunko 2011.04.16 11:42  

Не выкладывал ещё. Да, и не актуально теперь это. Переписал всё на С++. Теперь это DLL.

38 функций:

EXPORTS InitTimeSeriesMT4
EXPORTS GetCurrentNameServer
EXPORTS GetCurrentTerminalPath

EXPORTS iBarsT
EXPORTS iBarsFastT
EXPORTS iCloseT
EXPORTS iHighestT
EXPORTS iHighT
EXPORTS iLowestT
EXPORTS iLowT
EXPORTS iOpenT
EXPORTS iTimeT
EXPORTS iVolumeT

EXPORTS tBarShiftT
EXPORTS tCloseT
EXPORTS tHighT
EXPORTS tLowT
EXPORTS tOpenT
EXPORTS tVolumeT

EXPORTS PeriodConverterT


EXPORTS iBarsV
EXPORTS iBarsFastV
EXPORTS iCloseV
EXPORTS iHighestV
EXPORTS iHighV
EXPORTS iLowestV
EXPORTS iLowV
EXPORTS iOpenV
EXPORTS iTimeV
EXPORTS iVolumeV

EXPORTS tBarShiftV
EXPORTS tCloseV
EXPORTS tHighV
EXPORTS tLowV
EXPORTS tOpenV
EXPORTS tVolumeV

EXPORTS PeriodConverterV
EXPORTS PreparationTickVolume

Первая часть для равновременых, вторая для равнообъёмных.

Андрей
1890
Андрей 2011.04.16 12:27  

Через Dll, я думаю, надежнее.

Vadim Zhunko
5219
Vadim Zhunko 2011.04.16 17:34  

Андрей, представляешь, удалось избавится от виртуальных методов в базовом классе для таймсерий!

Удалось сделать универсальными методы для работы с равнообъёмными и равновременными барами!

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий