Формулируем техническое задание на связь MQL4/5 с R

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

На сайте достаточно много материала по использованию R в трейдинге. Метаквоты не только признают полезность использования R, но и начали практические действия по портированию компонентов R в MQL5

На данной ветке я предлагаю коллективно сформулировать задание на связь между  MQL4/5  с R. Область межпрограммного взаимодействия для меня является довольно сложной, но думаю, что у меня достаточно знаний чтобы при помощи других форумян сформулировать техническое задание.

 

В настоящий момент для меня не совсем ясен объем и сложность будущей работы, но сразу же хочется обозначить цель:

  • цель минимум - помещение результата в кодобазу
  • цель максимум - помещение результата на зеркала GRAN для желающих сделать себе имя. 
Любой из этих вариантов исключает коммерческое использование полученного результата.

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


План следующий: 

  • Состояние вопроса
  •  Предполагаемая схема взаимодействия
  •  Сервер
  •  Клиент
  •  Техническое задание



 Итак поехали.

 

ПС.

Разного рода любителей поумничать на тему "полезность R" прошу не оставлять своих следов на этой ветке, а в случае все-таки появления таковых, прошу модераторов подчищать ветку.  

СанСаныч Фоменко
7353
СанСаныч Фоменко  

Состояние вопроса

 

 В настоящий момент имеется инструмент для взаимодействия советника/индикатора, написанных на МКЛ4 с  R. Помещен мною достаточно давно в кодобазу. Написано не мною. Написан на экзотическом на данный момент паскале, вроде бы имеется исходный текст на паскале.

Данный инструмент состоит из двух частей:

  • библиотеки для 32-разрядного процессора
  • файл .h, который содержит некоторый перечень функций, обеспечивающих обмен между советником и R.

 Там же имеется пример использования библиотеки в советнике. Кроме этого имеется пример индикатора,  написанный мною.

 Более развернутое применение указанной библиотеки имеется в статье по глубоким нейросетям Vladimir Perervenko.  Заодно можно посмотреть использование R.

Сама технология использования этой библиотеки следующая:

  • запускаем R. Делаем это обычно в секции OnInit
  • обмениваемся данными
  • исполняем некую символьную строку
  • по завершению закрываем R 

 

Довольно архаичная система, но работающая. На МТ5 мне не удалось запустить. Разбираться не стал. Вся эта конструкция довольно медленная и не соответствует канонам обмена между программными системами. 

 

Для ТЗ можно взять .h с перечнем функций. Во всяком случае здесь решается вопрос разных типов данных в R и МКЛ. Хотя МТ5 не ясно, что происходит с кодировкой символьных данных. 

 

Далее посмотрим ЧТО еще бывает и потом будем принимать решение. 

Alexey Volchanskiy
28767
Alexey Volchanskiy  
СанСаныч Фоменко:

Состояние вопроса

 

 В настоящий момент имеется инструмент для взаимодействия советника/индикатора, написанных на МКЛ4 с  R. Помещен мною достаточно давно в кодобазу. Написано не мною. Написан на экзотическом на данный момент паскале, вроде бы имеется исходный текст на паскале.

Там dll в скомпилированном виде, исходников на паскале нет. Я и не знал, что в кодобазу пускают скомпилированyые dll.

Alexey Volchanskiy
28767
Alexey Volchanskiy  
Alexey Volchanskiy:

Там dll в скомпилированном виде, исходников на паскале нет. Я и не знал, что в кодобазу пускают скомпилированyые dll.

Похоже, связь с R идет через OLE, т.к. используется oleaut32.dll. Ну раз R поддерживает OLE, подключить его достаточно просто.
СанСаныч Фоменко
7353
СанСаныч Фоменко  

  • Предполагаемая схема взаимодействия


Я предлагаю остановиться на схеме "клиент-сервер". Причину поймете чуть позже.

 Сам R имеет очень развитые инструменты взаимодействия со сторонними программными продуктами.

По-моему мнению, проблема, стоящая перед нами, гораздо уже всего того, что предлагает R, а именно:

1. Нам не нужно, чтобы R вызывал терминал

2. Желательно иметь готовый сервер.

3. Желательно иметь уже готовые решения с этим сервером

4. Желательно, чтобы уделялось достаточно большое внимание эффективности взаимодействия МКЛ и R.

 

Отсюда просматривается схема:

  • советник/индикатор - клиент - сервер - R

Среди пакетов R  имеется пакет RServe 

К этому пакету имеется несколько готовых клиентов, из которых я и предлагаю сформировать ТЗ, а затем реализовать клинент для МТ4/5.

 


CRAN - Package Rserve
  • cran.r-project.org
Simon Urbanek
СанСаныч Фоменко
7353
СанСаныч Фоменко  
Alexey Volchanskiy:

Там dll в скомпилированном виде, исходников на паскале нет. Я и не знал, что в кодобазу пускают скомпилированyые dll.

Не знаю. Когда я помещал, то запрета не было. Может кто из модератов прокомментирует. 
Dmitry Fedoseev
51656
Dmitry Fedoseev  
Остапа понесло...
Alexey Volchanskiy
28767
Alexey Volchanskiy  

Нашлись исходники dll, просто Сан Саныч дал там ссылку с именем "обсуждения" )) Посмотрел, да, Паскаль родимый, сделано в среде https://ru.wikipedia.org/wiki/Lazarus

С.С. - так в чем проблемы, используйте ее под МТ5, правда dll 32-битная, но наверно загрузится в 64-битную пятерку, попробуйте. Чего там еще-то интегрировать. 

СанСаныч Фоменко
7353
СанСаныч Фоменко  
Alexey Volchanskiy:
Похоже, связь с R идет через OLE, т.к. используется oleaut32.dll. Ну раз R поддерживает OLE, подключить его достаточно просто.
Посмотрел, прицепил паскаль. Может понадобится.
СанСаныч Фоменко
7353
СанСаныч Фоменко  
Alexey Volchanskiy:

Нашлись исходники dll, просто Сан Саныч дал там ссылку с именем "обсуждения" )) Посмотрел, да, Паскаль родимый, сделано в среде https://ru.wikipedia.org/wiki/Lazarus

С.С. - так в чем проблемы, используйте ее под МТ5, правда dll 32-битная, но наверно загрузится в 64-битную пятерку, попробуйте. Чего там еще-то интегрировать. 

Че-то не цепляется. Но это отдельная проблема. Сначала пишет, что библиотека 32-битная, а потом не находит и дает ссылку туда, где библиотека находится.

Хотелось бы что-то не уступающее, например, яве. 

Georgiy Merts
7906
Georgiy Merts  

А что такое есть в R, чего нет в MQL ?

На мой взгляд, после портирования ALGLIB на MQL необходимость в R отпала. И вместо не больно-то надежных связей через всякие OLE, лучше напрямую использовать возможности, предоставляемые ALGLIB