Ошибки, баги, вопросы - страница 1178

 
svds75:
Нет задавать мне нужно в ручную, а проверять программно.
Тогда надо читать флаг видимости и делать логическое & с константой.
 

Вот так:

   long cf=ObjectGetInteger(0,"name",OBJPROP_TIMEFRAMES);
   Alert(((cf&OBJ_PERIOD_H1)==OBJ_PERIOD_H1) || cf==0);
Если флаг видимости на H1 установлен, будет true.
 
Integer:
Тогда надо читать флаг видимости и делать логическое & с константой.

Если Вы имеете в виду:

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&OBJ_PERIOD_MN1,res);

Или

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&&OBJ_PERIOD_MN1,res);
Тоже самое.
 
svds75:

Если Вы имеете в виду:

Или

Тоже самое.
Не. Делать get с перечисление ненадо. Просто get, а потом смотреть, установлен ли флаг нужного таймфрейма. Выше привел пример.
 
svds75:

Если Вы имеете в виду:

Или

Тоже самое.

Ваша ошибка в вот тут bool(res), т.к. res всегда больше 1 при любом отображении, посмотрите что возвращается в рез, тем самым bool(res) выдаст 0 или false только в случае когда res=0

Вы невнимательно используете преобразование типов и сравнение

OBJ_NO_PERIODS

0

Объект не показывается ни на одном таймфрейме

OBJ_PERIOD_M1

0x00000001

Объект рисуется на 1-минутных графиках

OBJ_PERIOD_M2

0x00000002

Объект рисуется на 2-минутных графиках

OBJ_PERIOD_M3

0x00000004

Объект рисуется на 3-минутных графиках

OBJ_PERIOD_M4

0x00000008

Объект рисуется на 4-минутных графиках

OBJ_PERIOD_M5

0x00000010

Объект рисуется на 5-минутных графиках

OBJ_PERIOD_M6

0x00000020

Объект рисуется на 6-минутных графиках

OBJ_PERIOD_M10

0x00000040

Объект рисуется на 10-минутных графиках

OBJ_PERIOD_M12

0x00000080

Объект рисуется на 12-минутных графиках

OBJ_PERIOD_M15

0x00000100

Объект рисуется на 15-минутных графиках

OBJ_PERIOD_M20

0x00000200

Объект рисуется на 20-минутных графиках

OBJ_PERIOD_M30

0x00000400

Объект рисуется на 30-минутных графиках

OBJ_PERIOD_H1

0x00000800

Объект рисуется на 1-часовых графиках

OBJ_PERIOD_H2

0x00001000

Объект рисуется на 2-часовых графиках

OBJ_PERIOD_H3

0x00002000

Объект рисуется на 3-часовых графиках

OBJ_PERIOD_H4

0x00004000

Объект рисуется на 4-часовых графиках

OBJ_PERIOD_H6

0x00008000

Объект рисуется на 6-часовых графиках

OBJ_PERIOD_H8

0x00010000

Объект рисуется на 8-часовых графиках

OBJ_PERIOD_H12

0x00020000

Объект рисуется на 12-часовых графиках

OBJ_PERIOD_D1

0x00040000

Объект рисуется на дневных графиках

OBJ_PERIOD_W1

0x00080000

Объект рисуется на недельных графиках

OBJ_PERIOD_MN1

0x00100000

Объект рисуется на месячных графиках

OBJ_ALL_PERIODS

0x001fffff

Объект рисуется на всех таймфреймах

 

 
Integer:

Вот так:

Если флаг видимости на H1 установлен, будет true.
Заработало спасибо.
 
meat:

В продолжение своего прошлого поста.  Методом научного тыка мне удалось отыскать проблемное место, приводящие к багу.

Имеем такую библиотеку с функцией:

А вот основной файл:

 Получившийся советник не работает, в логе выдаётся: "EX5 loading failed"

Спасибо за сообщение, исправлено.
 

Добрый день. Я зациклил советник в  функции OnInit   и видимо из-за этого терминал при выключении советника и изменении тайм-фрейма виснет(тайм фрейм после тормозов так  и не меняется). Так вот вопрос: Причиной является зацикленность? Если да , то исправится ли проблема , если перенесу алгоритм в OnTiick? Если нет, то что поможет?

 PS: В цикле есть ф-ция Sleep,так что терминал не перегружается. В цикле считываются поля ввода. 

 
king20:

Добрый день. Я зациклил советник в  функции OnInit   и видимо из-за этого терминал при выключении советника и изменении тайм-фрейма виснет(тайм фрейм после тормозов так  и не меняется). Так вот вопрос: Причиной является зацикленность? Если да , то исправится ли проблема , если перенесу алгоритм в OnTiick? Если нет, то что поможет?

 PS: В цикле есть ф-ция Sleep,так что терминал не перегружается. В цикле считываются поля ввода. 

Отформатировать жесткий диск.
 
king20:

Добрый день. Я зациклил советник в  функции OnInit   и видимо из-за этого терминал при выключении советника и изменении тайм-фрейма виснет(тайм фрейм после тормозов так  и не меняется). Так вот вопрос: Причиной является зацикленность? Если да , то исправится ли проблема , если перенесу алгоритм в OnTiick? Если нет, то что поможет?

 PS: В цикле есть ф-ция Sleep,так что терминал не перегружается. В цикле считываются поля ввода. 

OnInit - служит только для инициализации. Все расчеты нужно проводить дальше - OnTick, OnTimer и т.д.

 Если нужно знать изменение в поле ввода - для этого есть стандартная библиотека: https://www.mql5.com/ru/docs/standardlibrary/controls/cedit

Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
  • www.mql5.com
Стандартная библиотека / Классы для создания панелей и диалогов / CEdit - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: