Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да. Думаю что в данном случае без хеша обойтись можно. Поспешил я с советом про хеши. :)
Если такой вариант Василия устроит - то просто загоняем в строку все параметры. Строка и будет являться идентификатором класса.
А ведь тоже верно. Ведь в данном случае криптозащита не нужна вообще. Плохо однако в этом варианте то, что все равно необходимо будет преобразовать строку всех параметров в конкретное, желательно 32-битное уникальное число, а вот для этого уже по всей видимости придется воспользоваться хэш-функциями.
Черт, а ведь в MQL нет битовых операторов типа инверсии, смещения и т.п. Да, сложнова-то будет сделать все это в MQL.
Да. в данном случае без хеша обойтись можно.
Если такой вариант Василия устроит - то просто загоняем в строку все параметры. Строка и будет являться идентификатором класса.
Типа... соответствие hash -> sorted set -> элементы...
Главное, что с хэшем связывается сортированный список.
.
Тогда оно все еще и "летать" будет (правда, низэнько- низэнько...)
Задача: требуется однозначно идентифицировать экземпляр класса по его уникальному ID, желательно по типу long. Уникальный ID должен формироваться учитывая уникальность значений переменных входящих в класс.
Млин! У меня такая же задача будет в понедельник ))))
Строку использовать не смогу, так как ограничен по длине - необходимо будет на основе этого имена объектам присваивать.
Я тут подумал... можно наверное использовать два алгоритма хэширования одновременно - это значительно уменьшит вероятность не уникальности... или сильно заблуждаюсь?
Черт, а ведь в MQL нет битовых операторов типа инверсии, смещения и т.п. Да, сложнова-то будет сделать все это в MQL.
почему же нет? все есть! https://docs.mql4.com/ru/basis/operations/bit
Черт, а ведь в MQL нет битовых операторов типа инверсии, смещения и т.п. Да, сложнова-то будет сделать все это в MQL.
Сдвиг двоичного представления y влево на x бит y <<= x;
Побитовая операция И двоичных представлений y и x y &= x;
Побитовая операция ИЛИ двоичных представлений y и x y |= x;
Побитовая операция исключающее ИЛИ
двоичных представлений y и x y ^= x;
возможно и y != x; работает
ЗЫ: по поводу уникальности имен и т.п. - задача как всегда сводится к старой проблеме: как сэкономить память и не потерять производительность
или используйте массив строк с уникальными именами, тем самым увеличиваете объем данных, или используйте ф-цию которая будет по некому алгоритму на основе входных данных формировать уникальное имя, тем самым снизите производительность, но сэкономите память
https://docs.mql4.com/ru/basis/operations/assignвозможно и y != x; работает
не там.
а вот здесь https://docs.mql4.com/ru/basis/operations/bit
не там.
а вот здесь https://docs.mql4.com/ru/basis/operations/bit
нет там! ;)
ЗЫ: это одинаковая информация, просто пример как для операции присваивания, так и для побитовых операций одинаков, т.к. написано по моей ссылке "Побитовые операции производятся только с целыми числами", если хотите, могу сказать, что у Вас точнее ссылка ;), думаю С-4 поймет откуда и куда нуно читать хэлп
Вот накатал тут рабочий пример хеш-функции Adler32:
Основной код функции взят из википедии и незначительно изменен под MQL5. Вот результат работы скрипта:
2011.01.22 22:50:10 BitOperations (#MCD,MN1) 2333149633
2011.01.22 22:50:10 BitOperations (#MCD,MN1) 2169506126
2011.01.22 22:50:10 BitOperations (#MCD,MN1) 1202325230
Как видно все значения выдаваемые функцией обсолютно разные, хотя сами строки различаются не сильно.
Вот накатал тут рабочий пример хеш-функции Adler32:
Основной код функции взят из википедии и незначительно изменен под MQL5. Вот результат работы скрипта:
Как видно все значения выдаваемые функцией обсолютно разные, хотя сами строки различаются не сильно.
здорово.
если можно (чтоб не потерять) закиньте в кодебазе MQL5.
здорово.
если можно (чтоб не потерять) закиньте в кодебазе MQL5.
Оки.