Странно, что этот вопрос никого не волнует.
Решил эту проблему написанием своих функций аналогов стандартных, но с возможностью читать в любом каталоге.
Теперь можно одним МТ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); // Номер бара. //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
Не выкладывал ещё. Да, и не актуально теперь это. Переписал всё на С++. Теперь это 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
Первая часть для равновременых, вторая для равнообъёмных.
Через Dll, я думаю, надежнее.
Андрей, представляешь, удалось избавится от виртуальных методов в базовом классе для таймсерий!
Удалось сделать универсальными методы для работы с равнообъёмными и равновременными барами!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Стандартные функции к таймсериям не работают с пользовательской историей!!!
Вернее, работают, но для этого надо открыть график офлайн. И можно, даже, сразу закрыть его.
Кто-нибудь, может, решил эту проблему?
Может, Метаквоты разрешат эту возможность?