Примеры: Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB)

 

New article Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) has been published:

В данной статье рассматривается вопрос создания DLL библиотеки - обертки, которая позволит взаимодействовать MetaTrader 4 с математическим рабочим столом пакета MATLAB. Описаны "подводные камни" и пути их преодоления. Статья рассчитана на подготовленных программистов С/С++, использующих компилятор Borland C++ Builder 6.

В настоящее время MetaTrader 4 и математический пакет MATLAB успели получить высокую оценку пользователей за многие свои положительные характеристики, в том числе за «гибкость» при создании сложных вычислительный систем. Математический пакет MATLAB имеет три основных способа связи с вешними приложениями, но лишь один из них рекомендован – использование виртуального рабочего стола (машины) MATLAB Engine, данный способ гарантирует полную совместимость со всем пакетом MATLAB. Многие программисты избегают данный способ из-за следующих причин:

  • Многие считают его медленным. Да, если сравнивать с методом прямого вызова функций из Dll-библиотек MATLAB. Основная задержка происходит в начале работы, при вызове виртуальной машины, из-за вызова многочисленных библиотек, которые загружаются в виртуальное адресное пространство вызвавшего процесса (в нашем случае MetaTrader 4).
  • Переносимость проекта. Да, при переносе проекта на другой компьютер необходимо таскать все Dll-библиотеки MATLAB, но и при прямом вызове тоже, a также знать «родственные связи» последних, т.е. очередность запуска!
  • Обязательное знание С++ или Fortran. Ну на этот вопрос отвечу так: если знаешь MQL4, то выучить С++ не сложно и наоборот.

Почему я рекомендую этот способ:

  1. Самый надежный и независимый от версии MATLAB способ взаимодействия с внешними программами. Вы можете поменять версию MATLAB, а ваши индикаторы и советники этого не заметят, это считаю главным преимуществом.
  2. Относительно быстрый способ разработки. Нет необходимости в отладчиках, а написать «Dll-обертку» не составит труда.
  3. «Общий рабочий стол» для нескольких индикаторов и/или советников. Это свойство считаю полезным в тех случаях, когда необходимо принять решение на основе данных от нескольких индикаторов или же при реализации пирамидальной сделки.

В данной статье описывается способ связи MetaTrader 4 и MATLAB версии 7.4.0 (R2007a) через «Dll-обертку» написанную на Borland C++ Builder 6. Программистам, предпочитающим продукцию Microsoft, придется самим адаптировать примеры под свой компилятор (удачи Вам в нелегком труде!).

Author: Andrey Emelyanov

 

Уважаемый Андрей, Ваша статья очень своевременная, нужная. Однако хотелось бы если Вы уже начали эту тему и хорошо подготовлены в этой области что бы Вы продолжили тему и написали такой же подробный алгоритм как правильно совместить генерируемые МАТЛАБ библиотеки на С++ с МТ 4. Думаю что это помоголо бы многим.

Сергей.

 
assol_7:

Уважаемый Андрей, Ваша статья очень своевременная, нужная. Однако хотелось бы если Вы уже начали эту тему и хорошо подготовлены в этой области что бы Вы продолжили тему и написали такой же подробный алгоритм как правильно совместить генерируемые МАТЛАБ библиотеки на С++ с МТ 4. Думаю что это помоголо бы многим.

Сергей.

Доброго времени суток Сергей!
Думаю это не такая уж тяжелая проблема. Принцип один, пишем свою Dll библиотеку переходник как в статье, только используем не MATLAB Engine, а собранную MATLAB'ом Dll, вот алгоритм:
Загрузка:

  1. MateTrader 4 вызывает в свое адресное пространство "Dll переходник".
  2. "Dll переходник" загружает в свое адресное пространство "MATLAB Dll".

Работа:

  1. MateTrader 4 вызывает функцию "Dll переходника" передает переменные.
  2. Функция "Dll переходника" создает переменную совместимую с типом MATLAB и копирует в неё переданные переменные из MetaTrader 4. Вызывает функцию "MATLAB Dll" и передает созданные переменные.
  3. Функция "Dll переходника" получает переменные от "MATLAB Dll" и получив указатели копирует в переменные MetaTrader 4, - "подмена".

Сборка проекта:

  1. Сначала генерируем MATLAB библиотеку.
  2. Создаем lib файл: в любом С++ компиляторе есть implib.exe - это программа создает библиотеку импорта, в данном случае для MATLAB Dll.
  3. Пишем заголовочный файл для библиотеки импорта
  4. Все подключаем к проекту "Dll переходника"

P/s: посмотри файлы проекта "Dll переходника", он хорошо комментирован и поэтому думаю понятен, по его образу можно переписать под твою задачу. К сожалению, без написания собственного "переходника" совместить MATLAB и MetaTrader не возможно.

 

это не поможет никому ...

хехе ....

... все это, в том числе, и классический теханализ в реализации несметного количества индикаторов на МТ .... абсолютно бесполезные вещи ...

со мной не согласится 99% посетителей этого сайта, но достаточно задать простой вопрос каждому самому себе: вы заработали деньги с помощью этого всего ...?

не тратьте свое время и деньги на кухнофорексе ...

 
korst:

не тратьте свое время и деньги на кухнофорексе ...

Возникает логичный вопрос - вас то сюда каким ветром занесло, если сами убеждены в сказанном?
 
ответ прост - я получаю рассылку на почту о данных новостях как и все, т.к зарегестрирован на этом сайте давно ..... ничего полезного я для себя лично не вынес .... мт - это дорога в никуда ....
 
korst:

это не поможет никому ...

хехе ....

... все это, в том числе, и классический теханализ в реализации несметного количества индикаторов на МТ .... абсолютно бесполезные вещи ...

со мной не согласится 99% посетителей этого сайта, но достаточно задать простой вопрос каждому самому себе: вы заработали деньги с помощью этого всего ...?

не тратьте свое время и деньги на кухнофорексе ...

Доброго времени суток. Не знаю зачем такие люди как Вы занимаетесь Форексом? Пойди в какой нибудь бич-бар и напейся с горя! А технический анализ не трогай, он не для таких как ты... если бы человечество состояло из таких людей на 100% мы бы жили в каменном веке, даже в бронзовый век не перешли бы. Метаматематика была есть и будет царицей наук.
 
nav_soft:Доброго времени суток. Не знаю зачем такие люди как Вы занимаетесь Форексом? Пойди в какой нибудь бич-бар и напейся с горя! А технический анализ не трогай, он не для таких как ты... если бы человечество состояло из таких людей на 100% мы бы жили в каменном веке, даже в бронзовый век не перешли бы. Метаматематика была есть и будет царицей наук.

Своими словами я предполагал то, что 99% почитателей платформы - не задают себе простой вопрос: "в чем мое приемущество?" ...

Я вам отвечу .... его вообще нет, т.к платформа создавалась не для проффесиональных трейдеров ...

Вы, тем более, как автор статьи, жалко смотритесь со своими утверждениями .... зря вы подумали что я вашу статью пытаюсь дискредитировать .. я ее даже не читал ...

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

Вы же не задаете себе вопрос: а почему я пришел к такому выводу?

Я не стану говорить только потому, что меня забанят .... т.к это чуть ли не за антирекламу сочтется .... хотя вцелом мне даже все равно ...

... уважения к разработчикам я теперь совсем не испытываю, хотя платформу знаю еще с 2003 года ... они создали "опиум для народа" ....

 
korst:

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

Вы же не задаете себе вопрос: а почему я пришел к такому выводу?

Я не стану говорить только потому, что меня забанят .... т.к это чуть ли не за антирекламу сочтется .... хотя вцелом мне даже все равно ...

... уважения к разработчикам я теперь совсем не испытываю, хотя платформу знаю еще с 2003 года ... они создали "опиум для народа" ....

Я вообще то не понимаю Вашего "наезда"? Я Уважительно ответил на Ваше не по теме написанное сообщение, а именно сказал, что без Технического Анализа Рынка и Математических подходов человечество будет в каменном веке! А на счет торговой платформы отвечу так: MetaTrader 4 полностью подтверждает всю рекламу, которую я читал в интернете, и обеспечивает профессиональную работу с рынками. Легко адаптируется для любых не типовых задач проекта, и если у Вас что-то не получается это не разработчики виноваты, а Вы не знаете как организовать! А чтобы что-то знать надо не только по статьям лазить, но и читать буквари, которые в инете имеется в неограниченных количествах... Если Вас не устраивает MT 4, рекомендую TradeStation фирмы Omega Research, его обычно используют брокеры, зачем Вам такое ПО я даже не знаю... "они создали опиум для народа" - вообще не понимаю, что Вас так злит? Наверно просто нашли для себя оправдание? Так зачем всем об этом писать здесь??? Есть куча сайтов куда пишут как их обманули на Форексе! Вот присоединяйтесь к ним, тут Вам места нет, здесь люди которые не хотят останавливаться перед проблемами, они решают их сообща, это сайт разработчиков скриптов, индикаторов, экспертов для плаформы MetaTrader 4, и она такая какая есть!
 

Вы не уважительно ответили на сообщение .....

Сам я не на кого не наезжал .... раз вы так решили, ваша проблема внутри вас ..

То что, что-то как-то адаптируется, разницы большой не имеет ...

Я вам про платформу для профессиональной торговли говорил, а вы мне советуете платформу для теханализа ..... спасибо .. я тоже знаком со всей этой лажой ....

Еще раз задам вопрос: ответьте себе, вы заработали хоть сколько с помощью того, что сами написали (кроме денег за статью)?

Кэти Линн тоже на метатрейдере торгует? :)

Не питайте иллюзий .... профессиональную работу на рынках мт не обеспечивает в принципе - его природа - кухонная ...

Вы ж не реальные финансовые инструменты оборачиваете, а контрактами на разницу торгуете ...

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

На этом форуме нету не одного успешного (хотя бы 10% в месяц регулярно) трейдра для торговли на форекс .....я таких в принципе не знаю даже в просторах интернета, задайте вопрос, ...почему?

...

Это мой последний пост здесь ...

 

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