Уже давно привык к слову хендл, а вот как кратко описать его истинное значение? Поисковиками всякое перелопатил и нашёл на мой взгляд самое лучшее объяснение. Хотя могу и заблуждаться!
Взято из Википедии и специально сжато до приемлемого для меня понятия:
Хендл (дескриптор - тоже не самое лучше название!) - это указатель на источник дальнейшего извлечения информации.
Уважаемые программисты!!! А как бы Вы кратко охарактеризовали слово хендл?
Понятно. ) А если серьёзно? Вот взято из документации:
iMAВозвращает хэндл индикатора скользящего среднего. Всего один буфер.intiMA(
string symbol, // имя символа ENUM_TIMEFRAMES period, // период int ma_period, // период усреднения int ma_shift, // смещение индикатора по горизонтали ENUM_MA_METHOD ma_method, // тип сглаживания ENUM_APPLIED_PRICE applied_price // тип цены или handle
);
Алексей, исходя из Вашего определения хэндла поучается, что iMA возвращает число индикатора скользящего среднего? )) Абракадабра получается, да и только... )
Владимир, грубо говоря, можете рассматривать хендл как номер строки списка, который содержит адреса ячеек памяти, начиная с которых хранятся исполняемые коды расчёта всех нужных индикаторов. Поскольку индикаторов много разных, то в этот список нет смыла всегда добавлять их все. Он заполняется по запросам автора конкретного советника. Если какой-то индикатор нужен, то надо его в этот список добавить и расположить его код где-то в памяти.
Вызов функций типа iMA как раз добавляет новый пункт в этот список. То есть если в программе далее понадобится получить расчёты этого индикатора, то надо обратиться по адресу памяти, который идёт под очередным номером. Вот этот новый номер по списку и возвращают те функции, про которые написано, что они возвращают хендл.
Владимир, грубо говоря, можете рассматривать хендл как номер строки списка, который содержит адреса ячеек памяти, начиная с которых хранятся исполняемые коды расчёта всех нужных индикаторов. Поскольку индикаторов много разных, то в этот список нет смыла всегда добавлять их все. Он заполняется по запросам автора конкретного советника. Если какой-то индикатор нужен, то надо его в этот список добавить и расположить его код где-то в памяти.
Вызов функций типа iMA как раз добавляет новый пункт в этот список. То есть если в программе далее понадобится получить расчёты этого индикатора, то надо обратиться по адресу памяти, который идёт под очередным номером. Вот этот новый номер по списку и возвращают те функции, про которые написано, что они возвращают хендл.
Ну а что такое номер в списке, если не число?
Юрий, Вы правы также, как и Алексей. Сейчас специально в тестовом советнике поставил друг за другом первые попавшиеся на глаза хэндлы индикаторов iMA, iTEMA и iDEMA, после чего прогнал пошагово от точки остановки, заданной на iMA. Получил возврат значений от iMA - 10, от iTEMA - 11 и iDEMA - 12. Потом, как бы не переставлял местами хэндлы этих индикаторов, они все равно последовательно давали значения 10, 11 и 12.
Ваше объяснение, Юрий, более-менее стало мне понятно. Спасибо! Осталось только теперь понять самую малость - почему нумерация хэндлов начинается не с нуля, а с 10? )
В мире программирования, да и вообще в мире, мы используем очень много вещей, без досконального понимания всех внутренних нюансов их работы. Мы доверяем разработчикам этих вещей, веря, что принятые ими решения реализовать что-то именно так, а не иначе, имели под собой какие-то основания.
Мне не пришлось поучаствовать в работе над компилятором и языком MQL5, поэтому не могу точно сказать, почему нумерация хендлов начинается с 10. Могу предположить почему это так, но в этом нет особого смысла. Ведь в коде мы не будем использовать хендлы как числа для выполнения каких-либо арифметических операций. Поэтому для нас, как пользователей MQL5, важны лишь две вещи:
Уникальность - для разных индикаторов полученные и запомненные в нашей программе хендлы будут иметь разные значения.
Постоянство - в любой момент выполнения нашей программы выбранный хендл всегда будет позволять получить расчётные данные одного и того же индикатора.
Другое дело, если вам любопытно и хочется подняться на уровень разработчика языка программирования. Тогда есть смысл вникать в подобные нюансы.
MrBrooklin #: Да, Юрий, именно в этом дело. Если уж пытаюсь в чём-то разобраться, то стараюсь это сделать по максимуму. )
Владимир, на всякий случай спрошу: понятна ли разница между понятиями "разработчик языка программирования MQL5" и "разработчик, использующий язык программирования MQL5"? Я говорил про первое, а вы, возможно, имели ввиду второе. Но могу ошибаться, конечно.
Всем доброго вечера и хорошего настроения!
Уже давно привык к слову хендл, а вот как кратко описать его истинное значение? Поисковиками всякое перелопатил и нашёл на мой взгляд самое лучшее объяснение. Хотя могу и заблуждаться!
Взято из Википедии и специально сжато до приемлемого для меня понятия:
Хендл (дескриптор - тоже не самое лучше название!) - это указатель на источник дальнейшего извлечения информации.
Уважаемые программисты!!! А как бы Вы кратко охарактеризовали слово хендл?
С уважением, Владимир.
А как бы Вы кратко охарактеризовали слово хендл?
Число)
Понятно. ) А если серьёзно? Вот взято из документации:
Алексей, исходя из Вашего определения хэндла поучается, что iMA возвращает число индикатора скользящего среднего? )) Абракадабра получается, да и только... )
С уважением, Владимир.
Владимир, грубо говоря, можете рассматривать хендл как номер строки списка, который содержит адреса ячеек памяти, начиная с которых хранятся исполняемые коды расчёта всех нужных индикаторов. Поскольку индикаторов много разных, то в этот список нет смыла всегда добавлять их все. Он заполняется по запросам автора конкретного советника. Если какой-то индикатор нужен, то надо его в этот список добавить и расположить его код где-то в памяти.
Вызов функций типа iMA как раз добавляет новый пункт в этот список. То есть если в программе далее понадобится получить расчёты этого индикатора, то надо обратиться по адресу памяти, который идёт под очередным номером. Вот этот новый номер по списку и возвращают те функции, про которые написано, что они возвращают хендл.
Ну а что такое номер в списке, если не число?
Владимир, грубо говоря, можете рассматривать хендл как номер строки списка, который содержит адреса ячеек памяти, начиная с которых хранятся исполняемые коды расчёта всех нужных индикаторов. Поскольку индикаторов много разных, то в этот список нет смыла всегда добавлять их все. Он заполняется по запросам автора конкретного советника. Если какой-то индикатор нужен, то надо его в этот список добавить и расположить его код где-то в памяти.
Вызов функций типа iMA как раз добавляет новый пункт в этот список. То есть если в программе далее понадобится получить расчёты этого индикатора, то надо обратиться по адресу памяти, который идёт под очередным номером. Вот этот новый номер по списку и возвращают те функции, про которые написано, что они возвращают хендл.
Ну а что такое номер в списке, если не число?
Юрий, Вы правы также, как и Алексей. Сейчас специально в тестовом советнике поставил друг за другом первые попавшиеся на глаза хэндлы индикаторов iMA, iTEMA и iDEMA, после чего прогнал пошагово от точки остановки, заданной на iMA. Получил возврат значений от iMA - 10, от iTEMA - 11 и iDEMA - 12. Потом, как бы не переставлял местами хэндлы этих индикаторов, они все равно последовательно давали значения 10, 11 и 12.
Ваше объяснение, Юрий, более-менее стало мне понятно. Спасибо! Осталось только теперь понять самую малость - почему нумерация хэндлов начинается не с нуля, а с 10? )
С уважением, Владимир.
Владимир, а так ли уж необходимо вам это понять?
В мире программирования, да и вообще в мире, мы используем очень много вещей, без досконального понимания всех внутренних нюансов их работы. Мы доверяем разработчикам этих вещей, веря, что принятые ими решения реализовать что-то именно так, а не иначе, имели под собой какие-то основания.
Мне не пришлось поучаствовать в работе над компилятором и языком MQL5, поэтому не могу точно сказать, почему нумерация хендлов начинается с 10. Могу предположить почему это так, но в этом нет особого смысла. Ведь в коде мы не будем использовать хендлы как числа для выполнения каких-либо арифметических операций. Поэтому для нас, как пользователей MQL5, важны лишь две вещи:
почему нумерация хэндлов начинается не с нуля, а с 10?
Да, Юрий, именно в этом дело. Если уж пытаюсь в чём-то разобраться, то стараюсь это сделать по максимуму. )
Владимир, на всякий случай спрошу: понятна ли разница между понятиями "разработчик языка программирования MQL5" и "разработчик, использующий язык программирования MQL5"? Я говорил про первое, а вы, возможно, имели ввиду второе. Но могу ошибаться, конечно.