Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Названия цветов 4 страница




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

 

Одновременное использование

 

Существует также отличие в количестве программ разного вида, одновременно присоединённых в окно финансового инструмента.

Эксперт. В окне финансового инструмента одновременно можно присоединить только один эксперт; одновременное использование нескольких экспертов запрещено.

Скрипт. В окне финансового инструмента одновременно можно присоединить только один скрипт; одновременное использование нескольких скриптов запрещено.

Пользовательский индикатор. В окне финансового инструмента одновременно могут быть присоединены несколько индикаторов, не мешая работе друг друга.

Все виды программ могут быть одновременно запущены в одном окне финансового инструмента при условии соблюдения ограничений, имеющихся у каждого вида. Например, можно одновременно запустить на выполнение один эксперт, один скрипт и несколько индикаторов или один эксперт и один индикатор; но в одном окне нельзя запустить на выполнение несколько экспертов или несколько скриптов, независимо от наличия программ других видов.

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

Все виды программ могут создавать глобальные переменные клиентского терминала, доступные всем другим программам, запущенным в клиентском терминале, в том числе в окнах разных финансовых инструментов. Это позволяет скоординировать одновременную работу всех программ. Порядок использования глобальных переменных будет рассматриваться в разделе Переменные GlobalVariable.

 

 

Вызов программ на исполнение

 

Программы всех видов запускаются на выполнение только по инициативе пользователя. В языке MQL4 не существует возможности вызвать на исполнение эксперт, скрипт или индикатор программным способом.

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

Таблица 2. Основные свойства экспертов, скриптов и пользовательских индикаторов.

Свойство программы Эксперт Скрипт Индикатор
Продолжительность работы В течение длительного срока Однократно В течение длительного срока
Осуществление торговых операций Разрешено Разрешено Запрещено
Возможность отображения линий Нет Нет Есть
Одновременное использование нескольких программ одного вида Запрещено Запрещено Разрешено
Вызов на исполнение программным способом Запрещено Запрещено Запрещено

 

Таким образом, если нам понадобится программа, управляющая торговлей по некоторому алгоритму, то следует создать эксперт или скрипт, а если требуется графически отобразить некоторую зависимость, то необходимо использовать индикатор.

Редактор MetaEditor

 

В этом разделе рассматривается общий порядок создания прикладных программ с помощью редактора MetaEditor.

MetaEditor - это многофункциональный специализированный редактор, предназначенный для создания, редактирования и компиляции прикладных программ, написанных на языке MQL4. Редактор имеет дружественный интерфейс, позволяющий пользователю легко ориентироваться при написании и отладке программ.

Файловая система
MetaEditor хранит все исходные коды программ на MQL4 в своем собственном структурированом каталоге на жестком диске. Местонахождение программы на MQL4 определяется ее назначением: скрипт, советник, индикатор, включаемый файл (include) или библиотека (library).

 

Создание и использование программ
Создать первую программу на MQL4 очень просто, в этом Вам помогут встроенные помощники. Вы можете изменить шаблоны для создания скрипта, индикатора или советника. Созданный код будет автоматически сохранен в нужной папке файловой системы MetaEditor.

Файловая система

 

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

Все прикладные программы сосредоточены в директории Каталог_терминала\experts. Эксперты, скрипты и пользовательские индикаторы, которые трейдер предполагает использовать в практической работе, должны находиться в своих директориях (см. рис. 24). Эксперты находятся непосредственно в каталоге Каталог_терминала\experts, а скрипты и индикаторы - в поддиректориях Каталог_терминала\experts\scripts и Каталог_терминала\experts\indicators.

 


Рис. 24. Директории для хранения файлов, созданных пользователем.

Пользователь может по своему усмотрению создавать и другие директории и хранить в них некоторые свои файлы, однако использование готовых программ, находящихся в таких директориях, в клиентском терминале не предусмотрено.

 

Типы файлов

 

В языке MQL4 различают 3 типа файлов, несущих программный код: mq4, ex4 и mqh.

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

Файлы типа ех4 - это скомпилированная программа, готовая для практического использования в клиентском терминале. Для файлов этого типа возможность редактирования не предусмотрена. Если требуется внести изменения в программу, то необходимо обратиться к её исходному коду (файлу типа mq4), отредактировать его, а затем снова скомпилировать. По названию файла ех4 нельзя судить о том, к какому виду программ он относится - является ли он скриптом, экспертом или индикатором. Файлы ex4 могут использоваться как библиотечные.

Файлы типа mqh - включаемые файлы. Это - исходный текст часто используемых блоков пользовательских программ. Такие файлы могут включаться в исходные тексты экспертов, скриптов и пользовательских индикаторов на этапе компиляции. Обычно включаемые файлы содержат описания импортируемых функций (смотрите в качестве примера файлы stdlib. mqh или WinUser32.mqh), либо описания общих констант и переменных (stderror.mqh и WinUser32.mqh). Файлы типа mqh, как правило, хранятся в директории Каталог_терминала\experts\include.

Включаемые файлы называются так потому, что обычно их "подключают" на этапе компиляции к основному исходному файлу при помощи директивы #include. Несмотря на то что файлы типа mqh могут содержать исходный код программы и MetaEditor их компилирует, они не являются самостоятельными и самодостаточными, т.е. не требуют компиляции с целью получения исполняемых файлов типа ех4. В качестве включаемых файлов могут также использоваться файлы mq4, которые также должны храниться в каталоге Каталог_терминала\experts\include.

В навигаторе клиентского терминала в разделах "Советники", "Пользовательские индикаторы" и "Скрипты" высвечиваются только те имена файлов, которые имеют расширения ex4 и при этом находятся в соответствующем каталоге. Файлы, скомпилированные в более старой версии MetaEditor, не запускаются и отображаются серым цветом.

Существуют и другие виды файлов, не образующие законченную программу, но используемые при создании прикладных программ. Например, программу можно составить из нескольких отдельных файлов или использовать для этой цели ранее созданную библиотеку. Пользователь может создавать библиотеки пользовательских функций, предназначенных для хранения часто используемых блоков пользовательских программ. Библиотеки рекомендуется хранить в директории Каталог_терминала\experts\libraries. В качестве библиотечных могут быть использованы файлы mq4 и ex4. Библиотеки не могут самостоятельно запускаться на выполнение. Использование включаемых файлов более предпочтительно, чем использование библиотек, из-за дополнительных расходов компьютерных ресурсов при вызове библиотечных функций.

В первой части учебника "Введение в программирование на языке MQL4" нас будут интересовать файлы исходных текстов программ mq4 и скомпилированные файлы программ ех4.

Создание и использование программ

 

Прикладные программы на языке MQL4 - эксперты, скрипты и индикаторы - создаются с помощью редактора MetaEditor.

Исполняемый файл редактора MetaEditor (MetaEditor.exe) поставляется в составе клиентского терминала и находится в корневом каталоге терминала. Руководство по работе в редакторе MetaEditor открывается при нажатии клавиши F1. Здесь рассматриваются общие сведения, которые необходимы для создания новых программ. Открыть редактор для использования можно, например, кликнув по имени файла MetaEditor.exe или по ярлыку, предварительно расположенному на рабочем столе.

Структура клиентского терминала

 

Для удобства работы в редактор MetaEditor встроены панели "Навигатор"(Ctrl+D) и "Инструментарий" (Ctrl+T).


Рис. 25. Расположение окон в редакторе MetaEditor.

Текст программы располагается в окне редактирования, а окна инструментария и навигатора имеют вспомогательное значение. Окна навигатора и инструментария имеют подвижные границы и могут быть отображены/скрыты в редакторе с помощью кнопок и .

Создание новой программы

 

Обычно при создании новой программы окна инструментария и навигатора остаются скрытыми, и внимание программиста сосредоточено на создаваемой программе. Для создания новой программы необходимо воспользоваться пунктом меню редактора Файл >> Создать или кнопкой создания новых файлов .

В результате этого действия "Мастер создания Советника " предложит выбрать вид создаваемой программы:

 


Рис. 26. Выбор вида программы при её создании.

Если требуется создать эксперт, то необходимо сделать отметку в графе Советник и нажать кнопку Далее. В следующем окне необходимо вписать название создаваемого эксперта. Пусть этот эксперт называется create.mq4.

Имя создаваемого файла указывается без расширения (указания типа).

Мастер создания советника выведет окно, в котором необходимо заполнить несколько полей ввода:


Рис. 27. Окно для указания общих параметров советника.

После клика по кнопке Готово в основном окне отобразится некоторый набор текста и одновременно с этим в файловой системе и в окне навигатора появится полноценное название созданного нами эксперта create.mq4.


Рис. 28. Отображение созданного файла эксперта в файловой системе и в окне навигатора.

Посмотрим какой текст программы был сгенерирован редактором MetaEditor:

//+------------------------------------------------------------------+

//| create.mq4 |

//| John Smith |

//| www.company.com |

//+------------------------------------------------------------------+

#property copyright "John Smith"

#property link "www.company.com"

 

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

Легко увидеть, что в этом коде содержатся в основном комментарии. Мы уже знаем, что комментарии являются необязательной частью программы и текст, содержащийся в комментариях, программой не обрабатывается.

В программе имеются три специальные функции (init(), start() и deinit()), содержанием каждой из которых является всего один оператор return(0) выхода из функции. Таким образом, код программы, сгенерированный мастером создания советников, являет собой лишь шаблон, используя который программист может создать новую программу. Конечный код программы не обязательно должен содержать все указанные специальные функции. Они представлены в программе мастером создания программ лишь потому, что обычная программа средней сложности как правило содержит все эти функции. Если же использование какой-либо из функций не предполагается, то её описание можно удалить.

Следующие строки в коде программы также можно опустить:

#property copyright "John Smith"
#property link "www.company.com"

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

Внешний вид программы

 

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

Корректно составленная программа обязательно содержит комментарии.

Основные достоинства комментариев состоят в следующем:

Во-первых, комментарии позволяют отделить одну логически обособленную часть программы от другой. Гораздо легче читать удобно форматированный текст, нежели текст, составленный сплошным потоком.

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

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

Каждый программист по своему вкусу может выбрать любой удобный ему стиль комментариев. Стиль, предлагаемый разработчиками языка MQL4, представлен в эксперте create.mq4. Рассмотрим основные особенности любого приемлемого стиля оформления программы.

1. Длина строки кода не должна превышать размер основного окна. Это ограничение не является формальным требованием синтаксиса языка, однако чтение программы, содержащей длинные строки, очень неудобно. Любую длинную строку всегда можно расположить в несколько программных строк, так, чтобы все они были полностью видны на экране. Для монитора с разрешением 1024 х 768 пикселей максимальная длина строки составляет 118 символов.

2. Объявление переменных осуществляется в начале программы. К каждой переменной желательно дать описание в комментарии: кратко отметить сущность и (если необходимо) особенности использования переменной.

3. Каждый оператор желательно располагать в отдельной строке.

4. Построчный комментарий, если он присутствует в строке, должен начинаться с 76 позиции (рекомендуется для мониторов 17" с разрешением 1024 х 768 пикс.). Это требование также не является обязательным. Например, если строка кода занимает 80 позиций, то её не обязательно разбивать на две строки, можно написать комментарий, начиная с 81 позиции. Обычно содержательная часть программы (код) составляют строки длиной около 50 символов, поэтому построчный комментарий выглядит как столбец текста в правой части экрана.

5. Для разделения логически обособленных фрагментов используются строки комментария на всю ширину (118 символов).

6. При использовании фигурных скобок обязательно используется отступ на величину табуляции (обычно 3 символа).

Посмотрим как может выглядеть эксперт после того, как в него вписан программный код. В данном случае логика программного алгоритма не обсуждается. Здесь важно отметить только подробности оформления программы. Комментированная программа (эксперт create.mq4) может выглядеть, например, так:

//--------------------------------------------------------------------

// create.mq4

// Предназначен для использования в качестве примера в учебнике MQL4.

//--------------------------------------------------------------------

int Count=0; // Глобальная перемен.

//--------------------------------------------------------------------

int init() // Спец. ф-ия init()

{

Alert ("Сработала ф-ия init() при запуске"); // Сообщение

return; // Выход из init()

}

//--------------------------------------------------------------------

int start() // Спец. ф-ия start()

{

double Price = Bid; // Локальная перемен.

Count++; // Счётчик тиков

Alert("Новый тик ",Count," Цена = ",Price);// Сообщение

return; // Выход из start()

}

//--------------------------------------------------------------------

int deinit() // Спец. ф-ия deinit()

{

Alert ("Сработала ф-ия deinit() при выгрузке"); // Сообщение

return; // Выход из deinit()

}

//--------------------------------------------------------------------

Легко увидеть, что законченные смысловые блоки программы отделены друг от друга комментарием - сплошной строкой. Таким способом выделяются специальные, пользовательские функции и головная часть программы:

//--------------------------------------------------------------------

Объявление переменных выполняется в отдельном блоке, причём каждая переменная описана. Иногда в программе используются переменные, для объяснения смысла которых приходится использовать комментарий в несколько строк. Такое случается редко, но при необходимости делать это нужно обязательно, иначе не только другой программист, но и автор программы не сможет в ней разобраться по прошествии некоторого срока.

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

int Count=0;

int init() {

Alert ("Сработала ф-ия init() при запуске");

return; }

int start() {

double Price = Bid;

Count++;

Alert("Новый тик ",Count," Цена = ",Price);

return; }

int deinit(){

Alert ("Сработала ф-ия deinit() при выгрузке");

return;}

Компиляция программы

 

Чтобы программу можно было использовать на практике, её необходимо скомпилировать. Для этого нужно воспользоваться кнопкой (F5) в редакторе MetaEditor. Если в программе нет ошибок, то программа будет скомпилирована, а в окне инструментария появится сообщение:


Рис. 29. Сообщение редактора об успешной компиляции программы.

 

При этом в соответствующем каталоге (в данном случае в Каталог_терминала\experts) появится новый файл create.ex4. Это - программа, готовая к работе в клиентском терминале MetaTrader 4. В момент компиляции в том же каталоге сохранится также последняя редакция исходного текста программы с тем же названием, в нашем случае - это файл create.mq4.

Одновременно с этим в окне навигатора клиентского терминала, в разделе Советники появится строка с названием созданного эксперта:


Рис. 30. Отображение названия эксперта в окне навигатора клиентского терминала.

Если при компиляции в программе будут обнаружены ошибки, то редактор MetaEditor выдаст соответствующее сообщение об ошибке. В таком случае необходимо вернуться к редактированию исходного текста программы, исправить ошибки и попытаться снова скомпилировать программу. Успешная компиляция программы возможна только в случае, если в ней нет ошибок.

Использование программы в практической работе

 

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

Эксперт и индикатор будут оставаться в работе до тех пор, пока пользователь вручную не прекратит работу программы. Обычный скрипт, после выполнения заложенного в него алгоритма, самостоятельно прекратит свою работу.

Здесь необходимо ещё раз подчеркнуть, что:

Любые прикладные программы (эксперт, скрипт, индикатор) могут быть использованы для торговли только в составе клиентского терминала MetaTrader 4 при условии его подключения к серверу (дилинговому центру) с помощью сети Интернет; никакие программы не могут быть установлены пользователем на сервере или использоваться в терминалах других производителей.

Иными словами, если трейдер хочет использовать в своей работе какую-либо прикладную программу, он должен включить свой компьютер, открыть клиентский терминал MetaTrader 4 и запустить в окне финансового инструмента исполняемый файл *.ex4. При исполнении программы (в зависимости от её алгоритма) могут быть сформированы торговые приказы, которые будут отправлены на сервер, в результате чего и будет осуществляться управление торговлей.

Программа на MQL4

 

С самого начала следует заметить, что программирование на языке MQL4 вполне по силам обычному человеку, хотя и требует внимания и определённых знаний.

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

Процесс составления программ на MQL4 - это выполнение простой и понятной работы. Например, водителю автомобиля необязательно уметь разбираться в устройстве двигателя, чтобы ездить на автомобиле, - достаточно научиться давить на педали и крутить руль. Вместе с тем, каждый водитель, прежде чем выехать на дорогу с оживлённым движением, проходит обучение. Приблизительно то же необходимо сделать и начинающему программисту - освоить некоторые простые принципы построения программ, и - можно начинать потихоньку "ездить".

Структура программы
Несмотря на многообразие программ на MQL4, все они имеют общие черты. Можно сказать, что в основе правильно написанного кода лежит правильная структура. Поэтому необходимо понимать из чего складывается программа.

Специальные функции
Есть множество функций, встроенных в язык MQL4. Такие функции называются стандартными функциями языка. Но среди них есть несколько наиболее важных, которые называют специальными. Без них невозможна работа программы, и каждая из этих функций имеет свое предназначение.

Выполнение программы
Необходимо правильно понимать как работает MQL4-программа. Не все части кода используются одинаково часто. Какие функции выполняются в первую очередь, где лучше разместить основную часть программы, какой тип программы использовать для тех или иных целей?

Примеры реализации
Осваивать новый язык лучше всего на примерах. Как написать правильно простую программу? Какие ошибки можно совершить при этом?

Структура программы

 

Ранее мы ознакомились с основными понятиями, на которых базируется язык программирования MQL4. Теперь необходимо рассмотреть, как устроена программа в целом. Изучая этот вопрос, мы рассмотрим её структурную схему.

Как уже упоминалось, основной код программы, составленный программистом, располагается внутри пользовательских и специальных функций. В разделе Функции мы рассматривали понятие и свойства встроенных и пользовательских функций. Кратко напомним, что пользовательская функция имеет описание, а для запуска её на исполнение в программе используется вызов функции. Любая встроенная или пользовательская функция может быть исполнена только в результате обращения к ней; в этом случае говорят, что функция вызвана для исполнения программой.

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




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 320; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.107 сек.