Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Петр, ваш подход тоже не подойдет, если в одно подокно нужно накидать несколько индикаторов рисующих объекты. Когда стояла такая задача делал просто - в окне свойств переменная SubWinName - имя подокна (оно устанавливается как IndicatorShortName() в init), и переменная ObjectID, все остальное (какие значения установить в SubWinName и в ObjectID) - проблемы пользователя. По большому счету - нет абсолютно правильного метода и абсолютно надежного метода получения ID для объектов. MathRound() - нет гарантии, что не будет двух одинаковых случайных чисел. GetTickCount() - тоже не факт, что не будет одинаковых значений. Счетчик на глобальных переменных - при аварийном завершении работы терминала не произойдет сброса (хотя это не помешает правильной работе при следующем запуске терминала, просто счетчик будет сдвинут. Вообще это метод с наибольшими гарантиями.
Типичные алгоритмы рандомизаторов выдают последовательность чисел, повторяющихся через период рандомизатора. Для mql заявлено 32тыс. То есть в нашем случае можно практически гарантировать уникальность числа. GetTickCount() является перенаправлением на одноименную функцию win32 API и тоже практически гарантирует уникальность, независимо от крэшей терминала.
---
Функцию Свинозавра я бы подкорректировал следующим образом:
Хотя в большинстве случаев достаточно просто FindWindow(ShortName) или просто 0. Если в заголовке отображать и основные параметры индикатора, такая конструкция ( FindWindow(ShortName) ) будет работоспособной за исключением двух случаев: когда присоединяем несколько индикаторов в одно окно и когда присоединяем два индикатора с одинаковыми параметрами в разные окна. Что в общем-то никогда не делается. Первый случай лучше обрабатывать через Свинозаврскую функцию, второй случай обработается через FindWindow корректно, объекты просто присоединятся только к одному окну.
---
Использование глобальных переменных избыточно и возникают проблемы общего доступа к ним (не в индикаторах).
Использование дополнительного файла избыточно, приводит к проблемам переносимости, совместимости и читаемости кода.
Перенос кода в функции в данном случае избыточно, код становится менее читаемым.
Типичные алгоритмы рандомизаторов выдают последовательность чисел, повторяющихся через период рандомизатора. Для mql заявлено 32тыс. То есть в нашем случае можно практически гарантировать уникальность числа. GetTickCount() является перенаправлением на одноименную функцию win32 API и тоже практически гарантирует уникальность, независимо от крэшей терминала.
Это можно проверить.
У меня выскочила "Oppa!" со значением 2, т.е. через одно значение было повторение.Это можно проверить.
У меня выскочила "Oppa!" со значением 2, т.е. через одно значение было повторение.Проверил. Да, устойчивость алгоритма -3 степень, то есть низкая. Действительно, лучше использовать GetTickCount().
Проверил. Да, устойчивость алгоритма -3 степень, то есть низкая. Действительно, лучше использовать GetTickCount().
Алгоритм проверки с ошибкой. Сейчас исправлю.
Алгоритм проверки с ошибкой. Сейчас исправлю.
Исправил.
Еще вариант:
Уточнение: -4 степень.
То есть в среднем одна ошибка на 10000 запусков.
Я за MathRand, педанты за GetTickCount() :)
может проще использовать в качестве постфикса в именованиях объектов имя индикатора и локальное время, когда он был инициализирован, для ручного цепляния этого должно быть достаточно, но для шаблонного не сгодится..