Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1414
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
или сделать отдельную функцию печати массива:
И вызывайте её из любого места
Алексей, я долго молчал, но никак не могу спокойно видеть такое… Зачем использовать функцию IntegerToString() если явное приведение типа в этом случае гораздо проще и менее затратно…
хз, привычка :)
или сделать отдельную функцию печати массива:
И вызывайте её из любого места
Большое спасибо за понимание и разъяснение. Беру паузу на изучение и понимание новой для меня информации.
Алексей, я долго молчал, но никак не могу спокойно видеть такое… Зачем использовать функцию IntegerToString() если явное приведение типа в этом случае гораздо проще и менее затратно…
И Вам спасибо за ценные дополнения.
Подскажите, пожалуйста, где посмотреть, почитать о создании внешнего окна для советника.
на форуме и в публикациях про С#, Delphi и всё прочее...
или сделать отдельную функцию печати массива:
И вызывайте её из любого места
Я решил сделать отдельную пользовательскую функцию печати массива. А точнее, не сделать , воспользоваться той ( PrintArray() ) ,которую уже сделали Вы.
Что я сделал?
1. Обращение к пользовательской функции PrintArray() я разместил внутри функции OnTick()... как написано в учебнике Ковалева.
2.Тело функции PrintArray() я разместил за пределами функции OnTick()... как написано в учебнике Ковалева.
Все новые переменные из тела этой функции - локальные. Они объявлены и инициализированы внутри этой функции.
Я ни каких изменений в Вашу функцию не вносил. Но компилятор почему то выдает 6 ошибок. И все они относятся к пользовательской функции.
Буду Вам очень признателен, если скажете мне, что я сделал не правильно.
Спасибо.
Я решил сделать отдельную пользовательскую функцию печати массива. А точнее, не сделать , воспользоваться той ( PrintArray() ) ,которую уже сделали Вы.
Что я сделал?
1. Обращение к пользовательской функции PrintArray() я разместил внутри функции OnTick()... как написано в учебнике Ковалева.
2.Тело функции PrintArray() я разместил за пределами функции OnTick()... как написано в учебнике Ковалева.
Все новые переменные из тела этой функции - локальные. Они объявлены и инициализированы внутри этой функции.
Я ни каких изменений в Вашу функцию не вносил. Но компилятор почему то выдает 6 ошибок. И все они относятся к пользовательской функции.
Буду Вам очень признателен, если скажете мне, что я сделал не правильно.
Спасибо.
Точно не помню, а проверять лениво. Попробуйте добавить квадратные скобки
Aleksei Stepanenko:
Как мне кажется, до меня наконец то дошло ( я слегка тугодум)......
На первой итерации строковая переменная str пустая. Символы =+ предписывают str присвоить себе саму себя пустую(без значений) и к самой себе пустой прибавить строку со значениями, а именно "--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";. Значением этой строки будет " --LoY[0]--, --1.6104-- ". После этих операций str на первой итерации получает значение " --LoY[0]--, --1.6104-- ". Как я понял в Вашей терминологии это называется первый элемент.
На второй итерации str уже имеет первый элемент со значением " --LoY[0]--, --1.6104-- " Символы =+ предписывают str присвоить себе саму себя со значением первого элемента и к самой себе со значением первого элемента прибавить строку с другими значениями, а именно "--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";. Значением этой строки уже будет " --LoY[1]--, --1.6105-- ". После этих операций str на второй итерации получает значение " --LoY[0]-- --1.6104-- --LoY[1]-- --1.6105-- ". То есть в str появился(приплюсовался) второй элемент. И на тридцатой итерации в str будет 30 элементов с разными значениями элементов массива.
А после окончания цикла, за его пределами будет один раз напечатана строковая переменная str с 30 элементами.
Я долго не мог понять этот алгоритм, потому что когда Вы говорили о сложении я обращал внимание исключительно на красные плюсы. "--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", а не на str+=
И поэтому для меня до сих пор остается загадкой какую же роль в этом алгоритме играют эти красные плюсы "--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+"
Спасибо за помощь.
Точно не помню, а проверять лениво. Попробуйте добавить квадратные скобки
Добавил квадратные скобки void PrintArray(double &eArray[]) Компилятор ни показал ни одной ошибки и ни одного предупреждения.
НО..... функция Print() почему то не напечаталась ни одного раза.
Вашу лень понимаю, потому что сам такой. Если лень пройдет и на ее место придет энтузиазм , буду Вам признателен , если подскажете что еще не правильно в пользовательской функции.
Спасибо за помощь и извините за беспокойство.