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

 
Botan626 #:

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

Это не является правилом. И значения элементов перечислений не обязаны идти подряд.
 
Stanislav Korotky #:
Это не является правилом. И значения элементов перечислений не обязаны идти подряд.

Добавлю.

//--- Print enumeration definition, structure variable or expression.
   PrintEnum<ENUM_APPLIED_PRICE>(); // https://www.mql5.com/ru/code/56055
 
fxsaber #:

Добавлю.

Да, в книге есть похожий функционал, в частности, в хедере EnumToArray.mqh - выше я приводил линк на главу, где приведена распечатка ENUM_APPLIED_PRICE.

 
Stanislav Korotky #:
если последний дополнительный параметр реально может использоваться?

Значит в справке IndicatorParameters забыли написать, что всегда будет ещё 1 параметр на выходе, если краткая форма OnCalculate?

Stanislav Korotky #:
0 - значение для _AppliedTo, когда параметр не был задан (не может быть задан из-за полной формы OnCalculate).
Если краткая форма OnCalculate и 
#property indicator_applied_price

не задано, то IndicatorParameters тоже возвращает +1 параметр с 0 значением, как я уже показал в своём примере: https://www.mql5.com/ru/forum/508827/page13#comment_59722371

---

_AppliedTo = 0 при любой форме OnCalculate, если indicator_applied_price не задано, а в этой строке в таблице только про вторую форму сказано, что будет 0.

Я добавил обе формы OnCalculate в свой индикатор из примера + indicator_applied_price + принт _AppliedTo, можно посмотреть, что будет печатать скрипт из примера в разных комбинациях (надо будет удалять индикатор с графика и заново добавлять).

Файлы:
 
Stanislav Korotky #:
Это не является правилом. И значения элементов перечислений не обязаны идти подряд.
Это ок, но теперь стало понятно, что PRICE_CLOSE = 1 не просто так, а потому что _AppliedTo может быть = 0.
 
Botan626 #:
Я добавил обе формы OnCalculate в свой индикатор из примера + indicator_applied_price + принт _AppliedTo, можно посмотреть, что будет печатать скрипт из примера в разных комбинациях (надо будет удалять индикатор с графика и заново добавлять).

В пределах одного индикатора нельзя использовать оба варианта функции OnCalculate.

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

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

b5836, возможно ли ускорить компиляцию с отключенной оптимизацией?

0 errors, 4 warnings, 9850 ms elapsed without optimizations, cpu='X64 Regular'                  4
0 errors, 4 warnings, 30259 ms elapsed, cpu='X64 Regular'                       4
 
Slava #:

В пределах одного индикатора нельзя использовать оба варианта функции OnCalculate.

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

Там в коде их переключать можно, я просто текст обоих добавил, сам индикатор откройте и посмотрите.

Документацию будете дополнять и исправлять?

 

b5836, зачем в подсказке среди полей/методов предлагаются конструкторы и деструктор?

struct A
{
  int i;
  A() {}
  ~A() {}
};

void OnStart()
{
  A a;
  
  a.A(); // 'A' - explicit constructor call not allowed
  
  a.
}
 
Botan626 #:

_AppliedTo = 0 при любой форме OnCalculate, если indicator_applied_price не задано, а в этой строке в таблице только про вторую форму сказано, что будет 0.

Патаму чта _AppliedTo имеет смысл только при краткой форме OnCalculate.