Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 73
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Артём, ты не прав. Массив объявленный на глобальном уровне виден во всех частях программы и передавать его куда-то откуда-то совсем не надо. Просто в одном месте программы он заполняется, в другом сортируется, а в третьем читается, не важно.
Одна и та же функция может с успехом сортировать и/или искать данные в разных массивах. Верно? А раз так, то лучше массив передавать по ссылке - на будущее. Ну и при вызове функции не помешает видеть с каким массивом она будет работать.
Я вот лишь из этих соображений. Где не прав?
Одна и та же функция может с успехом сортировать и/или искать данные в разных массивах. Верно? А раз так, то лучше массив передавать по ссылке - на будущее. Ну и при вызове функции не помешает видеть с каким массивом она будет работать.
Я вот лишь из этих соображений. Где не прав?
Понял. Твой совет для лего-программистов. Сам-то такими извращениями не занимаешься.
Тогда остаётся одно, не прав в том, что массив должен быть объявлен на глобальном уровне.
Рад что мы друг-друга поняли.
Понял. Твой совет для лего-программистов. Сам-то такими извращениями не занимаешься.
Тогда остаётся одно, не прав в том, что массив должен быть объявлен на глобальном уровне.
Рад что мы друг-друга поняли.
В данном контексте я веду к чему:
Исходя их этого - массивы всё же лучше иметь глобальные - для закрытых и открытых ордеров и позиций. Один раз на новом тике мы проходим по одному разу по необходимому количеству ордеров/позиций, заполняя ими два массива. А далее уже на этом же тике мы получаем с них все нужные нам данные. Причём у меня рассчитываются не только последний закрытый/открытый ордер/позиция и все их данные, но и ищутся все родительские и дочерние тикеты всех позиций при частичном закрытии. Соответственно, я в любой момент времени могу поглядеть от какого тикета произошла та или иная позиция если она не единожды закрывалась частично - всё это уже работает в одном классе, который работает в таймере. Ну и многие другие необходимые мне данные я имею при небольшом итоговом количестве циклов. Для тестера задаётся нужная глубина истории для массивов.
И т.д., и т.п. ...
В данном контексте я веду к чему:
Исходя их этого - массивы всё же лучше иметь глобальные - для закрытых и открытых ордеров и позиций. Один раз на новом тике мы проходим по одному разу по необходимому количеству ордеров/позиций, заполняя ими два массива. А далее уже на этом же тике мы получаем с них все нужные нам данные. Причём у меня рассчитываются не только последний закрытый/открытый ордер/позиция и все их данные, но и ищутся все родительские и дочерние тикеты всех позиций при частичном закрытии. Соответственно, я в любой момент времени могу поглядеть от какого тикета произошла та или иная позиция если она не единожды закрывалась частично - всё это уже работает в одном классе, который работает в таймере. Ну и многие другие необходимые мне данные я имею при небольшом итоговом количестве циклов. Для тестера задаётся нужная глубина истории для массивов.
И т.д., и т.п. ...
Значит мы не совсем друг-друга поняли.
Если массив глобальный, зачем его передавать в функцию по ссылке если он и так виден внутри этой функции?
Значит мы не совсем друг-друга поняли.
Если массив глобальный, зачем его передавать в функцию по ссылке если он и так виден внутри этой функции?
Перегрузка функций - есть такое понятие же ;)
Если нужно делать одинаковые действия с разными массивами в одной функции, то ...
Впрочем - мы обсуждаем разные частные случаи...
Перегрузка функций - есть такое понятие же ;)
Если нужно делать одинаковые действия с разными массивами в одной функции, то ...
Впрочем - мы обсуждаем разные частные случаи...
Ну, слава Богу, я понял твои мысли. Но они очень похожи на совет лего-программистам.
Было бы очень странно, имея в запасе огромное множество 100%-рабочих функций, каждый раз писать их заново. Это не советы собирателям домиков из кубиков. Это советы накапливать собственные библиотеки функций и классы. И что плохого в том, что одна функция работает с несколькими массивами в зависимости от того, какой из них в неё передан по ссылке? А что плохого в шаблонах функций?
Если есть код для сортировки массива, зачем под каждый тип массива писать отдельную функцию? Ведь можно просто сделать перегрузку и сортировать любой тип. Как думаешь работает ArraySort() ? Ты же туда передаёшь разные типы массивов, а на выходе получаешь отсортированный тот, который передал - или метаквоты тоже лего-кодеры что-ли?
Было бы очень странно, имея в запасе огромное множество 100%-рабочих функций, каждый раз писать их заново. Это не советы собирателям домиков из кубиков. Это советы накапливать собственные библиотеки функций и классы. И что плохого в том, что одна функция работает с несколькими массивами в зависимости от того, какой из них в неё передан по ссылке? А что плохого в шаблонах функций?
Если есть код для сортировки массива, зачем под каждый тип массива писать отдельную функцию? Ведь можно просто сделать перегрузку и сортировать любой тип. Как думаешь работает ArraySort() ? Ты же туда передаёшь разные типы массивов, а на выходе получаешь отсортированный тот, который передал - или метаквоты тоже лего-кодеры что-ли?
Главное не дойти до такого вот.
https://www.mql5.com/ru/forum/165468/page3#comment_3978059
Главное не дойти до такого вот.
https://www.mql5.com/ru/forum/165468/page3#comment_3978059
есть переменная
int Level = 0;
В процессе работы программы она постоянно меняется. Помогите написать условие: если Level НЕ изменилось, то ничего не делаем, если Level изменилось (не важно в большую или меньшую сторону) то делать определенное действие { оператор }