Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание заголовочных файлов


Рекомендуемые сообщения

Для начала давайте сравним два кусочка кода.

Первый:

MQL
if (a==1) Event=1;

if (a==2) Event=3;

 

if (Event==1) OpOrder();

if (Event==3) ClOrder();

 

Правда, не очень понятно... Конечно, когда писалось, то было всё понятно, но по прошествии даже двух дней можно потерять нить...

 

А теперь второй:

MQL
#define ДвижениеВверх 1

#define ДвижениеВнииз 2

 

#define МожноПокупать 1

#define НужноЗакрывать 3

 

if (a==ДвижениеВверх) Событие=МожноПокупать;

if (a==ДвижениеВниз) Событие=НужноЗакрывать;

 

if (Событие==МожноПокупать) OpOrder();

if (Событие==НужноЗакрывать) ClOrder();

 

Вот теперь будет всё понятно даже через 10 лет и совершенно неважно какие цифры кроются в используемых константах, лишь бы они различались внутри групп использования. А для того, что бы постоянно не переписывать одни и те же константы при создании скриптов/индикаторов/советников, нужно выделить их в один заголовочный файл и после вставлять его во все свои произведения. Для информации, количество записаных констант в заголовочном файле никак не влияют на размер скомпиллированного файла, на скорость компилляции и исполнения. Т.е. в заголовочный файл можно писать своих констант сколько угодно, на все случаи жизни и работы :) .

 

Значит будем создавать заголовочный файл. Они имеют расширение .MQH. Создание заголовочного файла происходит по тому же сценарию, что и файл библиотеки (см. Создание библиотек), только в окне выбирается пункт "Заголовочный файл (*.MQH)". Сам файл компилляции не требует, ибо вставляется текстом в модуль перед компилляцией, где все константы заменяются соответствующими цифрами.

 

Вставляется готовый заголовочный файл в модуль очень просто:

MQL
/* в начале модуля добавляем такую строку */

#include <мои_константы.mqh>

/* или такую */

#include "мои_константы.mqh"

 

Как я уже говорил в топике "Основы языка MQL", если имя файла заключено в угловые скобки, то файл будет искаться в каталоге experts\include, а если имя файла заключено в кавычки, то такой файл должен лежать вместе с тем модулем, куда он вставляется.

Изменено пользователем Liv
Ссылка на комментарий
Поделиться на другие сайты

И так, начинаем.....

Все константы будут сгруппированы по назначению.

MQL
/* движение */

#define ДвижениеФлэт 0

#define ДвижениеВверх 1

#define ДвижениеВниз 2

#define ВершинаНаверху 3

#define ВершинаВнизу 4

#define ДостигнутМаксимум 5

#define ДостигнутМинимум 6

#define Перекрестие 7

 

/* события */

#define СобытийНет 0

#define ВозможнаПокупка 1

#define Покупка 2

#define ВозможнаПродажа 3

#define Продажа 4

 

Предлагайте свои константы для дополнения.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...