Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Иногда нужно убрать первый элемент, приходится сдвигать нумерацию, если лень переписать как нужно.
А так, конечно динамический массив правильней, но громоздко для меня, ресайз, сайз, ресайз)))
В общем неправильно делаю, где можно объявляю стат массив размера побольше, и иницилизирую нулем перед записью от мусора, а гоняю цикл на заведомо меньшем размере.
В общем с массивами вы не дружите, а зря.
Есть такая примочка как копирование массива «сам в себя»…
Допустим имеем массив из 3 элементов и при появлении нужного значения надо нулевой удалить, а новый записать в последний индекс.
результат
В общем с массивами вы не дружите, а зря.
Есть такая примочка как копирование массива «сам в себя»…
Допустим имеем массив из 3 элементов и при появлении нужного значения надо нулевой удалить, а новый записать в последний индекс.
результат
Не то что бы не дружу, просто думаю что под капотом копирования массива тот же цикл, а вероятность ошибки при записи новых данных заново, даже если это один элемент с краю, меньше, а нагрузка такая же. И ошибки искать легче. Если все отлажено, и если такой сдвиг легче, то потом можно код и оптимизировать.
Спасибо за пример)))Не то что бы не дружу, просто думаю что под капотом копирования массива тот же цикл, а вероятность ошибки при записи новых данных заново, даже если это один элемент с краю, меньше, а нагрузка такая же. И ошибки искать легче. Если все отлажено, и если такой сдвиг легче, то потом можно код и оптимизировать.
Спасибо за пример)))Думаю не цикл. Мне кажется, там всё на области памяти построено.
Добавлю для начинающих изучать язык программирования MQL5 список горячих клавиш, которые существенно облегчают работу с редактором MetaEditor. Очень удобная штука, помогающая не только в процессе самообучения, но и в повседневной жизни.
Горячие клавиши — это клавиши и их комбинации, которые позволяют быстро выполнять различные команды без обращения к меню и панелям управления. Горячие клавиши выполняют разные функции в зависимости от того, какое окно интерфейса MetaEditor в текущий момент активно. Некоторые горячие клавиши выполняют одни и те же функции, независимо от фокуса.
Горячие клавиши в окне редактирования кода
Горячие клавиши
Описание
Ctrl + Z
Отменить последнее действие.
Ctrl + Y
Повторить последнее отмененное действие.
Ctrl + X
Вырезать выделенный фрагмент для последующей вставки.
Ctrl + C
Скопировать выделенный фрагмент в буфер обмена.
Ctrl + V
Вставить вырезанный или скопированный фрагмент в текущем положении курсора.
Delete
Удалить выделенный фрагмент.
Ctrl + A
Выделить весь текст редактируемого файла.
Ctrl + F
Вызвать окно поиска.
F3
Найти следующий элемент по текущему поисковому запросу.
Shift + F3
Найти предыдущий элемент по текущему поисковому запросу.
Ctrl + H
Вызвать окно поиска с заменой.
Ctrl + F2
Включить или выключить закладку в выбранной строке в зависимости от ее текущего состояния.
F2
Перейти к следующей закладке.
Shift + F2
Перейти к предыдущей закладке.
Ctrl + Shift + F2
Убрать все закладки из текущего файла.
Ctrl + Space
Вызвать список возможных вариантов названий функций для подстановки при написании кода программы. Варианты подстановки определяются по первым набранным символам.
Ctrl + Shift + Space
Показать сигнатуру текущей функции: порядок и типы параметров, задаваемых в функции, а также подсветка текущего редактируемого параметра.
F8
Перейти к следующей ошибке или предупреждению, найденному в коде в результате компиляции.
Shift + F8
Перейти к предыдущей ошибке или предупреждению, найденному в коде в результате компиляции.
Alt + G
Перейти к объявлению или определению текущей выбранной функции или переменной.
Alt + M
Открыть список всех функций, объявленных в коде текущей программы.
Ctrl + '
Вставить комментарии "//" в начале каждой выделенной строки.
Ctrl + ;
Убрать комментарии "//" из начала каждой выделенной строки.
Ctrl + /
Вставить в указанную позицию символы однострочного комментария.
Ctrl + .
Вставить в указанную позицию заготовку для комментария к функции.
Ctrl + ,
Запустить стилизатор для оформления кода текущего редактируемого файла.
Ctrl + цифра 0-9
Установить именованную закладку.
Alt + цифра 0-9
Перейти к именованной закладке.
Ctrl + - или
Alt + Стрелка влево
Перейти к предыдущей строке, в которой находился курсор. Переход возможен только в пределах открытых в данный момент файлов.
Ctrl + Shift + - или
Alt + Стрелка вправо
Вернуться с предыдущей строки на следующую. Переход возможен только в пределах открытых в данный момент файлов.
Tab
Вставить три пробела (символ табуляции) перед выделенными строками.
Tab + Shift
Убрать три пробела (символ табуляции) перед выделенными строками.
Ctrl + Shift + U
Перевести буквы выделенной фразы в верхний регистр.
Ctrl + U
Перевести буквы выделенной фразы в нижний регистр.
Ctrl + Tab
Переключиться на предыдущее открытое окно редактирования кода.
Ctrl + Shift + Tab
Переключиться на следующее открытое окно редактирования кода.
Горячие клавиши для отладки
Горячие клавиши
Описание
F5
Начать отладку текущей выбранной программы.
Break
Временно прервать отладку.
Shift + F5
Прекратить процесс отладки.
F11
Шаг с заходом: пройти один шаг выполнения программы с заходом в вызываемые функции.
F10
Шаг с обходом: пройти один шаг выполнения программы без захода в вызываемые функции.
Shift + F11
Шаг наружу: переход к выполнению одного шага программы на один уровень выше по стеку вызовов.
F9
Включить или выключить точку останова в текущей строке редактируемого файла в зависимости от ее текущего состояния.
Shift + F9
Добавить выделенное в коде программы выражение в наблюдение.
Общие действия в MetaEditor
Горячие клавиши
Описание
Ctrl + N
Открыть окно "Мастер MQL4/MQL5".
Ctrl + O
Открыть файл.
Ctrl + S
Сохранить изменения в текущем редактируемом файле.
Ctrl + F4
Закрыть текущий редактируемый файл.
F7
Компилировать текущий редактируемый файл.
Ctrl + F7
Компилировать все файлы, открытые в данный момент на редактирование.
Ctrl + Break
Отменить компиляцию.
Ctrl + P
Открыть окно печати текущего файла.
Ctrl + Shift + F
Открыть окно поиска в файлах.
Ctrl + D
Скрыть или показать окно "Навигатор".
Ctrl + T
Скрыть или показать окно "Инструменты".
F4
Переключиться к торговой платформе.
F1
Вызвать справку по MetaEditor.
Ctrl + F1
Поиск по сайту MQL4.community/MQL5.community.
F12
Включить/выключить полноэкранный режим.
Горячие клавиши в окне "Навигатор"
Горячие клавиши
Описание
Enter
Открыть выбранный файл.
Insert
Создать папку в текущей выбранной.
F2
Переименовать выбранный файл или папку.
Delete
Удалить выбранный файл или папку.
F5
Обновить окно "Навигатор".
Горячие клавиши в окне "Инструменты"
Горячие клавиши
Описание
Enter
Перейти к строке, найденной ошибке или элементу поиска по файлам, просмотреть выбранную статью или MQL4/MQL5-программу.
Ctrl + C
Скопировать строку ошибки в буфер обмена.
F2
Редактировать название наблюдаемого выражения на вкладке "Отладка" в разделе наблюдений.
Insert
Добавить новое выражение на вкладке "Отладка" в разделе наблюдений.
Delete
Удалить выделенное выражение на вкладке "Отладка" в разделе наблюдений.
D
Загрузить выбранную MQL4/MQL5-программу из библиотеки.
R
Включить или выключить отображение категорий статей.
G
Включить или выключить сетку, разделяющую поля.
A
Включить или выключить автоматический выбор размера столбцов.
S
Включить или выключить автоматическую прокрутку сообщений на вкладке "Ошибки".
С уважением, Владимир.
Допустим имеем массив из 3 элементов и при появлении нужного значения надо нулевой удалить, а новый записать в последний индекс.
В таком случае, особенно, если массив подлиннее, применяю кольцевой буфер.
В таком случае, особенно, если массив подлиннее, применяю кольцевой буфер.
Я же не говорил, что это единственный или самый правильный вариант… Кому-то нравится поэлементно переносить значения индексов массива Х-тысяч элементов…
В таком случае, особенно, если массив подлиннее, применяю кольцевой буфер.
можно код? или алгоритм?
можно код? или алгоритм?
Основная идея - https://ru.wikipedia.org/wiki/Кольцевой_буфер , имеем массив и указатели (индексы) на голову и хвост (или только один - например, если используем для вычисления среднего, добавляя новый элемент на место самого старого, вот как в этом примере:)
Основная идея - https://ru.wikipedia.org/wiki/Кольцевой_буфер , имеем массив и указатели (индексы) на голову и хвост (или только один - например, если используем для вычисления среднего, добавляя новый элемент на место самого старого, вот как в этом примере:)
В связи с тем, что данная тема предназначена в основном для начинающих программистов, то желательно коды сопровождать подробными комментариями, чтобы они понимали о чём идёт речь. Подчеркиваю, не ОБЯЗАТЕЛЬНО, а ЖЕЛАТЕЛЬНО. Всем за ранее спасибо!
С уважением, Владимир.