Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения - страница 11
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Последний пример на сегодня и по всей видимости на этой неделе: соответствие между номером сделки и номером ордера, который ее инициировал:
Для моего случая где сделок на счете больше 10000 результат следующий:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Vasiliy Sokolov, 2017.12.08 13:30
Если N очень мало, то мы просто нормируем число полученное хеш-функцией, таким образом, что бы оно всегда находилось в пределе N:
Дочитал пока до этого места. Василий, Спасибо, все ясно, кроме выделенного. По-моему, взятие по остатку в качестве нормировки ошибочно. Так видится логичней
В том то и дело, что размер словаря часто не известен. Простой пример, допустим, у нас торгует советник. Он отслеживает совершенные сделки. После появления сделки в истории, требуется связать эту сделку допустим с меджиком эксперта. Для этого логично использовать словарь. Где в качестве ключа (уникального идентификатора) используется номер сделки, а в качестве значения - магический номер эксперта. Проблема в том, что при запуске советника ни как нельзя определить заранее будут ли у нас 100 сделок, 1000 или вообще ни одной. Сколько памяти за ранее не выделяй, ее все равно будет либо мало, либо слишком много.
Я, видимо, мозг не до конца сломал. Могли бы Вы пояснить выделенное? Совсем не понимаю.
Выглядит, как издевка
HashFunction.mqh без инклуда. Неправильно это.
Какой толк в этой функции?
Я, видимо, мозг не до конца сломал. Могли бы Вы пояснить выделенное? Совсем не понимаю.
Лично я это понял так, что при совершении сделок советник должен записывать номер мэджика в словарь (массив) по номеру сделки, который в данном случае является индексом ячейки.
Количество будущих сделок заранее неизвестно, а для записи меджиков у нас уже должен быть объявлен массив. Задача в том, чтобы выделить под массив нужный объем памяти заранее.
Заранее выделить точный объем памяти невозможно. Значит, можно записывать меджики в строку, в конце получить количество подстрок, инициализировать массив и записать туда все подстроки (меджики).
Далее доступ к каждому меджику будет осуществлятся по номеру сделки.
Примерно так себе это представляю.
Последний пример на сегодня и по всей видимости на этой неделе: соответствие между номером сделки и номером ордера, который ее инициировал:
Для моего случая где сделок на счете больше 10000 результат следующий:
А классический вариант сколько возвращает в Вашем случае?
Какой толк в этой функции?
Ведь для struct и union не будет просто компилироваться.Добавил еще одну перегрузку
Столкнулся, что
Добавил еще одну перегрузку
Как по мне, если объект не реализует некий интерфейс или метод, то лучше явно генерировать исключение, чем втихую замалчивать, а потом непонятно сколько искать источник проблем.
Возвращает отрицательные числа, что логично вытекает из такого кода. Это нормально?
Абсолютно нормально.
Хеш ни что вам не гарантирует, это просто число которое в определенной мере характиризирует тот или иной объект.
Если нужно целое - смело берите uint.
Как по мне, если объект не реализует некий интерфейс или метод, то лучше явно генерировать исключение, чем втихую замалчивать, а потом непонятно сколько искать источник проблем.
MqlTick?
MqlTick?
Вы понимаете что делает код, если отсутствует явная реализация специализация шаблонной функции GetHashCode для типа T?
Ответ: пакость, поскольку замалчивается проблема отсутствия реализации. Все объекты одного и того же класса будут возвращать одинаковое значение хеша.