Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В библиотеке MQL5 уже больше 1500 программ. Поделись и ты своей!
cindyrella
52
cindyrella 2010.05.09 20:48 

Как я понимаю - индикаторы не умеют торговать - т.е. обращаться к соответствующим функциям.

Могу ли я в советнике использовать возможности рисования на графике?

Почему возникло разделение на 2 типа программ? Отчего не делать все в одной используя или нет те или иные функции?

Я новичок в MQL - поясните пожалуйста.

MetaQuotes
Админ
24889
Renat Fatkhullin 2010.05.09 21:05  

Из документации MQL5:

Программы, написанные на MetaQuotes Language 5, имеют различные свойства и предназначение:

  • Советник — это механическая торговая система (МТС), имеющая привязку к определенному графику. Советник запускается на выполнение при возникновении события, которое он может обработать: события инициализации и деинициализации, событие прихода нового тика, событие от таймера, событие от изменения стакана цен, события от графика и пользовательские события.
    Советник может не только работать в режиме информирования о возможности совершить сделку, но и автоматически совершать сделки на торговом счете, направляя их прямо на торговый сервер. Советники хранятся в директории каталог_терминала\MQL5\Experts.
  • Пользовательский индикатор — технический индикатор, самостоятельно написанный пользователем в дополнение к индикаторам, уже интегрированным в клиентский терминал. Пользовательские индикаторы, также как и встроенные, не могут автоматически торговать и предназначены только для реализации аналитических функций.
    Пользовательские индикаторы не могут использовать функции для работы с графиками и графическими  объектами. Пользовательские индикаторы хранятся в директории каталог_терминала\MQL5\Indicators
  • Скрипт — программа, предназначенная для одноразового выполнения каких-либо действий. В отличие от экспертов, скрипты не обрабатывают никаких событий, кроме события запуска (для этого в скрипте должна быть функция-обработчик OnStart). Скрипты хранятся в директории каталог_терминала\MQL5\Scripts
  • Библиотека — библиотека пользовательских функций, предназначенная для хранения и распространения часто используемых блоков пользовательских программ. Библиотеки не могут самостоятельно запускаться на выполнение.
    Библиотеки хранятся в директории каталог_терминала\MQL5\Libraries

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

Но у индикаторов, которые специально предназначены для отрисовки длинных последовательностей, есть масса уникальных и экономичных режимов отрисовки:

Идентификатор

Описание

Буферов значений

Буферов цвета

DRAW_NONE

Не отрисовывается

1

0

DRAW_LINE

Линия

1

0

DRAW_SECTION

Отрезки

1

0

DRAW_HISTOGRAM

Гистограмма от нулевой линии

1

0

DRAW_HISTOGRAM2

Гистограмма на двух индикаторных буферах

2

0

DRAW_ARROW

Отрисовка стрелками

1

0

DRAW_ZIGZAG

Стиль Zigzag допускает вертикальные отрезки на баре

2

0

DRAW_FILLING

Цветовая заливка между двумя уровнями

2

0

DRAW_BARS

Отображение в виде баров

4

0

DRAW_CANDLES

Отображение в виде свечей

4

0

DRAW_COLOR_LINE

Разноцветная линия

1

1

DRAW_COLOR_SECTION

Разноцветные отрезки

1

1

DRAW_COLOR_HISTOGRAM

Разноцветная гистограмма от нулевой линии

1

1

DRAW_COLOR_HISTOGRAM2

Разноцветная гистограмма на двух индикаторных буферах

2

1

DRAW_COLOR_ARROW

Отрисовка разноцветными стрелками

1

1

DRAW_COLOR_ZIGZAG

Разноцветный ZigZag

2

1

DRAW_COLOR_BARS

Разноцветные бары

4

1

DRAW_COLOR_CANDLES

Разноцветные свечи

4

1

cindyrella
52
cindyrella 2010.05.09 21:15  

Спасибо за ответ.

 

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

MetaQuotes
Админ
24889
Renat Fatkhullin 2010.05.09 21:20  
cindyrella:

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

Если нужен индикатор, то создаете индикатор через визард и кладете его в нужный каталог. Если нужен торгующий эксперт - создаете его.

Главным образом типы программ разделяются по каталогам, где они лежат (MQL5/Indicators, MQl5/Experts и тд). Это сделано для того, чтобы интерфейс программы мог разумно показывать в нужных местах списки индикаторов, скриптов и экспертов. 

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

cindyrella
52
cindyrella 2010.05.09 21:24  
Renat писал(а)  :

Если нужен индикатор, то создаете индикатор через визард и кладете его в нужный каталог. Если нужен торгующий эксперт - создаете его.

Главным образом типы программ разделяются по каталогам, где они лежат (MQL5/Indicators, MQl5/Experts и тд). Это сделано для того, чтобы интерфейс программы мог разумно показывать в нужных местах списки индикаторов, скриптов и экспертов. 

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

Спасибо.
Prival
4536
Prival 2010.05.12 22:19  

Пользовательские индикаторы не могут использовать функции для работы с графиками и графическими объектами.


странно как то. я что баг эксплуатирую у меня индикатор из одних графических объектов состоит. добавляет их и удаляет. Все работает
MetaQuotes
Админ
24889
Renat Fatkhullin 2010.05.12 23:42  
Prival:
странно как то. я что баг эксплуатирую у меня индикатор из одних графических объектов состоит. добавляет их и удаляет. Все работает

Индикаторы давно уже могут управлять графическими объектами - это в документации старая информация осталась.

Обязательно исправим.

Vladimir Batrudinov
4917
Vladimir Batrudinov 2010.05.13 02:41  
cindyrella писал(а)  :

Как я понимаю - индикаторы не умеют торговать - т.е. обращаться к соответствующим функциям.

Могу ли я в советнике использовать возможности рисования на графике?

Почему возникло разделение на 2 типа программ? Отчего не делать все в одной используя или нет те или иные функции?

Я новичок в MQL - поясните пожалуйста.

На мой взгляд самое большое различие индикаторов и советников состоит в:

1. Советник на график по идеи можно добавить только один, а индюков (в зависимости от их начинки и задачи) несколько;

2. Индикаторы не не умеют на прямую обращаться к торговым функциям (не дано им торговати).

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


PS

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

Rashid Umarov
Админ
11713
Rashid Umarov 2010.05.13 07:04  
Renat:

Индикаторы давно уже могут управлять графическими объектами - это в документации старая информация осталась.

Обязательно исправим.

Да, в этом месте осталось. Уберем.
Dmitry Voronkov
5724
Dmitry Voronkov 2010.05.13 09:45  
Interesting:

На мой взгляд самое большое различие индикаторов и советников состоит в:

1. Советник на график по идеи можно добавить только один, а индюков (в зависимости от их начинки и задачи) несколько;

2. Индикаторы не не умеют на прямую обращаться к торговым функциям (не дано им торговати).

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

PS

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

 

Самое большое отличие в том, что индикатор критичен ко времени исполнения, т.к. событие OnCalculate вызывается на каждом тике. И если производить слишком сложные расчеты, терминал начинает "тормозить".

Советнмк использует событие NewTick почитайте.

И кроме этого разница в обработке события OnDeinit. 

Vladimir Batrudinov
4917
Vladimir Batrudinov 2010.05.13 14:56  
vdv2001:

 

Самое большое отличие в том, что индикатор критичен ко времени исполнения, т.к. событие OnCalculate вызывается на каждом тике. И если производить слишком сложные расчеты, терминал начинает "тормозить".

Советнмк использует событие NewTick почитайте.

И кроме этого разница в обработке события OnDeinit. 

На счет сложных расчетов это понятно, подобные вещи я и назвал "РЯДОМ ОПРЕДЕЛЕННЫХ ОГРАНИЧЕНИЙ".
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий