Создание DLL для Metatrader 4 на языке C++
Страница 1 из 10 1 2 3 4 5 ... ПоследняяПоследняя
Показано с 1 по 10 из 92

Тема: Создание DLL для Metatrader 4 на языке C++

  1. #1
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 246
    Отправлено: 48

    Создание DLL для Metatrader 4 на языке C++

    Здравствуйте, коллеги!

    На этом замечательном форуме я веду ветку Программирование на MQL4 - это очень просто! Но, поскольку я программист довольно широкого профиля, ко мне обращаются по вопросам, которые напрямую не относятся к MQL4. И один из таких вопросов - как написать DLL для МТ4 и правильно сделать ее взаимодействие с советником. Я понимаю, что это вопрос не для полных новичков в программировании и поэтому мне хочется выяснить степень интереса к этому вопросу. Ведь если я начну объяснять такую сложную тему, то, естественно, я буду писать меньше статей по MQL4 для начинающих.

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

    Итак, достоинства:

    1. Резкое повышение быстродействия работы программы. Особенно, если у вас последние модели процессоров Intel. У Intel есть совершенно потрясающий компилятор и математические пакеты. Примерную оценку быстродействия я с год назад выкладывал вот тут, с тех пор все стало еще быстрее. Основная выгода будет, конечно, при тестировании и оптимизации советника, ведь вы знаете, что процесс это может длиться днями.
    2. Автоматическое использование многоядерности, причем различными способами. В MT5 это уже сделали, об этом писали вот тут
    3. Полный доступ к Windows API, то есть ко всем функциям.
    4. Возможность использования многопоточности.
    5. Возможность использования .NET Framework и различных библиотек для С++
    6. Создание панели управления, как отдельной программы и ее взаимодействие с терминалом.

    И недостатки:

    1. Необходимо изучить язык C++ хотя бы на уровне Си, то есть без классов можно в принципе обойтись. А это значит, что придется понять, что такое указатели и работа с памятью, хотя бы на начальном уровне.
    2. Повышенная сложность кода, так как надо обеспечивать взаимодействие между MQL4 и DLL.
    3. Нужно изучить работу в Visual Studio. Хотя, как раз тут я не вижу особых проблем.

    В общем, если вы пишете простенькие программы, скорее всего, вам это не надо. Тут я бы привел такое сравнение - если вам нужно только ходить в магазин за 300 метров, нет смысла сдавать на права и покупать автомобиль. Но если вы наматываете в день по 100 и более километров, без машины будет тяжело.

    Итак, жду ваши мнения в комментариях.

    Вы не можете благодарить!

  2. #2
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49
    Очень нужная тема. Буду ждать с нетерпением уроков

    Вы не можете благодарить!

  3. #3
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 246
    Отправлено: 48
    Сделал 2 каста, первый фактически повторяет то, что я написал в шапке и я его выкладывать пока не буду. А вот второй уже по делу - в нем я показываю, как запустить пример DLL из папки терминала МТ4. Честно говоря, давно не делал касты и подрастерял навыки, так что не судите строго )) Приходится говорить в быстром темпе и пропускать подробности, так как тема большая, а времени мало. Если что непонятно - спрашивайте, отвечу. Размер кино 1280*720, лучше переключиться на это разрешение, будет все хорошо видно.
    И просьба лайк мне на Ютубе поставьте))


    Вы не можете благодарить!
    Последний раз редактировалось Алексей Волчанский; 20.02.2013 в 15:09.

  4. #4
    Теоретик Аватар для Adver117
    Регистрация
    13.02.2012
    Адрес
    Риддер, Казахстан
    Сообщений
    697
    Promo (¢)
    0
    Благодарности
    Получено: 212
    Отправлено: 70
    Большое спасибо, Алексей за очень нужную тему.

    Вы не можете благодарить!

  5. #5
    Уже не гость
    Регистрация
    22.04.2013
    Сообщений
    2
    Promo (¢)
    30
    Благодарности
    Получено: 0
    Отправлено: 0

    Question printf

    Как мы видим, в DLL Sample используется функция printf:

    Код:
    MT4_EXPFUNC int __stdcall GetIntValue(const int ipar)
      {
       printf("GetIntValue takes %d\n",ipar);
       return(ipar);
      }
    Однако, я так и не понял, куда идёт вывод? Куда оно печатает? Окна консоли вроде как нет...

    Вы не можете благодарить!

  6. #6
    handrix
    Guest
    Цитата Сообщение от Rainman Посмотреть сообщение
    Однако, я так и не понял, куда идёт вывод? Куда оно печатает? Окна консоли вроде как нет...
    Обычно среда перенаправляет в стандартный поток, для приложения - это консоль,
    а для DLL этой в данном случае походу прямо в поток терминала, т.е. на стороне терминала что то типа gets() читает

    Вы не можете благодарить!

  7. #7
    Уже не гость
    Регистрация
    22.04.2013
    Сообщений
    2
    Promo (¢)
    30
    Благодарности
    Получено: 0
    Отправлено: 0
    Цитата Сообщение от handrix Посмотреть сообщение
    Обычно среда перенаправляет в стандартный поток, для приложения - это консоль,
    а для DLL этой в данном случае походу прямо в поток терминала, т.е. на стороне терминала что то типа gets() читает
    Непохоже, чтобы в MetaTrader4 было что-то вроде gets(), слишком уж он урезанный.
    Да и по логике: если авторы продукта пишут sample, и в нём используют printf, то оно должно иметь смысл! Иначе, какой же это пример??? Тогда это не пример автора будет, а поделка начинающего...

    Вы не можете благодарить!

  8. #8
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 246
    Отправлено: 48
    Цитата Сообщение от handrix Посмотреть сообщение
    Обычно среда перенаправляет в стандартный поток, для приложения - это консоль,
    а для DLL этой в данном случае походу прямо в поток терминала, т.е. на стороне терминала что то типа gets() читает
    А, надо уточнять. Разумеется, на стороне плюсов можно делать что угодно, но надо думать об связи с МТ4. Посмотрите в сторону cAlgo, платформа на уровне приличия
    Я ее пока изучаю, сделаю пару кастов, там мой любимый C#

    Вы не можете благодарить!

  9. #9
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 246
    Отправлено: 48
    Цитата Сообщение от Rainman Посмотреть сообщение
    Как мы видим, в DLL Sample используется функция printf:

    Код:
    MT4_EXPFUNC int __stdcall GetIntValue(const int ipar)
      {
       printf("GetIntValue takes %d\n",ipar);
       return(ipar);
      }
    Однако, я так и не понял, куда идёт вывод? Куда оно печатает? Окна консоли вроде как нет...
    Извини, просто не заметил сообщения. Не стал проверять, но, конечно, вывод мыслей в космос)))

    Вы не можете благодарить!

  10. #10
    Инсайдер Аватар для vipsint
    Регистрация
    06.10.2012
    Адрес
    Красная книга.
    Сообщений
    5,009
    Promo (¢)
    0
    Благодарности
    Получено: 2,092
    Отправлено: 1,665
    Алексей а можно написать такую библиотеку для МТ4 которая позволяла бы передвигать стопы мышкой. Есть правда такой скрипт но им неудобно пользоваться да и во многих конкурсах скрипты запрещены. Буду очень благодарен если такое возможно. Такая функция есть на МТ5 но на нее переходить я не хочу.

    Вы не можете благодарить!

Страница 1 из 10 1 2 3 4 5 ... ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •