Скачать MetaTrader 5

Работа с индикаторами из эксперта

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поделись своими разработками. Это увеличит твой рейтинг.
Mikhail Vdovin
1221
Mikhail Vdovin 2013.08.06 20:03 

Приветствую, Уважаемые!

 

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

Итак, есть задача из эксперта:

1.  добавить на график несколько индикаторов (например iMA)

2. изменять параметры этих индикаторов в процессе работы

3. удалить индикаторы с графика по завершению своей работы

 

пункт №1 решается в 2 строчки

indicator_handle=iMA(Symbol(), Period(), ma_period, ma_shift, MODE_EMA, PRICE_CLOSE);
ChartIndicatorAdd(0, 0, indicator_handle);

 

пункт №2:

Как из советника изменить тип, толщину линии созданного индикатора?

 

пункт №3:

Как по хендлу индикатора удалить его с графика? мне думалось что может помоч функция ChartIndicatorDelete, ан нет. ей нужно некое ShortName... Небыло бы логичным, удалять по хендлу, если по нему добавляли? 

Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - Документация по MQL5
Mikhail Vdovin
1221
Mikhail Vdovin 2013.08.07 08:56  

Тут есть кто то? или все торчат на форуме "работа" ? 

Sergey Pavlov
8952
Sergey Pavlov 2013.08.07 09:16  
micle:

Тут есть кто то? или все торчат на форуме "работа" ? 

2. никак, если в индикаторе нет таких входных переменных.

3.  зачем удалять индикатор из эксперта?

А вообще, читайте документацию и статьи. С конкретными вопросами обращайтесь сюда

Mikhail Vdovin
1221
Mikhail Vdovin 2013.08.07 09:48  
DC2008:

2. никак, если в индикаторе нет таких входных переменных.

3.  зачем удалять индикатор из эксперта?

А вообще, читайте документацию и статьи. С конкретными вопросами обращайтесь сюда

2. понятно

3. Это очевидно, если создали, нужно удалить... иначе при очередной инициализации, создадим ещё. и ещё... Получается нелепая ситуация, создать, добавить на график можем, причём легко и логично. А удалить только через ЖО?

Sergey Pavlov
8952
Sergey Pavlov 2013.08.07 09:56  
micle:

...

3. Это очевидно, если создали, нужно удалить... иначе при очередной инициализации, создадим ещё. и ещё... Получается нелепая ситуация, создать, добавить на график можем, причём легко и логично. А удалить только через ЖО?

Советник использует данные индикаторов для принятия каких-то торговых решений, поэтому выводить их на график цены нет смысла.
Mikhail Vdovin
1221
Mikhail Vdovin 2013.08.07 10:04  
DC2008:
Советник использует данные индикаторов для принятия каких-то торговых решений, поэтому выводить их на график цены нет смысла.

При работе с готовым советником, полностью с Вами согласен. А что делать, если я в поиске? Т.е. у меня есть идея, я ею занимаюсь. И хочу иметь видеть глазами что показывал индикатор в определённый момент в истории. Да, можно создать руками индюк, вогнать в него параметры... что если индикаторов несколько, я изменил параметры советника, мне ещё нужно аккуратно перенести все параметры _руками_ в созданные в ручную индикаторы.

Да, и парадокс таки остаётся.... Создавать можем, удалять... "не очень можем".

Anatoli Kazharski
56903
Anatoli Kazharski 2013.08.07 10:10  
micle:

...

Да, и парадокс таки остаётся.... Создавать можем, удалять... "не очень можем".

Можем. Только не по хендлу, а по короткому имени индикатора. Получить короткое имя можно с помощью функции ChartIndicatorName(), если Вы его не знаете. А если знаете то просто удалите с помощью функции ChartIndicatorDelete().

В общем, всё довольно просто. Хотя, если бы добавили удаление по хендлу, то было бы тоже неплохо (удобно). Пишите пожелание в Сервисдеск, может сделают.

Sergey Pavlov
8952
Sergey Pavlov 2013.08.07 11:03  
micle:

При работе с готовым советником, полностью с Вами согласен. А что делать, если я в поиске? Т.е. у меня есть идея, я ею занимаюсь. И хочу иметь видеть глазами что показывал индикатор в определённый момент в истории. Да, можно создать руками индюк, вогнать в него параметры... что если индикаторов несколько, я изменил параметры советника, мне ещё нужно аккуратно перенести все параметры _руками_ в созданные в ручную индикаторы.

Да, и парадокс таки остаётся.... Создавать можем, удалять... "не очень можем".

А Вы где проверяете свои торговые идеи: в тестере? Если ДА, то всё гораздо проще.
Mikhail Vdovin
1221
Mikhail Vdovin 2013.08.07 11:12  
DC2008:
А Вы где проверяете свои торговые идеи: в тестере? Если ДА, то всё гораздо проще.
я проверяю и в тестере и в торговле на демо. когда идея ещё не готова идти в тестер либо когда из тестера получены результаты, требующие дополнительных фильтров.
Mikhail Vdovin
1221
Mikhail Vdovin 2013.08.07 11:15  
tol64:

Можем. Только не по хендлу, а по короткому имени индикатора. Получить короткое имя можно с помощью функции ChartIndicatorName(), если Вы его не знаете. А если знаете то просто удалите с помощью функции ChartIndicatorDelete().

В общем, всё довольно просто. Хотя, если бы добавили удаление по хендлу, то было бы тоже неплохо (удобно). Пишите пожелание в Сервисдеск, может сделают.

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


ОК. я понял, что правильной функции для удаления индюка с графика не существует. Подскажите путь, где искать Сервисдеск?

Igor Konyashin
3110
Igor Konyashin 2013.08.07 11:17  

micle:

ОК. я понял, что правильной функции для удаления индюка с графика не существует. Подскажите путь, где искать Сервисдеск?

https://www.mql5.com/ru/users/micle/servicedesk
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий