Всем привет! Ребята, поскажите пожалуйста, как у советника для определенной валютной пары сгенерировать меджик.
Нужно это для того, чтобы при установке советника на разные валютные пары, каждый раз его не прописывать, а чтобы он сам генерировался и всех валютных пар был разный.
Но в то же время на одной валютной паре чтобы он был одинаковый, даже после перезагрузки совы, терминала и тд
Копируете посимвольно строку в массив при помощи StringToCharArray(), а затем складываете содержимое всего массива.

- www.mql5.com
Копируете посимвольно строку в массив при помощи StringToCharArray(), а затем складываете содержимое всего массива.
лучше посчитать CRC
лучше посчитать CRC
Вполне. Тогда уж сразу же и пример был бы уместен, чем просто слово.
Вполне. Тогда уж сразу же и пример был бы уместен, чем просто слово.
примеры находятся сразу по "подсчет CRC", там от 8 бит решения до 64 бит, но так как у нас меджик в мт4 int, а в мт5 long то решения могут быть разные.
примеры находятся сразу по "подсчет CRC", там от 8 бит решения до 64 бит, но так как у нас меджик в мт4 int, а в мт5 long то решения могут быть разные.
У меня в поиске по сайту появляются лишь две страницы - эта, и ещё одна, где нужно всё перечитать.
Я же просто предложил сюда запостить то, что считается лучше, а не просто сказать.
Я сказал первое же простейшее решение пришедшее в голову - сумма кодов символов в наименовании инструмента. И чем, и как её подсчитать. И
эта сумма влезет и в int, и в long.
Если считать, что для символа используются только заглавные буквы, то вот так можно вмять в инт 7 букв:
int SymToInt(string s){ int m=1; int rv=0; for(int i=StringLen(s)-1;i>=0;i--){ ushort ch=StringGetChar(s,i); if(ch>=65 && ch<=90){ ch-=64; rv+=ch*m; m*=27; } } return(rv); }Особо не проверял функцию, ежели чего...
Вполне. Тогда уж сразу же и пример был бы уместен, чем просто слово.
//+------------------------------------------------------------------+ //| Return CRC-32 sum on source data 'array' | //+------------------------------------------------------------------+ uint CRC32(uchar &array[]) { uint crc_table[256]; ArrayInitialize(crc_table,0); uint crc=0; for(int i=0; i<256; i++) { crc=i; for(int j=0; j<8; j++) crc=(crc &1)>0 ?(crc>>1)^0xEDB88320 : crc>>1; crc_table[i]=crc; } crc=0xFFFFFFFF; int len=0,size=ArraySize(array); while(len<size) crc=crc_table[(crc^array[len++]) &0xFF]^(crc>>8); return crc ^ 0xFFFFFFFF; }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет! Ребята, поскажите пожалуйста, как у советника для определенной валютной пары сгенерировать меджик.
Нужно это для того, чтобы при установке советника на разные валютные пары, каждый раз его не прописывать, а чтобы он сам генерировался и всех валютных пар был разный.
Но в то же время на одной валютной паре чтобы он был одинаковый, даже после перезагрузки совы, терминала и тд