Тестер, поддерживающий МГ4-скрипты и советников - страница 5

 
Integer:
В таком ключе и C++ от JavaScript ничем не отличается. И это правда!

Великолепнейшая ложь!

Приведите пример реализации на C++ функции, подобной функции eval() из Javascript'а:

01      var str = "if (a) { 1+1 } else { 1+2 }"
02      var a = true
03      var b = eval(str)
04      alert("b равно : " + b) // 2
05       
06      // теперь поменяем "a"
07       
08      a = false
09      b = eval(str)
10      alert("b равно : " + b) // 3

То есть, запишем кусочек исходного текста на C++ в переменную типа std::string, а потом вызовем функцию eval(), которая исполнит этот кусочек кода, взятый из переменной типа std::string.

Предложите реализацию такой функции eval() на C++ (то есть, речь даже не об отсутствии такой функции, а самой возможности подобного в языке).

Наверное, излишне говорить, что это далеко не единственное отличие.

Ядро языка MQL4++ не отличается от ядра языка MQL5: тот же синтаксис, те же типы, операции, объекты, полиморфизм, перегрузка...

Отличается только библиотека, реализующая API советников, индикаторов, скриптов. В этом смысле в том же Javascript'е выделяются ядро языка и две объектные модели:

Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей:

  • ядро (ECMAScript),
  • объектная модель браузера (Browser Object Model или BOM),
  • объектная модель документа (Document Object Model или DOM).

И MQL можно представить в виде чётко различимых вещей: ядра языка и библиотек. Если ядро MQL4 отличается от ядра MQL4++, то ядро MQL4++ от ядра MQL5 уже не отличается.

Так что, Renat здесь абсолютно прав, и спорить с этим странно.

 
Integer:

Точно. Особенно пользуясь авторитетом начальственного положения.

Все языки одинаковые, за небольшим исключением особо экстравагантных. Все они изучаются за 21 день любым чайником. У всех for, while, if, switch, может быть форма записи отличается, но принципиально от этого ничего не меняется.

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

Я бы с удовольствием побаловался функцией eval() не только в C++, но в MQL4++.

Напишете такую функцию, хотя бы на MQL4++, раз встроенной нет?

Это мне никак не написать, - для меня отличий между Javascript и MQL4++ слишком много.

Вы же утверждаете, что все языки одинаковые, и, соответственно, Javascript и MQL4++ - одно и то же, вам должно быть совсем просто её написать.

 
Renat:

Вместо этого мы перешли на очень экономные CopyXXX функции, где разработчик точно запрашивает в локальный массив столько данных, сколько ему нужно, а не весь доступный график. Дальше идет максимально быстрая работа с локальными данными (вместо старого достаточно дорого Open/High/Low/Close/Time[xxx]), плюс автор может кешировать эти данные и экономно использовать их при следующем вызове. Экономия по памяти и CPU получается огромная. Кроме того, у самой платформы развязываются руки по управлению огромными базами - доступ к ним всегда по запросу(вместо неконтролируемого прямого) и это позволяет гибко управлять кешами.

Еще важно отметить, что простота обращения Open/High/Low/Close/Time[xxx] в MQL4 касалась только текущего символа и таймфрейма, а все остальные данные других символов и таймфреймов доставались через iClose/iLow(...) функции, что давало серьезнейшие тормоза. Переход в MQL5 на единую модель CopyXXX функций в корне улучшил ситуацию, дав возможность разработчикам одним запросом получать нужные куски данных и не делать многократные блокируемые вызовы (задумайтесь о блокировках в каждом одиночном вызове iClose).

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

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

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

А, коль скоро вместо этого были статьи, в которых в качестве кода был использован "набор чудовищных костылей", имеем и отвергнутый MT5, и такое, вот, отношение к API в MQL5. Аудитория же, в подавляющем большинстве своём, - не профессиональные  программисты. Естественно, это - не единственная причина "отверженности" MT5, но одна из основных.

 

Кого-то спросили:

-  Почему если, предположим, существуют инопланетяне, то они не разговаривают с нами, не учат нас?

Ему ответили:

- Вы бы стали учить тараканов разговаривать? Почему вы этого не делаете?


simpleton, Без обид, Вы нихрена не поняли из того что сказал Integer.
 
simpleton:

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

Документация MQL5 на 4000 страниц на 9 языках, огромная кодобаза в исходниках, 360 статей с переводами на 5 языков, форумы на 5 языках, где можно задать нужные вопросы и тд.

 
rustein:

simpleton, Без обид, Вы нихрена не поняли из того что сказал Integer.

Все правильно он понял.

Еще точнее сказал Reshetov: https://www.mql5.com/ru/forum/153749/page4#998584

В общем и в целом наезды на МТ5 - это всего лишь гнилые отмазки тех, кто не хочет переходить на новый терминал или выдумки тех, кто об МТ5 только слышал звон, да не знает где он.

 
Renat:

Все правильно он понял.

В общем и в целом наезды на МТ5 - это всего лишь гнилые отмазки тех, кто не хочет переходить на новый терминал или выдумки тех, кто об МТ5 только слышал звон, да не знает где он.


При чем тут переход на МТ5?
Я давно хочу это сделать. Но брокер еще не предлагает МТ5. Так что раскрутите его нормально.
На щет того кто чего понял или нет, может и Вы не поняли. Это так важно?
 
rustein:

На щет того кто чего понял или нет, может и Вы не поняли. Это так важно?

Вы не произнесли ни одной осмысленной фразы и не привели ни единого довода. Лишь эмоции.

 
Renat:

Вы не произнесли ни одной осмысленной фразы и не привели ни единого довода. Лишь эмоции.

И?
 
simpleton:

...

Где-то здесь недавно обсуждалось, какой язык программирования изучать. Один участник дал очень полезную рекомендацию - сначала русский (ну или любой другой, родной). Чтобы понимать о чем идет разговор.

В предложение "В таком ключе и C++ от JavaScript ничем не отличается." фразой "В таком ключе" выполняется определение (или уточнение) критерия сравнения. Поэтому возникает странный вопрос - "А о чем это вы сейчас здесь рассуждаете?"

Причина обращения: