Новая версия платформы MetaTrader 5 build 5830: общие улучшения - страница 14

 
Botan626 # :

Да, это так и есть, но почему с 1?

Спасибо, а с этим  https://www.mql5.com/ru/forum/508827/page11#comment_59712837 у нас что?

Да, проблема воспроизводится в Windows 10, но не в Windows 11.
 
Stanislav Korotky #:
А что, моё объяснение не катит?
Так это https://www.mql5.com/ru/forum/508827/page13#comment_59725963 было объяснение или предожение? Как я понял второе.
 
Stanislav Korotky #:
Для индикаторов с краткой формой OnCalculate можно последним опциональным параметром задавать хендл другого индикатора или тип цены, на основе которой считать индикатор (см. _AppliedTo).

Я нашёл, где это написано: здесь https://www.mql5.com/ru/docs/series/indicatorcreate в примечании.

Но это ведь относится к созданию индикатора IndicatorCreate, что есть возможность отправить в IndicatorCreate +1 дополнительный параметр при желании, а в справке IndicatorParameters не сказано, что если в индикаторе используется короткая форма OnCalculate, то IndicatorParameters будет возвращать ещё 1 дополнительный параметр.

И в моём примере последний параметр = 0, а PRICE_CLOSE = 1.
 

Я проверил, что возвращает IndicatorParameters, если в параметрах есть PRICE_CLOSE.


parameter 13: type = TYPE_INT, long_value = 1, double_value = 0, string_value = (null)

Как видим 1.

 
Botan626 #:
Да, это так и есть, но почему с 1?

С любого значения. Читайте документацию

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

Документация по MQL5: Перечисления / Основы языка
Документация по MQL5: Перечисления / Основы языка
  • www.mql5.com
Данные перечислимого типа enum относятся к некоторому ограниченному множеству данных. Определение перечислимого типа: Список значений представляет...
 
Botan626 #:

Я проверил, что возвращает IndicatorParameters, если в параметрах есть PRICE_CLOSE.


Как видим 1.

Читайте документацию

При вызове пользовательского индикатора из mql5-программы параметр Applied_Price или хэндл другого индикатора должен передаваться последним после всех предусмотренных пользовательским индикатором входных переменных.

И вообще, причём здесь "Новая версия платформы MetaTrader 5 build 5830"?
Документация по MQL5: iCustom / Технические индикаторы
Документация по MQL5: iCustom / Технические индикаторы
  • www.mql5.com
Возвращает хэндл указанного пользовательского индикатора. Параметры symbol [in]  Символьное имя инструмента, на данных которого будет...
 
Slava #:

С любого значения. Читайте документацию

Это я знаю. Но я считал, что все встроенные перечисления начинаются с 0, а ENUM_APPLIED_PRICE оказалось начинается с 1.

Например все эти:

Print(EnumToString((ENUM_BASE_CORNER)0));
Print(EnumToString((ENUM_ANCHOR_POINT)0));
Print(EnumToString((ENUM_TIMEFRAMES)0));
Print(EnumToString((ENUM_CHART_MODE)0));
Print(EnumToString((ENUM_LINE_STYLE)0));
CORNER_LEFT_UPPER
ANCHOR_LEFT_UPPER
PERIOD_CURRENT
CHART_BARS
STYLE_SOLID
 

Так мы про вызов индикатора говорим или про получение IndicatorParameters?

Я про IndicatorParameters говорил: https://www.mql5.com/ru/forum/508827/page13#comment_59722371

Почему IndicatorParameters передаёт +1 параметр последним и почему он равен 0?

Slava #:
И вообще, причём здесь "Новая версия платформы MetaTrader 5 build 5830"?
Я думал, это баг в IndicatorParameters.
 
Botan626 #:

Так мы про вызов индикатора говорим или про получение IndicatorParameters?

Я про IndicatorParameters говорил: https://www.mql5.com/ru/forum/508827/page13#comment_59722371

Почему IndicatorParameters передаёт +1 параметр последним и почему он равен 0?

Я думал, это баг в IndicatorParameters.

Ну так а почему правильное количество параметров - это баг, если последний дополнительный параметр реально может использоваться?

0 - значение для _AppliedTo, когда параметр не был задан (не может быть задан из-за полной формы OnCalculate).

Документация по MQL5: _AppliedTo / Предопределенные переменные
Документация по MQL5: _AppliedTo / Предопределенные переменные
  • www.mql5.com
Переменная _AppliedTo позволяет узнать в индикаторе тип данных, на которых он расcчитывается:   Пример: Смотри также...
 

Не знаю, практикуется ли в редакторах подсветка парных макросов #ifdef/#else/#endif, как с фигурными скобками. Если есть возможность, просьба добавить в MetaEditor. Спасибо.

Строка для поиска: Uluchshenie 159.