Комментарий в MQL

 Теперь можно приступить непосредственно к изучению операторов языка. Для начала рассмотрим оператор комментария.

 

Выглядит он так:<//>

 

(в редакторе угловые скобки писать не нужно, просто две наклонные черты). Это однострочный коменнтарий. Как его обрабатывает компилятор??? Другими словами, как выполняется этот оператор в исполняемом файле???

 

Ответ очень простой.... никак. Всё что после этого оператора компилятор пропускает.

 

Возникает вопрос: а зачем тогда он нужен???. Всё очень просто, этот оператор предназначен не для компьютера, а для человека. Если программа некомментированная, через какое то время достаточно сложно разобраться даже в своей собственной программе, не говоря уже о программах написанных другими.

 

В случае если программа комментирована,(хотя бы обозначены основные блоки,эта задача существенно упрощается.)Кроме однострочного комментария, в языке MQL существует многострочный, он состоит из двух частей. Выглядит это безобразие примерно так:

 

</*>тут текст комментария<*/>.

 

Разница между этими операторами думаю понятна из названия, если вы напишете к примеру так:

 

//это наш
комментарий Mql

 

компилятор выдаст ошибку, потому что он посчитает комментарием только первую строку "это наш", вторая же строка "комментарий" будет трактоваться компилятором как оператор языка. Правильно будет так:

 

// это наш
//комментарий Mql

 

или с ипользованием многострочного комментария:

 

/*
это наш
комментарий MqL
*/

 

Попробуйте самостоятельно проверить эти примеры в нашем учебном советнике. Надеюсь особых трудностей это не вызовет.Комментарии можно вставлять в любом месте программы, к примеру перед функцией start(), внутри её или после, это не имеет значения. Завершающий оператор <;> после комментария не нужен.

 

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


Что должен уметь любой советник???

 

Ну как минимум распознавать торговые сигналы, открывать и закрывать ордера. Но прежде чем открыть ордер необходимо определить размер лота, размеры стопов (стоп лосс и тейк профит), а так же проверить количество ордеров. (Если советник будет открывать ордера только по сигналам, не считаясь с размером депозита маржин колл обеспечен.)))))

 

Обратите внимание на фразу - " Открывать и закрывать ордера".  Думаю понятно что подразумевается наличие как минимум двух типов торговых сигналов (на открытие и закрытие) Попробуем записать это непосредственно в редакторе Mql, используя оператор комментария.

 

//Начало работы советника

//блок считывания сигнала на закрытие

//блок закрытия ордеров

//блок контроля ордеров

//блок считывания сигнала на открытие

//открытие позиции

//выход

 

Получился приблизительный алгоритм. Но этот алгоритм не очень понятный, при внимательном рассмотрении возникают несколько вопросов:

 

Начнём с блока считывания сигнала на закрытие. Тут возможны 2 варианта (в самом простом случае, либо сигнал есть, либо его нет) Если сигнал есть, всё понятно, переходим к следующему блоку (закрытия ордеров) А если сигнала нет, необходимо пропустить блок закрытия и перейти к следующему блоку.

 

Теперь блок контроля ордеров, по нашему алгоритму непонятно, как именно он будет работать.Далее идёт блок считывания сигнала на открытие. Ну тут ситуация аналогична сигналам на закрытие. Постараемся устранить эти вопросы.

 

// начало работы советника

//если есть сигнал на закрытие, закрываем позицию

//если сигнала нет переходим к блоку контроля ордеров


//блок контроля ордеров
/*
проверяем количество ордеров
высчитываем размер лота
рассчитываем стоп лосс
рассчитываем тейк профит
*/


//если нет возможности для открытия новой позиции завершаем работу советника
//если можно открыть позицию считываем сигнал на открытие

//если есть сигнал на открытие позиции открываем ордер.
//завершение работы советника

 

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

 

Но к этому вопросу мы ещё вернёмся, а пока перейдём к следующим операторам.

 

 

 Назад

 

 

TEXT.RU - 100.00%

Комментарии (0)

Нет комментариев. Ваш будет первым!

Яндекс.Метрика