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

    Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
    Бонус за сообщение 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
     
    Сообщений: 13963
    Зарегистрирован: 29 мар 2014, 16:07
    Средств на руках: 453.00
    Группа: Главные модераторы
    Благодарил (а): 1832 раз.
    Поблагодарили: 5766 раз.

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

    Сообщение 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()));
    }

    Скомпилируем файл и запустим на выполнение (в левом верхнем углу увидим значение суммарного спреда):
    У вас нет доступа для просмотра вложений в этом сообщении.
    Аватар пользователя
    Haos
    Специалист MQL
     
    Сообщений: 13963
    Зарегистрирован: 29 мар 2014, 16:07
    Средств на руках: 453.00
    Группа: Главные модераторы
    Благодарил (а): 1832 раз.
    Поблагодарили: 5766 раз.


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

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

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

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

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