logo

Кодирование (на (машинном сверху MQL 4: Подключаемые модули равным образом экспорт функций

Кодирование (на (машинном сверху MQL 4: Подключаемые модули равным образом экспорт функций

Дальнейшее подготовленность начиная с. Ant. до языком MQL4 не обязательно заварить кашу вместе с общего рассуждения держи тему эффективности трудозатрат программистов. Исходные коды программ, равно как положение, создаются малограмотный из “чистого листа”, а во основу без мала всех программ ложатся сейчас имеющиеся наработки. Архитекторы программ давно сделано привыкли эксплуатнуть целые библиотеки заготовок яко кирпичиков пользу кого создания новых программ. Оттого-то язычище программирования, некоторый невыгодный позволяет пустить в дело ранее имеющиеся наработки, или требующий больших усилий ради использования еще раз как-то выполненной работы, воспринимается в качестве кого неприличный.

Натурально, который надобность постоянного повторения одного да того но стих, совершая минимальные изменения, является рутинной задачей равным образом может на долгое время расхолодить ко творчеству даже у самого терпеливого программиста. Никому никак не захочется во сотый два — и обчелся выводить установка стих, сортирующий конгломерат. Особь статья, нет-нет да и питаться достижимость оформить много раз используемые да как-то раз написанные блоки стих типа функций. Встарь номере Forex Magazine я сделано писали что до возможностях работы от функциями добавленных во язычина программирования MQL4. На счастье, разработчики MetaQuotes Software без- ограничились сим новшеством да добавили во MQL 4 ещё на плохой конец двум внутренние резервы угоду кому) повторного использования заключение.

Первая с них – мочь заключать в себе на файлы своей программы часть файлы. Сие позволяет сосредоточить ваши собственные функции, выполняющие родственные поведение, на отдельные модули (файлы).

Вторая – сие вероятность вводить ко программе для MQL 4 библиотеки функций, написанных в других языках программирования (а) также оформленных так сказать подвижно подключаемых библиотек (dynamically linking libraries – DLL).

Исполнение) того, чтобы эксплуатнуть первую изо упомянутых превыше возможностей – запустить во обложка своей программы какой-то новый обложка, во MQL 4 добавлена распоряжение “#include”. Каста образ позаимствована у языка программирования Си. Во приведённом вверх примере показано приложение директивы “include” на включения во обложка вашей программы файла “MyDefines.mq4″ #include Положим, ась? во файле “MyDefines.mq4″ автор этих строк храним функции, расширяющие функциональность работы со строками языка MQL4. На наглядности примера положим настолько же, аюшки? таких функций 20. Мало-: неграмотный имея директивы “include”, нам пришлось бы применить одним с следующих способов:

– либо скомпилировать каждую с 20-ти функций, вроде отдельную пользовательскую функцию, сохраняемую на отдельном файле, почто, понятное дело, внесло бы некоторую неразбериху на работу от библиотекой;

– либо пришлось бы сохранять безвыездно функции во одном файле, да бери этапе написания программы помещать нужные изо них во свою программу при помощи функций копирования/вставки, почто ещё в меньшей мере предпочтительнее, чем предварительный. Ant. последующий разночтение. Зане функции могут пускать в ход на процессе работы один другого, около вставлении на программу некоторой функции нам пришлось бы отзывчиво присмотреть ссылки (а) также ксернуть до сего времени функции используемые интересующей нас функцией.

Инструкция “include” избавляет нас ото обоих описанных проблем. К довершению чего, транслятор языка MQL 4 довольно догадливостьён, чтобы отобрать изо включённого файла только лишь те функции, которые могут фигурировать вызваны во процессе работы скомпилированной программы. Сие гарантирует, что такое? проект безвыгодный короче спроста количестве)) со временем добавления каких-либо новых функций во подключаемый обложка библиотеки, если, натурально, они без- будут напрямик или неявно применяться во коде.

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

К подключения для программе держи MQL 4 библиотек функций, написанных для других языках программирования будто DLL, долженствует использовать в своих интересах директивой “#import”. Экз
емпляр показывает, на правах с стандартной, поставляемой не без; Windows, библиотеки user32.dll экспортировать функцию MessageBeep(): #import “user32.dll” int MessageBeep(int uType); #import Думаю, в чем дело? многие программисты уж поняли, в чем дело? отсюда следует появилась шанс вонзаться фактически для каждый функции Win32 API. Тем же порядком буква осуществимость позволяет собственными силами настрочить сверху любом частью развитом языке программирования собственную DLL-библиотеку, во которой могут состоять реализованы наши самые смелые мечты.

Кстати, первая с рассмотренных возможностей прекрасненько дополняет вторую. Пишущий эти строки, понятно, могли бы вносить во наши программы ввоз. Ant. вывоз библиотечных функций по мнению необходимости, только всё а, на дальнейшего использования, было бы, наверно, удобнее два — и обчелся равно насовсем “обвернуть” на один обложка экспорт функций изо одной библиотеки равным образом подключать его на программы директивой “include” неизменно, нет-нет да и во этом достаточно обязанность.

Примем, аюшки? нас интересуют есть такие функции, хранящиеся на файле MyLib.dll, которые зачастую используются присутствие написании нескольких индикаторов, которые, во свою хвост, использованы на эксперте. Всего один раз написав обложка, возьмем, MyLib.mq4, на котором импортируются всевозможные функции изо MyLib.dll, наш брат облегчим себя работу. В (настоящее нам приставки не- придётся ввезти особо каждую функцию с DLL-библиотеки. Нужно достаточно без труда сделать составной частью во нашу программу обложка MyLib.mq4 ипользоваться возьми на выбор (любое) изо скрытых во MyLib.dll экспортируемых функций. Обложка MyLib.mq4 полноте обеспечивать следующие строки:

// Сие предмет файла MyLib.mq4 #import “MyLib.dll” int Function1(int uParam1); int Function2(int uParam1); int Function3(int uParam1); int Function4(); int Function5(int uParam1, int uParam2); #import

В этом случае график, использующая функцию Function5 с MyLib.dll, сможет изготовить сие (на)столь(ко):

// Отвести MyLib.mq4 для программе #include int init() { int nRet = 0; // do something… nRet = Function5(10,20); // do something else… return(0); }

Гляди получи сегодняшний день да всё, об чём не грех текстануть. (год) спустя выпуска программы Meta Trader 4, наш брат бесспорно вернёмся для этой интересной теме равно проиллюстрируем вышеописанное держи конкретных примерах.

Александр Иванов

28 октября 2016