Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1511

 

Всем привет.

Подскажите, если у меня в коде я несколько раз получаю  CopyRates, SymbolInfoDouble

Например для одного скрипта я получаю 10 баров с Н1, 10 баров с М15 и 10 баров с Н4, для другого скрипта я получаю 4 бара М15, так же есть CopyBuffer для АО.

Меня смущает то что в случае ошибки одного из них вся логика дальше пойдет по одному месту. Вопрос в том насколько часто это глючит например  CopyRates, есть ли смысл сделать отдельный скрипт который в начале все это сперва чекается -  все  CopyRates, SymbolInfoDouble,  CopyBuffer и если хоть в одном есть ошибка то просто начинает заново, и только после того как все вернули тру, раскидывает их по нужным местам и погнала уже работать логика..?

 

В свойствах индикатора есть возможность скрыть его на любых таймфреймах.


Как это сделать программно?

 
Aleksandr Slavskii #:

В свойствах индикатора есть возможность скрыть его на любых таймфреймах.


Как это сделать программно?

OBJPROP_TIMEFRAMES

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства...
 
Artyom Trishkin #:

OBJPROP_TIMEFRAMES

Это для объектов.

ObjectSetInteger(0, name, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);

Линии индикаторов в списках объектов не отображаются.

Я не пойму какое имя мне здесь указать, чтоб скрыть линию индикатора.

Или надо использовать какую то другую функцию?

 
Aleksandr Slavskii #:

Это для объектов.

Линии индикаторов в списках объектов не отображаются.

Я не пойму какое имя мне здесь указать, чтоб скрыть линию индикатора.

Или надо использовать какую то другую функцию?

да уж, сложный вопрос ).. Может цвет на невидимый ставить

indicator_colorN

, в зависимости от ТФ.

При смене ТФ переинициализация ведь идёт и рекалькуляция. Отображение расчёты соответсвенно могут поехать..

От индикатора ещё зависит.. может у вас стрелки ), тогда решение выше подойдет.

По словам модераторов, нет опции чтобы программно скрыть на любых ТФ " It's not possible to set an indicator visualization timeframes by code.

 
Aleksandr Slavskii #:

Это для объектов.

Линии индикаторов в списках объектов не отображаются.

Я не пойму какое имя мне здесь указать, чтоб скрыть линию индикатора.

Или надо использовать какую то другую функцию?

Не доглядел вопрос. Думал, про объекты.

Про индикаторы не подскажу, самому интересно стало...

 
Denis Karavaev #:

да уж, сложный вопрос ).. Может цвет на невидимый ставить

indicator_colorN

, в зависимости от ТФ.

При смене ТФ переинициализация ведь идёт и рекалькуляция. Отображение расчёты соответсвенно могут поехать..

От индикатора ещё зависит.. может у вас стрелки ), тогда решение выше подойдет.

По словам модераторов, нет опции чтобы программно скрыть на любых ТФ " It's not possible to set an indicator visualization timeframes by code.

Плохо.

Значит остаются только два варианта.

Менять цвет на невидимый

PlotIndexSetInteger(0, PLOT_LINE_COLOR, 0, DRAW_NONE);

или задавать невидимый стиль отрисовки

PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE);

Второй вариант проще, так как цветов у одного стиля может быть несколько, например DRAW_COLOR_CANDLES их аж три штуки имеет и придётся перекрашивать каждый.

А стиль один раз сделал невидимым и усё.

Ну и ладно, будем работать с тем, что есть)

 
Alexander Voronkov #:

Немного опоздал...)

Всё равно спасибо  ;-)
 
Aleksandr Slavskii #:

Плохо.

Значит остаются только два варианта.

Менять цвет на невидимый

или задавать невидимый стиль отрисовки

Второй вариант проще, так как цветов у одного стиля может быть несколько, например DRAW_COLOR_CANDLES их аж три штуки имеет и придётся перекрашивать каждый.

А стиль один раз сделал невидимым и усё.

Ну и ладно, будем работать с тем, что есть)

по идее индикатор у Вас останется и все равно будет в окне данных и все равно будет происходить расчет и отрисовка невидимыми линиями

учитывая то, что при переключении ТФма, происходит переинициализация, наверное лучше не инициализировать?

При возврате значения INIT_FAILED индикатор не будет выгружен с графика. При этом оставшийся на графике индикатор является нерабочим — обработчики событий в индикаторе не вызываются.

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

ArrayInitialize(buf,EMPTY_VALUE);

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий . Функции для обработки этих событий должны быть определены в программе...
 
Renat Akhtyamov #:

по идее индикатор у Вас останется и все равно будет в окне данных и все равно будет происходить расчет и отрисовка невидимыми линиями

учитывая то, что при переключении ТФма, происходит переинициализация, наверное лучше не инициализировать?

При возврате значения INIT_FAILED индикатор не будет выгружен с графика. При этом оставшийся на графике индикатор является нерабочим — обработчики событий в индикаторе не вызываются.

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

ArrayInitialize(buf,EMPTY_VALUE);

Ну в принципе да, интересный вариант скрытия индикатора.

Возьму на заметку.