Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1589
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем доброго вечера и хорошего настроения!
Уже давно привык к слову хендл, а вот как кратко описать его истинное значение? Поисковиками всякое перелопатил и нашёл на мой взгляд самое лучшее объяснение. Хотя могу и заблуждаться!
Взято из Википедии и специально сжато до приемлемого для меня понятия:
Хендл (дескриптор - тоже не самое лучше название!) - это указатель на источник дальнейшего извлечения информации.
Уважаемые программисты!!! А как бы Вы кратко охарактеризовали слово хендл?
С уважением, Владимир.
А как бы Вы кратко охарактеризовали слово хендл?
Число)
Понятно. ) А если серьёзно? Вот взято из документации:
Алексей, исходя из Вашего определения хэндла поучается, что iMA возвращает число индикатора скользящего среднего? )) Абракадабра получается, да и только... )
С уважением, Владимир.
Владимир, грубо говоря, можете рассматривать хендл как номер строки списка, который содержит адреса ячеек памяти, начиная с которых хранятся исполняемые коды расчёта всех нужных индикаторов. Поскольку индикаторов много разных, то в этот список нет смыла всегда добавлять их все. Он заполняется по запросам автора конкретного советника. Если какой-то индикатор нужен, то надо его в этот список добавить и расположить его код где-то в памяти.
Вызов функций типа iMA как раз добавляет новый пункт в этот список. То есть если в программе далее понадобится получить расчёты этого индикатора, то надо обратиться по адресу памяти, который идёт под очередным номером. Вот этот новый номер по списку и возвращают те функции, про которые написано, что они возвращают хендл.
Ну а что такое номер в списке, если не число?
Владимир, грубо говоря, можете рассматривать хендл как номер строки списка, который содержит адреса ячеек памяти, начиная с которых хранятся исполняемые коды расчёта всех нужных индикаторов. Поскольку индикаторов много разных, то в этот список нет смыла всегда добавлять их все. Он заполняется по запросам автора конкретного советника. Если какой-то индикатор нужен, то надо его в этот список добавить и расположить его код где-то в памяти.
Вызов функций типа iMA как раз добавляет новый пункт в этот список. То есть если в программе далее понадобится получить расчёты этого индикатора, то надо обратиться по адресу памяти, который идёт под очередным номером. Вот этот новый номер по списку и возвращают те функции, про которые написано, что они возвращают хендл.
Ну а что такое номер в списке, если не число?
Юрий, Вы правы также, как и Алексей. Сейчас специально в тестовом советнике поставил друг за другом первые попавшиеся на глаза хэндлы индикаторов iMA, iTEMA и iDEMA, после чего прогнал пошагово от точки остановки, заданной на iMA. Получил возврат значений от iMA - 10, от iTEMA - 11 и iDEMA - 12. Потом, как бы не переставлял местами хэндлы этих индикаторов, они все равно последовательно давали значения 10, 11 и 12.
Ваше объяснение, Юрий, более-менее стало мне понятно. Спасибо! Осталось только теперь понять самую малость - почему нумерация хэндлов начинается не с нуля, а с 10? )
С уважением, Владимир.
Владимир, а так ли уж необходимо вам это понять?
В мире программирования, да и вообще в мире, мы используем очень много вещей, без досконального понимания всех внутренних нюансов их работы. Мы доверяем разработчикам этих вещей, веря, что принятые ими решения реализовать что-то именно так, а не иначе, имели под собой какие-то основания.
Мне не пришлось поучаствовать в работе над компилятором и языком MQL5, поэтому не могу точно сказать, почему нумерация хендлов начинается с 10. Могу предположить почему это так, но в этом нет особого смысла. Ведь в коде мы не будем использовать хендлы как числа для выполнения каких-либо арифметических операций. Поэтому для нас, как пользователей MQL5, важны лишь две вещи:
почему нумерация хэндлов начинается не с нуля, а с 10?
Да, Юрий, именно в этом дело. Если уж пытаюсь в чём-то разобраться, то стараюсь это сделать по максимуму. )
Владимир, на всякий случай спрошу: понятна ли разница между понятиями "разработчик языка программирования MQL5" и "разработчик, использующий язык программирования MQL5"? Я говорил про первое, а вы, возможно, имели ввиду второе. Но могу ошибаться, конечно.