Теперь включать ресурсы в свои программы на MQL5 еще проще, для этого в редакторе MetaEditor 5 добавлена специальная штатная команда "Вставить ресурс" :
Вставка ресурсов
Для облегчения использования файлов ресурсов в разрабатываемых приложениях в меню "Сервис" предусмотрена команда " Вставить ресурсы". Данная команда позволяет вставить в текущий файл объявление файлов ресурсов, выбранных из указанной папки, при помощи директивы #resource.
После выполнения данной команды появляется стандартное диалоговое окно операционной системы, в котором необходимо выбрать один или несколько файлов ресурсов, которые должны быть объявлены в файле.
|
После этого в начало текущего файла будут добавлены соответствующие директивы вида:
#resource "\Images\example.bmp" |
Путь к файлам ресурсов может быть указан двумя способами:
- Относительно текущего файла (без символа "\" в начале пути)
Данный способ используется, если файлы ресурсов расположены в той же папке, что и текущий файл, или в одной из ее подпапок. - Относительно каталога /MQL5 клиентского терминала (в начале пути указывается символ "\")
Данный способ используется во всех остальных случаях.
Когда в качестве ресурса в основной файл можно будет вставлять файлы индикаторов, вызываемые в основном файле через iCustom()? В папках терминала накопилось столько мусора, что уже даже не понятно что и к чему относится. Это небезопасно. Хочется научиться собирать один проект в один ex5 файл.
Это было добавлено в 730 билде еще 24 ноября 2012:
- MQL5: Добавлена поддержка хранения индикаторов в ресурсах EX5. При этом индикаторы в ресурсах не смогут работать со своими собственными ресурсами.
Вот простой пример. Сначала скомпилируйте стандарный индикатор CHO по указанному пути, затем этого эксперта, а потом бросьте его на чарт.
#resource "\\Indicators\\Examples\\CHO.EX5" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- int handle=iCustom(Symbol(),Period(),"::Indicators\\Examples\\CHO.EX5"); if(handle!=INVALID_HANDLE) { Print("Indicator created!"); IndicatorRelease(handle); } //--- return(0); } void OnDeinit(const int reason) { } void OnTick() { }
Обратите внимание на правильный выбор путей, модификатор области :: и правильное употребление слешей.
Мы специально сделали возможность упаковывать индикаторы в ресурсы, чтобы можно было делать самодостаточные и полноценные продукты.
Это было добавлено в 730 билде еще 24 ноября 2012:
- MQL5: Добавлена поддержка хранения индикаторов в ресурсах EX5. При этом индикаторы в ресурсах не смогут работать со своими собственными ресурсами.
...
Спасибо. Это то, что нужно.
Использование ресурсов в тестере должно работать ? А то не получается.Ошибка 4802.
#property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 #resource "\\Indicators\\Examples\\ADX.EX5" #property tester_indicator "\\Indicators\\Examples\\ADX.EX5" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- int handle=iCustom(Symbol(),Period(),"::Indicators\\Examples\\ADX.EX5"); if(handle!=INVALID_HANDLE) { ChartIndicatorAdd(0,1,handle); } //--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { return(rates_total);}
Использование ресурсов в тестере должно работать ? А то не получается.Ошибка 4802.
А чего Вы хотели реально сделать?
У внешнего индикатора со своим собственным расчетным движком переопределить функцию расчета OnCalculate этого индикатора? Так нельзя.
Обошел вот так.Но для проверки индикатора в тестере все равно потребуется наличие самого ЗЗ.
if(MQL5InfoInteger(MQL5_TESTING)==true) // если тестер то получаем из папки { f_h=iCustom(_Symbol,_Period,"Examples\\Zigzag",5,5,3); } else // если на графике то используем встроенный { f_h=iCustom(_Symbol,_Period,"::Indicators\\Examples\\Zigzag.EX5",5,5,3); }
Другой вариант ЗЗ встраивать полностью.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Использование ресурсов в MQL5"
Renat, 2013.01.16 22:21
Это было добавлено в 730 билде еще 24 ноября 2012:
- MQL5:
Добавлена поддержка хранения индикаторов в ресурсах EX5. При этом
индикаторы в ресурсах не смогут работать со своими собственными
ресурсами.
Может только для TextOut сделать исключение - возможность работать со своими ресурсами программ загруженных из ресурсов?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Использование ресурсов в MQL5:
Программы на MQL5 позволяют не только автоматизировать рутинные вычисления, но и создавать полноценную графическую оболочку. Возможности по созданию по-настоящему интерактивных элементов управления стали практически такими же широкими, как и в классических языках программирования. Если вы хотите писать полноценные самостоятельные программы на MQL5, используйте в них ресурсы. Такие программы легче поддерживать и распространять.
Автор: MetaQuotes