Респект и уважуха создателям языка, Но... - страница 5

 
Мне вообще не понятно не довольство общественности. И хотя я уже не первый год вынужден  программировать на MQL4, меня всякий раз бросает в дрожь, когда я это делаю. Программируя на MQL4 я понял простую вещь, простота прямо пропорциональна сложности языка. Взять к примеру ассемблер. Нет языка проще чем ассемблер. Переходы, регистры, стек, push, pop, add, exchg. Однако это простота оборачивается адом для программиста. Требуется держать в памяти (в своей памяти) целые сегменты кода. Зато простота. Тоже MQL4, я с дрожью вспоминаю моменты, когда мне требовалось объединить несколько разнотипных массивов в одно целое. Это было не возможно. Приходилось индексировать массивы одним индексом, следить, что бы один индекс показывал сразу на несколько типов данных, и что бы все эти типы были одной логической структурой. Это был Ад, вызванной простотой и убогостью MQL4. Теперь есть классы, структуру, перечисления, динамическая работа с памятью. За одно это разработчиком можно упасть в ноженьки: "Спасибо родненькие, что перестали нас считать недоучками, предел понимания которых - это понятие массива и пара операторов".
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Этот язык и подобием C++ назвать сложно. Хотя во многом они и схожи. Правда, я C# разработчик, но мне всё-равно какой язык в mql5, вот то что структура советников стала сложнее - это факт
 
Потрясает уровень фактических знаний...
 

я не профессиональный программист. Экспертов писал на MQL3, 4 и 5. При переходе с 3-ки на 4-ку тоже было много новшеств в том числе и в синтаксисе. При переходе с 4-и на 5-у - пересторится было несложно. Поизучал немного С, С++ и С#, чтобы понимать что такое &, структуры, классы  и пр. Я так понимаю как раз на таких как я язык и рассчитан. И в принципе все удобно. Кому не нравится ООП, пишите в обычном стиле. 

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

Чтокасается обработки ошибок, так единственое с чем приходилось бороться - это деление на 0. Все остальное - на совести самого брокера, который криво исполняет приказы. Тут ответ на поверхности. Нах.. такой брокер ? Надо менять !  

 
Пишу «в обычном стиле». Но в MQL5 всё самое необходимое стало сложнее – обращение к таймсериям и индикаторам, отправка торговых приказов. В MQL4 отправить ордер – одна строка, в MQL5 – десять строк. Простой робот, переписанный с MQL4 на MQL5, становится в несколько раз больше по тексту.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Не нужно в лобовую переводить. Используйте стандартные классы торговых функций и все будет наоборот проще.

Механизм работы с таймсериями/индикаторами стал работать быстрее, экономичнее и позволяет оперировать огромной историей, не резервируя 100% памяти под нее, как это было в МТ4.

Язык стал детальнее, уровень контроля над процессами торговых операций серьезно вырос, что дало возможность разработчикам писать более безопасных роботов. Платой за детализацию и эффективность стало повышение сложности, но с другой стороны сложность была снижена применением ООП.
Взгляни на рынок через готовые классы
Взгляни на рынок через готовые классы
  • 2010.10.26
  • Dmitriy Skub
  • www.mql5.com
Не секрет, что большую часть информации об окружающем мире человек получает при помощи зрения. Справедливо это и в такой области как трейдинг. Новая платформа MetaTrader 5 и язык MQL5 открывают новые возможности для представления визуальной информации трейдеру. В данной статье предлагается универсальная и расширяемая система классов, которая берет на себя всю черновую работу по организации вывода произвольной текстовой информации.
 
Renat:...Механизм работы с таймсериями/индикаторами стал работать быстрее, экономичнее и позволяет оперировать огромной историей, не резервируя 100% памяти под нее, как это было в МТ4... 
Как оказалось с "огромной историей" не хочет работать тестер. Столкнулся с проблемой: советнику нужно 63000 баров Н1, в тестере он не работает поскольку «видит» только около 10000 баров - проверяю через Bars. На графике работает - «видит» 99000 баров. 
 

Почитайте статью Основы тестирования в MetaTrader 5, там говорится о загрузке минимальной истории.

История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.

Агент тестирования закачивает только недостающую историю с небольшим запасом, чтобы обеспечить необходимые данные на истории для расчета индикаторов на момент начала тестирования. Минимальный объем истории при скачивании с торгового сервера для таймфреймов 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 

==============

Помогает:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как задать количество доступных баров истории в тестере стратегий ?

Karlson, 2013.04.09 18:54

Устанавливайте начало теста с того времени,с которого вам необходимо получать данные.

В коде отдельно устанавливайте дату начала торговли.

 К примеру

1.Начало тестирования 2010.01.01.

2.Начало торговли 2011.07.01.

 

Будут у вас подготовленные данные. 

но хотелось бы без "костылей".
Причина обращения: