Новички, с какими трудностями в программировании на MQL вы сталкиваетесь в 2025 году? - страница 16

 
MrBrooklin #:

Специально проверял на оптимизаторе с пошаговым проходом. Ставлю индикаторы в списке в хаотичном порядке, а нумерация хендла, как начиналась с десяти, так и шла по порядку. Понятное дело, что этих у индикаторов расположенных в списке, при перестановке, также менялся номер.

Значения меньше 10 зарезервированы за стандартными типами цен - об этом есть в книге.

MrBrooklin #:

И ещё один момент. Чем дескриптор, он же хэндл, тогда отличается от магического номера советника, кроме того, что мэджик задаем вручную? )

Смыслом и особенностями применения.

Все равно что спрашивать, чем 100 штук рублей отличается от 100 штук рабочих часов.

 
Stanislav Korotky #:

Значения меньше 10 зарезервированы за стандартными типами цен - об этом есть в книге.

Смыслом и особенностями применения.

Все равно что спрашивать, чем 100 штук рублей отличается от 100 штук рабочих часов.

Спасибо, Станислав! Коротко, но понятно. Правда, чтобы рабочие часы измерялись штуками не слышал, но смысл всё равно понятен. ) 

С уважением, Владимир.

 
Koldun Zloy #:
Они не обязаны идти по порядку.

Перепроверил себя, т.к. уже отложилось в голове, что идут по порядку. На скриншоте хорошо видно, что если смотреть на индикаторы сверху вниз по порядку, то и их нумерация также идёт по порядку. Как бы не переставлял их метами, всё равно у верхнего индикатора хэндл - 10, у второго сверху - 11 и т.д до последнего, у которого хэндл - 16. )


Не исключаю, что это всего лишь совпадение, которое происходит у меня каждый раз. ))

На всякий случай помещу код. А вдруг у кого-нибудь получится  по другому:

//+------------------------------------------------------------------+
//|                                                          111.mq5 |
//+------------------------------------------------------------------+
void OnTick()
  {
   int MACD = iMACD(_Symbol, PERIOD_CURRENT, 10, 5, 3, PRICE_CLOSE);
   int Envelopes = iEnvelopes(_Symbol, PERIOD_CURRENT, 10, 0, MODE_SMA, PRICE_CLOSE, 2.0);
   int MFI = iMFI(_Symbol, PERIOD_CURRENT, 10, VOLUME_TICK);
   int MA = iMA(_Symbol, PERIOD_CURRENT, 10, 0, MODE_SMA, PRICE_CLOSE);
   int Momentum = iMomentum(_Symbol, PERIOD_CURRENT, 10, PRICE_CLOSE);
   int Bands = iBands(_Symbol, PERIOD_CURRENT, 10, 0, 2.0,PRICE_CLOSE);
   int DeMarker = iDeMarker(_Symbol, PERIOD_CURRENT, 10);
  }
//+------------------------------------------------------------------+

С уважением, Владимир.

[Удален]  
MrBrooklin #:

Перепроверил себя, т.к. уже отложилось в голове, что идут по порядку. На скриншоте хорошо видно, что если смотреть на индикаторы сверху вниз по порядку, то и их нумерация также идёт по порядку. Как бы не переставлял их метами, всё равно у верхнего индикатора хэндл - 10, у второго сверху - 11 и т.д до последнего, у которого хэндл - 16. )


Не исключаю, что это всего лишь совпадение, которое происходит у меня каждый раз. ))

На всякий случай помещу код. А вдруг у кого-нибудь получится  по другому:

С уважением, Владимир.

Я не понимаю, зачем Вы это делаете.
Суть хэндла в том, что мы не должны воспринимать его как число.
Для нас это просто некий маркер объекта. И абсолютно не важно как они идут в данный момент.

 
В программировании нет ничего сложного, если не углубляться в ненужную муть вроде ООП. Вы просто продумываете порядок действий, и сообщаете его компьютеру на понятном для него языке, который сильно проще русского) В 21-м веке это вторая грамотность.
Детских книжек уже понаписано много, видеороликов тоже, просто научитесь пользоваться ютубом и chatgpt.
 
Stanislav Korotky #:
Значения меньше 10 зарезервированы за стандартными типами цен - об этом есть в книге.

Да, Станислав, действительно это есть в книге.

Цитата: Почему нумерация дескрипторов начинается с 10? Меньшие значения зарезервированы за системой. Как было сказано выше, для индикаторов с краткой формой OnCalculate последним параметром можно передавать тип цены или дескриптор другого индикатора, по буферу которого и будет рассчитываться вновь создаваемый экземпляр. Поскольку элементы перечисления ENUM_APPLIED_PRICE имеют свои значения-константы, они как раз и занимают область ниже 10.

В следующей таблице приведено описание возможных значений переменной _AppliedTo.

Значение Описание данных для расчета
0 -      Индикатор использует полную форму OnCalculate, и данные для расчета не задаются одним массивом данных
1 -      Цена Close
2 -      Цена Open
3 -      Цена High
4 -      Цена Low
5 -      Средняя цена = (High+Low)/2
6 -      Типичная цена = (High+Low+Close)/3
7 -      Взвешенная цена = (Open+High+Low+Close)/4
8 -      Данные индикатора, который был запущен на графике перед данным индикатором
9 -      Данные индикатора, который был запущен на графике самым первым
10+      Данные индикатора с дескриптором, содержащимся в _AppliedTo — этот дескриптор был передан при создании индикатора в функцию iCustom последним параметром
         Для удобства анализа значений к книге прилагается заголовочный файл AppliedTo.mqh с перечислением.

С уважением, Владимир.

 
Koldun Zloy #:
Я не понимаю, зачем Вы это делаете.
Суть хэндла в том, что мы не должны воспринимать его как число.
Для нас это просто некий маркер объекта. И абсолютно не важно как они идут в данный момент.

Потому, что в другой теме для начинающих мне так объяснили. Уже сам не рад, что спросил! ))))) Это относится не к Вам.

А началось всё с этого.

С уважением, Владимир.

 
secret #:
В программировании нет ничего сложного, если не углубляться в ненужную муть вроде ООП. Вы просто продумываете порядок действий, и сообщаете его компьютеру на понятном для него языке, который сильно проще русского) В 21-м веке это вторая грамотность.
Детских книжек уже понаписано много, видеороликов тоже, просто научитесь пользоваться ютубом и chatgpt.
Не пишите пожалуйста о вещах в которых вы не разбираетесь. Глупо выглядите. Муть в голове надо лечить чтением хороших книг по программированию.
 
Vasiliy Sokolov #:
Не пишите пожалуйста о вещах в которых вы не разбираетесь. Глупо выглядите. Муть в голове надо лечить чтением хороших книг по программированию.
Да, начяльника!)
 
MrBrooklin #:

Потому, что в другой теме для начинающих мне так объяснили. Уже сам не рад, что спросил! ))))) Это относится не к Вам.

А началось всё с этого.

С уважением, Владимир.

А зачем Вы спросили? Ок. Попробую объяснить.

Вы купили билет в театр. На билете указано расположение купленного Вами места в зале. Допустим это 9 ряд, 10 место, партер. Т.е. театр предоставил Вам некий ресурс "место для просмотра представления". Билет в театр является тем же дискриптором. Его наличие является доказательством того, что вы владеете этим ресурсом. На входе вы предъявляете билет. Для театра этот билет тоже важен. Он знает, что выданный им ресурс "9 ряд, 10 место" уже зарезервирован Вами. Повторно его нельзя выдавать. Таким образом, билет в театр является контрактом между Вами и театром. Вы можете купить несколько билетов последовательно и вдруг окажется что у вас 10, 11, 12 места. Вы делаете общий вывод основанный на частном наблюдении, что есть некая последовательность, покупаете еще один билет, а на нем 14 место, вместо ожидаемого Вами 13. Потому что 13 место могли уже купить до Вас, а может быть главный режиссер театра суеверный, и в его театре вообще нет 13 мест. Мы этого не знаем, а даже если знаем, то все равно не можем гарантировать, что найденное нами эмпирическая закономерность сохранится при работе в многозадачное среде, когда зрителей много и вместе с Вами в соседней кассе покупает билет кто-то еще.

В операционной системе все тоже самое. Она предоставляет Вам ресурс. Если запрашиваемый Вами ресурс может быть предоставлен, то Вам выдается билет - хендл, с абстрактным номером, который указывает системе, что этот ресурс был Вам выделен, и теперь кому-либо еще этот же ресурс предоставить уже нельзя. Если Вы заканчиваете работу с ресурсом, то возвращаете этот хендл системе: "я закончил работу с ресурсом, теперь можешь передать его другому если нужно". Вот для этого и нужны дескрипторы. Искать в них некие последовательности бессмысленно и вредно. Эти последовательности внутреннее дело внешней системы, они могут совпадать, а могут не совпадать с Вашими последовательностями.

И наконец отвечая на Ваш вопрос в соседней ветке:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

MrBrooklin, 2025.09.25 19:15

Понятно. ) А если серьёзно? Вот взято из документации:

iMA Возвращает хэндл индикатора скользящего среднего.

Алексей, исходя из Вашего определения хэндла поучается, что iMA возвращает число индикатора скользящего среднего? )) Абракадабра получается, да и только... )

Т.е. iMA возвращает контракт на владение ресурсом индикатора скользящего среднего, который размещен в MetaTrader (не в вашей программе).