Самообучение языку MQL5 с полного нуля - страница 78

 
Alexey Viktorov:

Я-бы сделал так

Дело в том что это функция из моего советника, а он мультиинструментный. Вот при добавлении символов и происходит проверка по всем доступным символам. И если найден, то он добавляется в обзор рынка, для дальнейшей работы с ним. Ну и само собой в локальную переменную записывается правильное название инструмента.

 
Vitaly Muzichenko:

Алексей, вполне нормальный код. Не нормально, это вводить в параметр несколько символов, чего вряд-ли кто будет делать.

У меня примерно такая-же реализация в рабочем продукте.

Эта реализация успешно работает в мультивалютном решении, чего не скажешь про остальные коды, то есть, код - универсален.

О мультивалютном решении в вопросе ни намёка. Потому и сказано, что код не отвечает требованию.

 

Ну и так к слову. Почему проверка в оба направления

StringFind(symbol, s, 0) >= 0 || StringFind(s, symbol, 0) >= 0

Защита от дурака. Попался как-то клиент с возмущениями, мол указал символ, а он не работает. Оказалось у него в терминале чистый символ, а вводил он его с добавками. Ну я не долго думая добавил второе направление проверки )))

 
Потом появится третий тип, который возмутится тем,  что ввел название символа без добавок, а у графика с добавками, но эксперт почему-то заработал. Поэтому, делать точное сравнение, а если не совпадает, выводить сообщение - "у графика такой-то символ, а вы введи такой-то" и пусть бремя ответственности лежит на пользователе. 
 
Dmitry Fedoseev:
Потом появится третий тип, который возмутится тем,  что ввел название символа без добавок, а у графика с добавками, но эксперт почему-то заработал. Поэтому, делать точное сравнение, а если не совпадает, выводить сообщение - "у графика такой-то символ, а вы введи такой-то" и пусть бремя ответственности лежит на пользователе. 

Ну не вариант конечно. Человеку удобно вводить чистые символы. А уж суффиксы/префиксы пусть код сам добавляет. Чисто удобство работы. Сам не любитель копать полное имя символа.
Да даже просто скопировать set файл и можно запускать программу. Ни чего перебивать не нужно. Есть символы, они автоматом подцепятся.

 
Konstantin Nikitin:

Ну не вариант конечно. Человеку удобно вводить чистые символы. А уж суффиксы/префиксы пусть код сам добавляет. Чисто удобство работы. Сам не любитель копать полное имя символа.

защита от дурака всегда не удобна)

 
Valeriy Yastremskiy:

защита от дурака всегда не удобна)

Да тут уже не столько от дурака получается. Сколько удобство в копировании set файла. Я уже привык к этому (к хорошему привыкается быстро) и не замечаю, когда перекидываю настройки. Довольно удобно.
Хотя второе направление и добавлялось от дураков )))

 
 MrBrooklin:

Здравствуйте, Алексей!

С целью повышения знаний в языке программирования MQL5, пожалуйста, объясните, почему нет ни какой разницы между void &array и void& array?

С уважением, Владимир.

Не знаю. Опытным путём понял, что и так void & array работает. Этот & означает что переменная передаётся по ссылке и более ничего. Массив в качестве входного параметра функции передаётся только по ссылке.
 
Alexey Viktorov:
Не знаю. Опытным путём понял, что и так void & array работает. Этот & означает что переменная передаётся по ссылке и более ничего. Массив в качестве входного параметра функции передаётся только по ссылке.

Спасибо, Алексей! Запомню этот момент на будущее.

С наступающим Рождеством!

С уважением, Владимир.

 
MrBrooklin:

Спасибо, Алексей! Запомню этот момент на будущее.

С наступающим Рождеством!

С уважением, Владимир.

Мне Артем Тришкин  на тот же вопрос ответил, потому что это ссылка (апперсанд), поэтому может стоять в любом месте. надо без пробелов попробовать для чистоты эксперимента.

Причина обращения: