Магик ограничен значением, а не количесивом знаков. Максимальное значение равно константе EMPTY_VALUE. Магик лучше явно задавать, чтобы была совместимость с другими советниками. Если вычислять магик, то неизвестно полученное значение и есть вероятность накладки с каким-нибудь другим работающем в терминале советником.
int MagicfromSymbol() // Генирит Magicnumber для каждого символа и ТФ { int MagicNumber=0; for (int i=0; i<5; i++) { MagicNumber=MagicNumber*3+StringGetChar(Symbol(),i)+5; } MagicNumber=MagicNumber*3+Period(); return(MagicNumber); }
Да. Только вы сначала преобразуете каждую букву в ее код, поэтому такой результат.
Магик ограничен значением, а не количесивом знаков. Максимальное значение равно константе EMPTY_VALUE. Магик лучше явно задавать, чтобы была совместимость с другими советниками. Если вычислять магик, то неизвестно полученное значение и есть вероятность накладки с каким-нибудь другим работающем в терминале советником.
то бишь 2147483647
ну да, значение... верно...
но и по количеству знаков не ошибся... ;)))
*
Дык вот и нежелательны эти нетзвестнополученыекак магики,
ибо не только с вычислениями можно ошибиться, хотя и поддаётся
некой проверке: маг>2147483647 error!, но и ручному выставлению.
Ищи потом пока не догадаешся проверить количество знаков магика...
2147483647 и 21474836147
Что-то есть сомнения. Больше четырех буквочек в int никак не получится загнать, еще таймфрейм.
Да я и сам не проверял, как-то написал на скору руку....) Но люблю навешать экспертов как собак, и разные пары и разные ТФ, и ни разу проблем не возникало... Что еще требуется?)
Дмитрий, может напишите пограммотней нам на радость?
Да. Только вы сначала преобразуете каждую букву в ее код, поэтому такой результат.
Да, об этом и написано выше:
EURUSD,Daily: Alert: txt: 698582858368
// сформированое из EURUSD "текстовое" число
*
Ранее с этой функцией плотно не работал, просто знал о ней,
и предполагал что будет хорошим подспорьем при обработке например новостей
или там публикаций разных уровней Акселя-мокселя... ;)))
А тут копнул разок в попутной теме, и нате нам...
Видимо результат на выходе тоже ограничен EMPTY_VALUE
а всё что сверху и выводит мусор... судя по отрицаловке.
*
Figar0, спасиб конечно, но задача иная и проста как шесть буков.
Создать магика из имени символа, по возможность и обратно...
Проблем с простым применением магика, например 123 или там 147852 нету!!!
как впрочем и с более простым автосозданием...
Да я и сам не проверял, как-то написал на скору руку....) Но люблю навешать экспертов как собак, и разные пары и разные ТФ, и ни разу проблем не возникало... Что еще требуется?)
Дмитрий, может напишите пограммотней нам на радость?
Миссия не выполнима, символ может из любых знаков состоять - и заглавных букв и прописных и всяких др. знаков.
Теперь это выяснено... :)))
Хотя идея была неплохА.
Ить не токма строку в цифирь переводить имя символа,
но и другие, например для "новостных экспертов".
*
Обратное преобразование магика предполагалось на основе
добавки лидирующих нулей к текстовому числу...
= 0
...
! = 33
...
я = 255
Соотв: 000, 033,255
*
Но и тут засада...
Если переводить в цифру, то на первом знаке числа по идее должно
быть обрезано незначащие первые нолики...
т.е. текст 015025100 в цифре получится 15025100
В генерации магика из имени символа смысла нет вообще. Символ ордера можно проверять явно.
Магик должен идентифицировать именно эксперта, и только для одновременной работы нескольких копий эксперта на одном символе.
Для новостных экспертов можно придумать свою систему генерации магиков. Например, использовать время выхода новости (ГММДДЧЧММ) - 901130138. И извлечь время из магика тоже не составит труда.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
... и разочарование от применения...
:(((
Написал простецкую функцию для генерации магика от имени символа.
1. Ошибка номер раз:
- предполагал что StrToInteger() тупо переводит "12345" в 12345
Да! переводит, но... докуда, вот вопрос... и например 698582858368
уже показывает фигушки... в данном случае это: -1496810880
*
1.1. Что делается...
EURUSD,Daily: Alert: txt: 698582858368
// сформированое из EURUSD "текстовое" число
EURUSD,Daily: Alert: car: :-1496810880
// перевод строки в целые числа StrToInteger()
EURUSD,Daily: Alert: stmag: -1496810880
// присвоеный и считаный магик у позиции...
*
2. Номер два.
В едиторе нет проверки магика на валидность, что позволит ошибиться
и получать магик неведомого числа... в качестве пробы ставил:
16384012345678901234567890123456789001234567890123456789016384012345678901234567890123456789001234567890123456789
едитор не ругнулся, в ответ получил это: 1628012821
Откуда оно взялось так и не нашел...
Судя по вернутому числу магик имеет максимум в 10 знаков.