Подключаемые файлы

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

Подключаемые файлы

Сообщение Haos » 28 янв 2019, 10:17

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

Прежде всего, необходимо создать новый файл и при выборе его типа указать "Включаемый файл (*.mqh)" (см. скрин ниже):

ПФ-01.png

Далее, нужно задать имя файла (для примера выберем имя fncNew):

ПФ-02.png


Нажимаем кнопку "Готово" и наш файл появляется в каталоге Include:

ПФ-03.png


Чтобы теперь подключить его к нашему советнику необходимо в верху кода (в списке препроцессорных установок, которые начинаются со спецификатора #), например, после
Код: выделить все
#property strict

прописать строку вида:
Код: выделить все
#include <имя_файла>

Где в качестве имя_файла указать fncNew.mqh, т.е.
Код: выделить все
#include <fncNew.mqh>

Угловые скобки обозначают, что файл fncNew.mqh будет взят из стандартного каталога (обычно это каталог_терминала\MQL4\Include). Текущий каталог не просматривается.

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

Подключаемые файлы

Сообщение Haos » 16 апр 2019, 14:28

Рассмотрим несложный пример.
Создадим включаемый файл с именем ExampInc.mqh и в нем пропишем функцию (назовем ее f_GetTriSpr) для подсчета суммарного спреда для трех валютных пар:
EURUSD, GBPUSD, EURGBP:
Код: выделить все
//+------------------------------------------------------------------+
//|                                                     ExampInc.mqh |
//|                                                             
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property strict
//+------------------------------------------------------------------+

int f_GetTriSpr()
{
   // функция возвращает суммарный спред по 3 парам
   
   return((int) MarketInfo("EURUSD", MODE_SPREAD) +
          (int) MarketInfo("GBPUSD", MODE_SPREAD) +
          (int) MarketInfo("EURGBP", MODE_SPREAD));
     
}


Сделаем новый эксперт и в пропишем в его коде строку #include <ExampInc.mqh> после строки #property strict:
Код: выделить все
#property strict
#include <ExampInc.mqh>

Далее в функции обработки тиков OnTick() пропишем строку для вывода в качестве комментария значение суммарного спреда:
Код: выделить все
void OnTick()
{
   Comment( "\n", "Суммарный спред: ", IntegerToString(f_GetTriSpr()));
}

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


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

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

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

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

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