Мне вообще не понятно не довольство общественности. И хотя я уже не первый год вынужден программировать на MQL4, меня всякий раз бросает в дрожь, когда я это делаю. Программируя на MQL4 я понял простую вещь, простота прямо пропорциональна сложности языка. Взять к примеру ассемблер. Нет языка проще чем ассемблер. Переходы, регистры, стек, push, pop, add, exchg. Однако это простота оборачивается адом для программиста. Требуется держать в памяти (в своей памяти) целые сегменты кода. Зато простота. Тоже MQL4, я с дрожью вспоминаю моменты, когда мне требовалось объединить несколько разнотипных массивов в одно целое. Это было не возможно. Приходилось индексировать массивы одним индексом, следить, что бы один индекс показывал сразу на несколько типов данных, и что бы все эти типы были одной логической структурой. Это был Ад, вызванной простотой и убогостью MQL4. Теперь есть классы, структуру, перечисления, динамическая работа с памятью. За одно это разработчиком можно упасть в ноженьки: "Спасибо родненькие, что перестали нас считать недоучками, предел понимания которых - это понятие массива и пара операторов".
Этот язык и подобием C++ назвать сложно. Хотя во многом они и схожи. Правда, я C# разработчик, но мне всё-равно какой язык в mql5, вот то что структура советников стала сложнее - это факт
я не профессиональный программист. Экспертов писал на MQL3, 4 и 5. При переходе с 3-ки на 4-ку тоже было много новшеств в том числе и в синтаксисе. При переходе с 4-и на 5-у - пересторится было несложно. Поизучал немного С, С++ и С#, чтобы понимать что такое &, структуры, классы и пр. Я так понимаю как раз на таких как я язык и рассчитан. И в принципе все удобно. Кому не нравится ООП, пишите в обычном стиле.
Я так понимаю профессиональным программистам удобнее писать в общепринятых языках - так запихивайте все расчеты в DLL, а уж функционал обработки приказов достаточно простой. Хотя, я не писал ни одной DLL инаверно много не знаю.
Чтокасается обработки ошибок, так единственое с чем приходилось бороться - это деление на 0. Все остальное - на совести самого брокера, который криво исполняет приказы. Тут ответ на поверхности. Нах.. такой брокер ? Надо менять !
Пишу «в обычном стиле». Но в MQL5 всё самое
необходимое стало сложнее – обращение к таймсериям и индикаторам, отправка
торговых приказов. В MQL4 отправить ордер – одна строка, в MQL5 – десять строк.
Простой робот, переписанный с MQL4 на MQL5, становится в несколько раз больше
по тексту.
Не нужно в лобовую переводить. Используйте стандартные классы торговых функций и все будет наоборот проще.
Механизм работы с таймсериями/индикаторами стал работать быстрее, экономичнее и позволяет оперировать огромной историей, не резервируя 100% памяти под нее, как это было в МТ4.
Язык стал детальнее, уровень контроля над процессами торговых операций серьезно вырос, что дало возможность разработчикам писать более безопасных роботов. Платой за детализацию и эффективность стало повышение сложности, но с другой стороны сложность была снижена применением ООП.
Не секрет, что большую часть информации об окружающем мире человек получает при помощи зрения. Справедливо это и в такой области как трейдинг. Новая платформа MetaTrader 5 и язык MQL5 открывают новые возможности для представления визуальной информации трейдеру. В данной статье предлагается универсальная и расширяемая система классов, которая берет на себя всю черновую работу по организации вывода произвольной текстовой информации.
Renat:...Механизм работы с таймсериями/индикаторами стал работать быстрее, экономичнее и позволяет оперировать огромной историей, не резервируя 100% памяти под нее, как это было в МТ4...
Как оказалось с "огромной историей" не хочет работать тестер. Столкнулся с проблемой: советнику нужно 63000 баров Н1, в тестере он не работает поскольку «видит» только около 10000 баров - проверяю через Bars. На графике работает - «видит» 99000 баров.
История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.
Агент
тестирования закачивает только недостающую историю с небольшим запасом,
чтобы обеспечить необходимые данные на истории для расчета индикаторов
на момент начала тестирования. Минимальный объем истории при скачивании с
торгового сервера для таймфреймов D1 и меньше составляет один год.
Таким образом, если запускается тестирование на интервале
2010.11.01-2010.12.01 (тестирование на интервале в один месяц) с
периодом M15 (каждый бар равен 15 минутам), то у терминала будет
запрошена история по инструменту за весь 2010 год. Для таймфреймов
Weekly будет запрошена история в 100 баров, что составляет примерно два
года (в году 52 недели). Для тестирования на месячном таймфрейме Monthly
агент запросит историю за 8 лет (12 месяцев * 8 лет = 96 месяцев).
Если не удается по каким-либо причинам обеспечить необходимый запас баров перед началом тестирования, то дата начала будет автоматически сдвинута от прошлого к настоящему для того, чтобы обеспечить такой запас.
nasdaq: Как оказалось с "огромной историей" не хочет работать тестер. Столкнулся с проблемой: советнику нужно 63000 баров Н1, в тестере он не работает поскольку «видит» только около 10000 баров - проверяю через Bars. На графике работает - «видит» 99000 баров.
В тестере скорее всего вы сами указали короткий период. Поставьте на всю глубину и попробуйте снова.
HR 0 08:47:31 History EURUSD: history synchronized from 1971.01.04 to 2013.10.28 QH 3 08:47:31 Tester EURUSD: start time changed to 1971.05.27 00:00 to provide data at beginning JQ 0 08:47:31 History EURUSD,H1: contains 101 bars of beginning data from 1971.01.04 00:00 to 1971.05.26 00:00 QO 0 08:47:31 History EURUSD,H1: history cache reserved for estimated 274388 bars CK 0 08:47:31 History EURUSD,H1: history begins from 1971.01.04 00:00 EE 0 08:47:31 Tester EURUSD,H1 (MetaQuotes-Demo): OHLC bar states generating. OnTick executed on the bar begin only FL 0 08:47:31 Tester EURUSD,H1: testing of Experts\Smart Neurons III.ex5 from 1971.01.04 00:00 to 2013.10.28 00:00 started with inputs: NQ 0 08:47:31 Tester Horizon=48 GE 0 08:47:31 Tester History=62400 NR 0 08:47:31 Tester Moving_Average=12 MP 0 08:47:31 Tester Risk=1 LK 0 08:47:31 Smart Neurons III (EURUSD,H1) 1971.05.27 00:00:00 Alert: ERROR HISTORY BARS<62598 HL 2 08:47:31 Tester tester stopped because OnInit failed
=============
FH 0 08:46:58 History EURUSD: history synchronized from 1971.01.04 to 2013.10.28 RR 0 08:46:58 History EURUSD,H1: history cached from 2012.01.02 00:00 EH 0 08:46:58 Tester EURUSD,H1 (MetaQuotes-Demo): OHLC bar states generating. OnTick executed on the bar begin only GF 0 08:46:58 Tester EURUSD,H1: testing of Experts\Smart Neurons III.ex5 from 2013.01.01 00:00 to 2013.10.28 00:00 started with inputs: FK 0 08:46:58 Tester Horizon=48 KS 0 08:46:58 Tester History=62400 JL 0 08:46:58 Tester Moving_Average=12 IJ 0 08:46:58 Tester Risk=1 JF 0 08:46:58 Smart Neurons III (EURUSD,H1) 2013.01.01 00:00:00 Alert: ERROR HISTORY BARS<62598 LF 2 08:46:58 Tester tester stopped because OnInit failed
я не профессиональный программист. Экспертов писал на MQL3, 4 и 5. При переходе с 3-ки на 4-ку тоже было много новшеств в том числе и в синтаксисе. При переходе с 4-и на 5-у - пересторится было несложно. Поизучал немного С, С++ и С#, чтобы понимать что такое &, структуры, классы и пр. Я так понимаю как раз на таких как я язык и рассчитан. И в принципе все удобно. Кому не нравится ООП, пишите в обычном стиле.
Я так понимаю профессиональным программистам удобнее писать в общепринятых языках - так запихивайте все расчеты в DLL, а уж функционал обработки приказов достаточно простой. Хотя, я не писал ни одной DLL инаверно много не знаю.
Чтокасается обработки ошибок, так единственое с чем приходилось бороться - это деление на 0. Все остальное - на совести самого брокера, который криво исполняет приказы. Тут ответ на поверхности. Нах.. такой брокер ? Надо менять !
Механизм работы с таймсериями/индикаторами стал работать быстрее, экономичнее и позволяет оперировать огромной историей, не резервируя 100% памяти под нее, как это было в МТ4.
Язык стал детальнее, уровень контроля над процессами торговых операций серьезно вырос, что дало возможность разработчикам писать более безопасных роботов. Платой за детализацию и эффективность стало повышение сложности, но с другой стороны сложность была снижена применением ООП.
Почитайте статью Основы тестирования в MetaTrader 5, там говорится о загрузке минимальной истории.
История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.
Агент тестирования закачивает только недостающую историю с небольшим запасом, чтобы обеспечить необходимые данные на истории для расчета индикаторов на момент начала тестирования. Минимальный объем истории при скачивании с торгового сервера для таймфреймов D1 и меньше составляет один год. Таким образом, если запускается тестирование на интервале 2010.11.01-2010.12.01 (тестирование на интервале в один месяц) с периодом M15 (каждый бар равен 15 минутам), то у терминала будет запрошена история по инструменту за весь 2010 год. Для таймфреймов Weekly будет запрошена история в 100 баров, что составляет примерно два года (в году 52 недели). Для тестирования на месячном таймфрейме Monthly агент запросит историю за 8 лет (12 месяцев * 8 лет = 96 месяцев).
Если не удается по каким-либо причинам обеспечить необходимый запас баров перед началом тестирования, то дата начала будет автоматически сдвинута от прошлого к настоящему для того, чтобы обеспечить такой запас.Как оказалось с "огромной историей" не хочет работать тестер. Столкнулся с проблемой: советнику нужно 63000 баров Н1, в тестере он не работает поскольку «видит» только около 10000 баров - проверяю через Bars. На графике работает - «видит» 99000 баров.
И на всей истории и за последний год не работает.
HR 0 08:47:31 History EURUSD: history synchronized from 1971.01.04 to 2013.10.28
QH 3 08:47:31 Tester EURUSD: start time changed to 1971.05.27 00:00 to provide data at beginning
JQ 0 08:47:31 History EURUSD,H1: contains 101 bars of beginning data from 1971.01.04 00:00 to 1971.05.26 00:00
QO 0 08:47:31 History EURUSD,H1: history cache reserved for estimated 274388 bars
CK 0 08:47:31 History EURUSD,H1: history begins from 1971.01.04 00:00
EE 0 08:47:31 Tester EURUSD,H1 (MetaQuotes-Demo): OHLC bar states generating. OnTick executed on the bar begin only
FL 0 08:47:31 Tester EURUSD,H1: testing of Experts\Smart Neurons III.ex5 from 1971.01.04 00:00 to 2013.10.28 00:00 started with inputs:
NQ 0 08:47:31 Tester Horizon=48
GE 0 08:47:31 Tester History=62400
NR 0 08:47:31 Tester Moving_Average=12
MP 0 08:47:31 Tester Risk=1
LK 0 08:47:31 Smart Neurons III (EURUSD,H1) 1971.05.27 00:00:00 Alert: ERROR HISTORY BARS<62598
HL 2 08:47:31 Tester tester stopped because OnInit failed
=============
FH 0 08:46:58 History EURUSD: history synchronized from 1971.01.04 to 2013.10.28
RR 0 08:46:58 History EURUSD,H1: history cached from 2012.01.02 00:00
EH 0 08:46:58 Tester EURUSD,H1 (MetaQuotes-Demo): OHLC bar states generating. OnTick executed on the bar begin only
GF 0 08:46:58 Tester EURUSD,H1: testing of Experts\Smart Neurons III.ex5 from 2013.01.01 00:00 to 2013.10.28 00:00 started with inputs:
FK 0 08:46:58 Tester Horizon=48
KS 0 08:46:58 Tester History=62400
JL 0 08:46:58 Tester Moving_Average=12
IJ 0 08:46:58 Tester Risk=1
JF 0 08:46:58 Smart Neurons III (EURUSD,H1) 2013.01.01 00:00:00 Alert: ERROR HISTORY BARS<62598
LF 2 08:46:58 Tester tester stopped because OnInit failed
==============
Помогает:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как задать количество доступных баров истории в тестере стратегий ?
Karlson, 2013.04.09 18:54
Устанавливайте начало теста с того времени,с которого вам необходимо получать данные.
В коде отдельно устанавливайте дату начала торговли.
К примеру
1.Начало тестирования 2010.01.01.
2.Начало торговли 2011.07.01.
Будут у вас подготовленные данные.