Обсуждение статьи "Введение в MQL5 (Часть 5): Функции для работы с массивами для начинающих"

 

Опубликована статья Введение в MQL5 (Часть 5): Функции для работы с массивами для начинающих:

В пятой статье из нашей серии мы познакомимся с миром массивов в MQL5. Статья предназначена для начинающих. В статье попытаемся упрощенно рассмотреть сложные концепции программирования, чтобы материал был понятен всем. Давайте вместе будем изучать основные концепции, обсуждать вопросы и делиться знаниями!

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

Главное в этой статье — простота и ясность. Я хочу помочь тем, кто интересуется программированием. Хотя тема может показаться сложной, мы будем изучать каждую функцию массива по одной строке, чтобы процесс обучения был интересным и полезным. Мы вместе будем решать задачи и учиться применять знания в алгоритмической торговле. Это не просто статья — это приглашение начать изучение программирования.

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

Автор: Israel Pelumi Abioye

 
Спасибо, что поделились своими знаниями о разнице между ArrayGetAsSeries и ArrayIsSeries, которую я пытался понять уже некоторое время. Мне нравится ваш подход к объяснению сложной темы в доступной для новичков форме, подкрепленной аналогиями... Я также немного запутался в разнице между ArrayCopy и ArrayInsert. Буду признателен, если вы включите это в следующую статью.
 
Oluwatosin Mary Babalola #:
Спасибо, что поделились своими знаниями о разнице между ArrayGetAsSeries и ArrayIsSeries, которую я пытаюсь понять уже некоторое время. Мне нравится ваш подход к объяснению сложных тем в доступной для новичков форме, подкрепленной аналогиями... Я также немного запутался в разнице между ArrayCopy и ArrayInsert. Я был бы признателен, если бы вы включили это в свою следующую статью.
Здравствуйте, Олуватосин, ваш запрос принят к сведению.
 
Oluwatosin Mary Babalola #:
Спасибо, что поделились своими знаниями о разнице между ArrayGetAsSeries и ArrayIsSeries, которую я пытаюсь понять уже некоторое время. Мне нравится ваш подход к объяснению сложных тем в доступной для новичков форме, подкрепленной аналогиями... Я также немного запутался в разнице между ArrayCopy и ArrayInsert. Буду признателен, если вы включите это в следующую статью.

Знаете ли вы о книге по программированию на MQL5? В частности, в ней рассматриваются функции "последовательности" (направления) массивов, а также копии и вставки - вот выдержка:

В отличие от функции ArrayInsert, функция ArrayCopyне смещает существующие элементы принимаемого массива, а записывает новые элементы в указанные позиции поверх старых.

Оба раздела содержат примеры программ.

MQL5 Book: Common APIs / Working with arrays / Timeseries indexing direction in arrays
MQL5 Book: Common APIs / Working with arrays / Timeseries indexing direction in arrays
  • www.mql5.com
Common APIs - MQL5 Programming for Traders - MetaTrader 5 algorithmic/automatic trading language manual
 
Oluwatosin Mary Babalola #:
Спасибо, что поделились своими знаниями о разнице между ArrayGetAsSeries и ArrayIsSeries, которую я пытаюсь понять уже некоторое время. Мне нравится ваш подход к объяснению сложных тем в доступной для новичков форме, подкрепленной аналогиями... Я также немного запутался в разнице между ArrayCopy и ArrayInsert. Буду признателен, если вы включите это в следующую статью.

Разница между ArrayInsert и ArrayCopy:

Основное различие между "ArrayInsert()" и "ArrayCopy()" заключается в том, как они обрабатывают уже существующие элементы. "ArrayCopy()" может изменять исходный массив, заменяя элементы из другого массива на элементы в заданной позиции. С другой стороны, "ArrayInsert()" сохраняет структуру и последовательность массива, перемещая текущие элементы, чтобы освободить место для новых. По сути, "ArrayInsert()" предоставляет универсальный метод манипулирования массивами в MQL5, подобно добавлению нового элемента в последовательность, не вызывая перемещения других элементов. Понимание этого различия позволит вам точно манипулировать операциями с массивами в процессе программирования.

Обратите внимание, что для статических массивов, если количество вставляемых элементов равно или превышает размер массива, "ArrayInsert()" не добавит элементы из исходного массива в массив назначения. При таких обстоятельствах вставка может произойти только в том случае, если она начинается с индекса 0 массива назначения. В этих случаях массив назначения фактически полностью заменяется исходным массивом.

Аналогия

Представьте, что у вас есть два набора строительных блоков (массивов), каждый из которых имеет свое уникальное расположение. Теперь, допустим, вы хотите объединить эти наборы, не испортив существующие структуры. "ArrayInsert()" - это как волшебный инструмент, позволяющий плавно вставлять новые блоки из одного набора в определенное место другого набора, расширяя общую коллекцию.

Теперь сравним "ArrayInsert()" с "ArrayCopy()": Когда вы используете "ArrayCopy()", это похоже на перестановку исходного набора путем замены некоторых блоков на новые из другого набора. С другой стороны, "ArrayInsert()" более деликатен. Она следит за сохранением существующего порядка, перемещая блоки, чтобы освободить место для новых. Это как дотошный помощник, который точно знает, куда положить каждый блок, сохраняя первоначальный дизайн набора.

Для статических наборов (массивов) существует важное правило. Если количество новых блоков слишком велико для набора, "ArrayInsert()" не будет их вставлять. Однако, начав процесс вставки с самого начала набора (индекс 0), можно эффективно заменить весь набор новыми блоками.