English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Как протестировать торгового робота перед покупкой

Как протестировать торгового робота перед покупкой

MetaTrader 5Тестер | 9 ноября 2012, 12:48
140 495 34
MetaQuotes
MetaQuotes

Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями -  вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление - ведь для каждого эксперта в MQL5 Маркете доступна демо-версия.

Помните: при покупке торгового робота вы рискуете не только уплаченной суммой, но и потенциальными убытками, которые он может принести в результате торговли на реальном счете.

Рассмотрим на примере бесплатного эксперта Three Moving Averages, который скачаем прямо в терминал MetaTrader 5. В нем реализована классическая стратегия торговли по трем скользящим средним.

Скачивание советника из MQL5 Маркета прямо в терминале MetaTrader 5


Способы оценки робота по результатам тестирования

Хотя и не существует универсального метода, который даст вам 100%-ую уверенность в торговом роботе, но есть простые способы проверки основных параметров предлагаемой торговой системы в тестере терминала MetaTrader 5. Вот самые основные и доступные: 

  • стресс-тестирование в режиме произвольной задержки,
  • тестирование в другом торговом окружении,
  • тестирование на чужом символе/таймфрейме,
  • тестирование на неблагоприятном участке истории,
  • тестирование на расширенном периоде истории (после даты публикации советника в MQL5 Маркет),
  • форвард-тесты.

Кроме того, необходимо обратить ещё внимание на возможные подозрительные показатели:

  • слишком высокий профит-фактор,
  • огромное значение прибыли на истории,
  • большое количество внешних параметров торговой системы,
  • хитрые правила манименеджмента.

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

Запуск эксперта из меню Навигатора

Выбираем в контекстном меню команду "Test", и автоматически появляется панель тестера торговых стратегий с уже выбранным экспертом. Всё готово для проверки скаченного эксперта, и мы готовы рассмотреть предложенные способы оценки детально.


Режим тестирования с произвольной задержкой

Тестер стратегий, в первую очередь, предназначен для тестирования торговых правил системы. Это означает, что в тестере эмулируются идеальные условия для выполнения всех процессов:

  • отправка торговых запросов,
  • обновление состояния открытых позиций и отложенных ордеров,
  • поступление торговых событий,
  • получение ценовой истории,
  • расчет индикаторов и многое другое.

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

Установка режима с произвольной задержкой

Этот режим тестирования хорошо выявляет:

  • ошибки обработки торговых операций,
  • подгонку стратегии под специфические условия торговли.

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

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

Сравнение результатов тестирования при разных режимах исполнения торговых приказов

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

Вывод: эксперт Three Moving Averages прошёл это испытание - тестирование в режиме произвольной задержки не изменило существенно торговые результаты.


Тестирование в другом торговом окружении

Прогоните тестирование торгового робота в тех же условиях, что указаны в его описании в MQL5 Маркет. А затем подключитесь к счету другого брокера, и проведите проверку в тестере еще раз. Это чем-то похоже на предыдущую проверку со стресс-тестированием и также позволяет проверить, насколько незначительные изменения в котировках и торговых условиях (размер спреда, допустимые уровни StopLoss/TakeProfit и т.д.) могут изменять результаты торговли.

Например, приведены результаты тестирования эксперта на счете брокера A для валютной пары EURUSD. Проведите точно такое же тестирование такого же инструмента EURUSD, но на счете брокера B. Если результаты будут сильно отличаться - это также хороший повод задуматься над необходимостью покупки такого робота.


Чужой символ/таймфрейм

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

Скачайте демо-версию эксперта и запустите его на другом символе и/или периоде. Во-первых, необходимо убедиться, что при неправильных условиях запуска эксперт не вылетит с критической ошибкой и не начнет забивать лог сообщениями о торговой ошибке.  Во-вторых, посмотрите, не превратилась ли из-за этой смены настроек стратегия из прибыльной в экстремально убыточную - такое часто бывает в случае подгонки.

Один из самых простых способов устроить такую проверку для эксперта является режим оптимизации по всем инструментам из Обзора рынка. Запускаем оптимизацию советника в этом режиме на достаточно большом интервале на таймфрейме H1 с генерацией "Все тики" и достаточно быстро получаем ответ на второй вопрос.

 режим оптимизации во всем инструментам из "Обзора рынка"

Результаты такой оптимизации показывают, что стратегия имеет право на жизнь - на каждом символе есть статистически достаточное количество трейдов и нет совсем уж плохих результатов. Напомним, что мы тестировали одну стратегию на всех 13 символах из Обзора рынка с одними и теми же параметрами - с параметрами по умолчанию.

Результаты оптимизации во всем инструментам из "Обзора рынка"

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

Вывод: эксперт Three Moving Averages нормально тестируется на чужом символе/таймфрейме, явные ошибки в коде при такой проверке не обнаружены.


Тестирование на неблагоприятном участке

Мы выяснили, что наилучшие результаты этот эксперт показал на валютной паре GBPUSD. Но что, если это не является закономерностью, а просто по счастливой случайности период тестирования 2012.01.01-2012.09.28 оказался благоприятным? Для выяснения этого вопроса запустим эксперта на тестирование с теми же параметрами на 2011 году - возьмем интервал 2011.01.01-2011.12.31. Запускаем и видим результат.

График тестирования на неблагоприятном участке

Эксперт уже не показывает прибыль и стал вдруг гораздо менее привлекательным. Причем потери за 2011 год значительно превышают показанную в тестере прибыль на интервале 2012.01.01-2012.09.28. Но зато мы теперь знаем о возможных убытках и при торговле на GBPUSD.

Вывод: эксперт Three Moving Averages нуждается в доработке для правильного автоматического реагирования на изменения в поведении рынка, либо нужно правильно находить нужные параметры для каждого интервала через оптимизацию.


Тестирование на расширенном периоде истории

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

Форвардное тестирование - это тестирование на участке истории, который не участвовал в подборе оптимальных параметров. Продолжая разбор этого эксперта на примере тестирования GBPUSD, возьмем немного больший интервал тестирования, включающий историю после 28 сентября 2012 года. Выставим конечную дату на 2012.11.26, то есть захватим дополнительно почти два месяца. Итак, запускаем тестирование на периоде 2012.01.01-2012.11.26 и получаем новый график тестирования:

График тестирования на расширенном периоде истории

В данном случае на дополнительном коротком интервале интервале (Forward) эксперт Three Moving Averages показал даже лучшие результаты, чем за предыдущие 10 месяцев. Но так бывает очень редко.

Вывод: эксперт Three Moving Averages при тестировании на GBPUSD на расширенном периоде истории не показал ухудшение торговых показателей.


Форвард-тесты

Форвардные тесты применяются для оценки стабильности торговой системы при изменении характера рынка в будущем. Оптимизация параметров в тестере позволяет получить параметры, при которых торговый робот показывает наилучший результат на истории для заданного интервала. Но это не гарантирует, что найденные параметры будут также хорошо подходить для торговли хотя бы в ближайшем будущем.

Трейдеры - разработчики автоматических торговых систем зачастую путают между собой такие понятия, как оптимизация и подгонка под историю (over curve fitting - чрезмерная подгонка под заданные критерии). Найти ту границу, которая отделяет законную оптимизацию от подгонки под исторические данные чрезвычайно трудно. Именно для объективной оценки найденных параметров и были придуманы форвардные тесты.

В тестере стратегий терминала MetaTrader 5 при оптимизации можно указать на необходимость проведения форвардного тестирования найденных оптимальных параметров и задать необходимые границы. Подвергнем нашего торгового робота этой проверке с показанными настройками.

Установка форвардного режима оптимизации

Для режима Forward указано значение 1/4 - это означает, что заданный интервал 2012.01.01-2012.11.26 будет разбит на 4 части. На первых 3/4 истории будет произведен поиск оптимальных параметров, а на оставшейся 1/4 части для лучших 25% проходов (наборов параметров эксперта) будет проведено тестирование на форвардном участке.

Зададим, какие параметры мы будем оптимизировать - выберем те, которые должны влиять на торговую логику. Поэтому параметры, отвечающие за манименеджмент (Inp_Money_FixLot_Percent и Inp_Money_FixLots_Lots) мы не будем оптимизировать.

Параметры для оптимизации

При такой комбинации шага, начальных и конечных значений мы получили  почти 5 миллионов проходов. Имеет смысл использовать генетический алгоритм и подключить для оптимизации MQL5 Cloud Network.

Итак, перед нами график оптимизации с форвардными проходами, которая в целом заняла 21 минуту и обошлась в 0.26 кредита за более чем 4000 проходов на облачных агентах тестирования. Пример расчета стоимости приведен в теме MQL5 Cloud Network: Вы все еще считаете?

График результатов тестирования на форвардном участке

При первом взгляде на него кажется, что здесь что-то не так. Открываем результаты и видим, что первые три оптимизируемых параметра одинаковы во всех проходах. И только два последних параметра Inp_Signal_ThreeEMA_StopLoss и Inp_Signal_ThreeEMA_TakeProfit имеют разное значение.

Таблица результатов форвадных проходов

Из этого можно сделать два предположения:

  • данные параметры, а именно значения StopLoss и TakeProfit, фактически не влияют на торговые результаты;
  • при оптимизации мы попали в локальный экстремум, из которого генетический алгоритм не смог выбраться.

Проверим обе догадки повторной оптимизацией с теми же настройками и входными параметрами. На этот раз график форвардных результатов немного изменился.

Еще один график повторной оптимизации на форвардном периоде

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

Вывод: оптимизация эксперта Three Moving Averages на GBPUSD показала, что торговая логика зависит только от трех параметров из семи.

Сделаем последнюю попытку - уберем ненужные параметры из оптимизации, теперь у нас всего 1650 проходов.

Уменьшенный набор параметров для оптимизации

Поэтому имеет смысл запустить уже не генетическую оптимизацию, а полный перебор параметров. В этом случае MQL5 Cloud Network предоставит нам значительно больше агентов, и как результат - времени будет затрачено меньше.

Использование агентов MQL5 Cloud Network при полном переборе параметров

2000 облачных агентов справились за 7 минут с этой задачей, график форвардных тестов выглядит неплохо.

График оптимизации

Большая часть проходов на форвардном периоде оказалась прибыльной - количество точек выше начальных $10 000 гораздо больше, чем в убыточной зоне. Это немного радует, но всё же не означает, что в будущем все эти найденные наборы параметров также окажутся прибыльными.


Количество параметров в торговой системе

Как мы уже видели, не все параметры стратегии, доступные для настройки торгового робота, могут быть одинаково важными и влиять на результаты торговли. Если в данном случае для эксперта значения Inp_Signal_ThreeEMA_StopLoss и Inp_Signal_ThreeEMA_TakeProfit почти не оказывали влияния, то чаще бывает другая ситуация - предлагаемый торговый робот может иметь множество параметров для настройки.

Большое количество параметров позволяет очень точно настроить робота на конкретный участок истории и при оптимизации есть очень большая вероятность получить подгонку параметров.

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

Считается, чем меньше торговая система имеет параметров для настройки, тем меньше вероятность, что найденная закономерность исчезнет в будущем. И наоборот - чем больше параметров в системе, тем меньше вероятность, что рынок сохранит свои характеристики в соответствии со столь тонкой настройкой эксперта. В качестве доказательства настоятельно рекомендуем ознакомиться с результатами анализа сделок в статье Оптимизация против реальности на примере Чемпионата 2011,  о которой мы упомянем и дальше.

Зависимость баланса от количества параметров

На графике представлены результаты торговли участников на Automated Trading Championship 2011, на вертикальной оси отражается размер счета на момент окончания чемпионата, по горизонтальной оси показано количество внешних параметров в эксперте, сами эксперты показаны красными ромбиками. Хорошо видно, что эксперты, которые имеют большое количество параметров, при торговле на форвардном периоде чемпионата получили убытки или в лучшем случае остались при своих.

Отсутствие внешних параметров у предлагаемого на продажу робота также ничего не говорит об универсальности заложенных в нём торговых правил и не может служить показателем крутизны. Скорей всего, разработчик эксперта по какой-то причине просто жестко зашил в него внешние параметры.


Огромный профит-фактор

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

Многие разработчики автоматических торговых роботов впадают в крайность и стараются максимально снизить количество убыточных сделок и суммарного убытка. Для этого они начинают для улучшения результатов в тестере добавлять дополнительные фильтры, которые позволяют избегать убыточных сделок - тем самым улучшают профит-фактор. Дополнительные фильтры имеют свои параметры для настроек, и отсюда, как правило, растёт общее количество входных параметров.

Профит-фактор - это отношение значения суммарной прибыли к значению суммарного убытка.  Для прибыльных систем профит-фактор всегда больше 1. Но если перестараться и переоптимизировать торговую систему в тестере стратегий, то этот показатель может достигать больших значений. Приведем еще один график из статьи Оптимизация против реальности на примере Чемпионата 2011.

Огромный профит-фактор при оптимизации

Хорошо видно, что практически все торговые роботы, которые имели слишком большой профит-фактор при тестировании на истории, на форвардном участке чемпионата Automated Trading Championship 2011 не смогли даже близко повторить своих результатов, фактически все они слили свои счета. Это означает, что большое значение профит-фактора в тестере было достигнуто за счет подгонки стратегии под конкретный интервал, на котором оптимизировался торговый робот.


Огромная прибыль на истории

Еще одним настораживающим фактом может быть огромная прибыль, которая заявляется в описании торгового робота. Если в приложенных отчетах тестера показан график баланса, упирающийся в небо, то скорей всего перед нами результат подгонки. Часто разработчики таких "печатных станков" сами не понимают, что перестарались с оптимизацией и количеством внешних параметров. Подкрепим это утверждение еще одним графиком из уже упоминавшегося отчета Оптимизация против реальности на примере Чемпионата 2011.

Огромная прибыль на истории является подгонкой

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


Манипуляции манименеджментом

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

Выявить такую подгонку опять-таки проще всего тестированием вне участка истории, на котором получены результаты, заявленные разработчиком при описании своего торгового робота. Чем сильнее использовалась подгонка, тем выше вероятность, что робот разобьётся при таком испытании.


Верить нельзя никому. Даже себе

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

Ну и, конечно же, эксперт с хорошими результатами, показанными в сервисе Сигналы на достаточно длительном периоде, будет заслуживать больше доверия, чем эксперт, не имеющий такого подтверждения. Но в любом случае избегайте головокружения от подсчета будущих прибылей и не забывайте два правила, которые никто не отменял:

  1. верить нельзя никому,
  2. и никакие прошлые торговые успехи не могут являться гарантией прибыльности в будущем.


Рекомендуем вам также прочитать следующие статьи по Маркету:


Последние комментарии | Перейти к обсуждению на форуме трейдеров (34)
Vladimir Karputov
Vladimir Karputov | 8 апр. 2021 в 14:25
Maksim Mihajlov:
Здравствуйте, не скачиваются демки с маркета, ошибку выдают:
2021.04.08 19:15:12.203 MQL5 Market failed download product 'BigExpert mt5' (www.mql5.com:443 send failed [426: ])


Пробовал и другие, то же самое!

1. Прикрепите лог-файл из вкладки "Журнал".

2. Компьютер домашний?

Maksim Mikhailov
Maksim Mikhailov | 8 апр. 2021 в 14:49
Комп стационарный.

KM 0 01:09:49.765 Terminal ForexClub MT5 build 2361 started for Forex Club International Limited
HE 0 01:09:49.766 Terminal Windows 7 Service Pack 1 build 7601, AMD Phenom II X4 965 Processor, 0 / 2 Gb memory, 18 / 97 Gb disk, IE 11, Admin, GMT+7
RF 0 01:09:49.766 Terminal C:\Program Files\ForexClub MT5
DI 0 01:09:54.675 Network '500064378': authorized on ForexClub-MT5 Demo Server through mt5_dc4 (ping: 145.52 ms, build 2815)
MK 0 01:09:54.675 Network '500064378': previous successful authorization performed from 213.87.122.26 on 2021.04.07 18:53:56
PF 0 01:09:54.812 Indicators custom indicator Elliott Wave (NZDUSD,M1) loaded succesfully
OH 0 01:09:55.020 Network '500064378': terminal synchronized with Forex Club International Limited
OP 0 01:09:55.020 Network '500064378': trading has been enabled - hedging mode
DH 2 01:10:13.074 MQL5 Market failed download product 'Oracle' (www.mql5.com:443 send failed [426: ])
MI 0 01:10:24.530 Terminal exit with code 0
MF 0 01:10:25.294 Terminal stopped
LM 0 19:14:39.072 Terminal ForexClub MT5 build 2361 started for Forex Club International Limited
ME 0 19:14:39.112 Terminal Windows 7 Service Pack 1 build 7601, AMD Phenom II X4 965 Processor, 1 / 2 Gb memory, 20 / 97 Gb disk, IE 11, Admin, GMT+7
GI 0 19:14:42.850 Network '500064378': authorized on ForexClub-MT5 Demo Server through mt5_dc4 (ping: 145.52 ms, build 2815)
CK 0 19:14:42.850 Network '500064378': previous successful authorization performed from 213.87.122.26 on 2021.04.07 21:09:54
DE 0 19:14:43.028 Indicators custom indicator Elliott Wave (NZDUSD,M1) loaded succesfully
RH 0 19:14:43.166 Network '500064378': terminal synchronized with Forex Club International Limited
RP 0 19:14:43.166 Network '500064378': trading has been enabled - hedging mode
NP 2 19:14:53.783 MQL5 Market failed download product 'BigExpert mt5' (www.mql5.com:443 send failed [426: ])
QO 0 19:14:56.254 Network '500064378': scanning network finished
MD 2 19:15:12.203 MQL5 Market failed download product 'BigExpert mt5' (www.mql5.com:443 send failed [426: ])
CF 2 19:15:30.575 MQL5 Market failed download product 'BigExpert mt5' (www.mql5.com:443 send failed [426: ])
DH 2 19:15:32.734 MQL5 Market failed download product 'BigExpert mt5' (www.mql5.com:443 send failed [426: ])
QM 2 19:16:40.225 MQL5 Market failed download product 'BigExpert mt5' (www.mql5.com:443 send failed [426: ])
NO 2 19:17:00.987 MQL5 Market failed download product 'To The Moon EA MT5' (www.mql5.com:443 send failed [426: ])
CN 2 19:17:52.808 MQL5 Market failed download product 'To The Moon EA MT5' (www.mql5.com:443 send failed [426: ])


Vladimir Karputov
Vladimir Karputov | 8 апр. 2021 в 14:54
Maksim Mihajlov:
Комп стационарный.



Разрядность операционной системы?

Maksim Mikhailov
Maksim Mikhailov | 8 апр. 2021 в 15:10

32 бит

Vladimir Karputov
Vladimir Karputov | 8 апр. 2021 в 15:12
Maksim Mihajlov:

32 бит

Операционная система 32 больше не поддерживается - нужна 64-битная система (это обязательно).

Также рекомендуется использовать Windows 10 со всеми обновлениями.

Изменяем параметры эксперта с пользовательской панели "на лету" Изменяем параметры эксперта с пользовательской панели "на лету"
В этой статье приводится небольшой пример реализации эксперта, для которого можно изменять параметры с пользовательской панели. Изменяя параметры "на лету", эксперт записывает значения с информационной панели в файл, а затем читает их из файла для отображения на панели. Статья может быть актуальной для тех, кто торгует в ручном или полуавтоматическом режиме.
Интервью с Дмитрием Терентьевым (ATC 2012) Интервью с Дмитрием Терентьевым (ATC 2012)
Нужно ли быть программистом, чтобы писать торговых роботов? Должны ли вы провести годы в наблюдении за графиками цен, чтобы понять рынок и почувствовать его пульс? Эти вопросы мы затронули в интервью с Дмитрием Терентьевым (SAFF), чей торговый робот держится на первой странице Чемпионата с самого его начала.
MetaTrader 4 на Linux MetaTrader 4 на Linux
В этой статье расскажем, как одной командой установить MetaTrader 4 в популярных версиях Linux — Ubuntu и Debian. Эти системы широко используются как крупными компаниями для серверного оборудования, так и обычными трейдерами.
Основы программирования на MQL5 - Массивы Основы программирования на MQL5 - Массивы
Наряду с переменными и функциями, массивы являются практически неотъемлемой частью любого языка программирования. Статья должна быть интересна в первую очередь новичкам, приступившим к изучению программирования на MQL5. Опытным программистам представляется хорошая возможность подытожить, обобщить и систематизировать свои знания.