Повторное использование кода.

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Повторное использование кода

Сообщение Рэндом » 08 авг 2013, 06:52

Вы когда-нибудь замечали, что одни и те же функции вы используете в разных индикаторах или советниках. Например в советнике это может быть функция управления размером лота. Конечно можно ее постоянно копировать из кода в код, а можно создать библиотеку, которую будет достаточно подключить директивой #include. В MQL4 такая библиотека будет содержать отдельные функции и глобальные переменные. А что с MQL5? В нем у нас есть возможность использовать либо отдельные функции, либо классы. А когда лучше использовать классы? Есть правило позволяющие это понять. Если у вас есть несколько функций которые описывают логически связанные действия, то лучше их выделить в класс. Например, рассмотрим функцию управления капиталом по методу мартингейла с ограниченным количеством удвоений. Прежде всего нам понадобиться переменная в которой будет храниться количество удвоений, первый звоночек для того чтобы задуматься о создании класса. Далее, нам понадобиться функция расчета размера лота и две функции для записи и чтения текущего количества удвоений в глобальную переменную терминала. Это нужно для того, чтобы при выключение терминала значения текущих удвоений не пропадали. Вот теперь у нас есть все основания выделить этот функционал в отдельный класс.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Повторное использование кода

Сообщение Рэндом » 28 ноя 2013, 04:15

Повторное использование кода сильно сокращает время написания программ. Если вы некоторое время писали советники, то вы могли заметить, что некоторые функции вы используете раз за разом в разных советниках. Можно конечно использовать копипаст для таких функций, но есть более правильный путь. Оформить эти функции или классы (для МТ5) в отдельные библиотеки.

Библиотеки имеют расширение mqh и являются отдельными текстовыми файлами. Использовать их в своей программе можно директивой #include. Причем создание и использование библиотек схоже для МТ4 и МТ5. Библиотека включается в исходный код как текст. Это значит, что текст библиотеки как бы заменяет директиву #include. А это значит, что скомпилированный код является одним файлом. Все библиотеки хранятся в директории include.

Подытожить сказанное можно следующим: если вы пишете много кода для МТ, то вам желательно использовать библиотеки.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Повторное использование кода

Сообщение Haos » 31 мар 2014, 06:20

Рэндом писал(а):... Библиотека включается в исходный код как текст. Это значит, что текст библиотеки как бы заменяет директиву #include. А это значит, что скомпилированный код является одним файлом. Все библиотеки хранятся в директории include.
Подытожить сказанное можно следующим: если вы пишете много кода для МТ, то вам желательно использовать библиотеки.

Да, это очень хороший стиль программирования и он имеет еще один неоспоримый положительный момент. Часто приходится разрабатывать много похожих ТС в которых множество стандартных операций осуществляется а отличие занимает не больше четверти от всего кода. Используя классы или библиотеки можно свести время затраченное на разработку к минимуму, переключиться на тестирования нового советника и быстро понять его эффективность.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 72

Права доступа к форуму

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