Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ehoc:
А ведь есть люди не знающие с++. Как вы думаете, смогут они освоить MQL5 ?
На MQL5 свет клином сошелся? Обычный язык программирования, круче mql4.
Да и на mql4 он похож, просто конструкции поменялись из-за расширенных возможностей.
Действительно, совместимость с MT4 можно было сохранить при желании. Многие вещи специально зачем-то были переиначены (начиная с мелочей вроде DoubleToStr и заканчивая более важными вещами а-ля MarketInfo). Не было никакой сложости оставить по возможности старые функции в качестве "синонимов" для новых, но так не было сделано. В результате сейчас прикладники пишут обертки для себя, чтобы вещи из МТ4 можно было быстро перевести на МТ5.
Меня больше всего поразил в MQL5 другой факт: с одной стороны декларация ООП подхода, а с другой - реализация API в виде процедурных вызовов, причем поделенных по принципу типа данных (с суффиксами XXXInteger, XXXDouble и т.д.). Для ООП языка было б лучше во всех отношениях иметь доступ к функционалу ядра в виде интерфейсов (объектов, классов со своими методами), реализованных внутри системы: Account, Position, Symbol, History и т.д. Сейчас все это запихивается на прикладном уровне в библиотеку на mql5, т.е. по сути, внутри терминала есть свой объект, например, позиции, и он на уровне API расчленяется на всякие даблы, стринги и пр., а потом в mql5 обратно собирается уже в другой объект-копию позиции. Смысла в таком двойном преобразовании туда-сюда не угадывается. Версионность библиотеки наверняка привнесет свои проблемы.
Ну уж, что сделано - то сделано. Хотели, как лучше ;-).marketeer:
Сейчас все это запихивается на прикладном уровне в библиотеку на mql5, т.е. по сути, внутри терминала есть свой объект, например, позиции, и он на уровне API расчленяется на всякие даблы, стринги и пр., а потом в mql5 обратно собирается уже в другой объект-копию позиции. Смысла в таком двойном преобразовании туда-сюда не угадывается. Версионность библиотеки наверняка привнесет свои проблемы.
Ну уж, что сделано - то сделано. Хотели, как лучше ;-).Вполне нормальное решение и для MQ и для тех кто буде пользоваться MQL5. Доходчиво, безопасно и вполне логично.
Если сомневаетесь, представьте на минуту ТРУДНОСТИ компилятора связанные с разбором "каши" которая возвращается и передается в тот же MarketInfo.
Разработчикам это надо?
Тем более всем кому это нужно было все давно реализовали в виде классов или функций-оберток.
К примеру думаете это функционал MQL4?
А почему вот это не должно работать в MQL5?
Почему не может работать это?
или это?
Может и это тоже не будет работать?
Почему бы теперь MarketInfo не превратиться в нечто подобное?
Может и к тайм-сериям теперь обратиться нет возможности, Примерно так?
PS
- Думаешь мы дышим воздухом, здесь, в этом месте? (Из диалога Нео и Морфиуса. Произвольный перевод)
Вполне нормальное решение и для MQ и для тех кто буде пользоваться MQL5. Доходчиво, безопасно и вполне логично.
Если сомневаетесь, представьте на минуту ТРУДНОСТИ компилятора связанные с разбором "каши" которая возвращается и передается в тот же MarketInfo.
Разработчикам это надо?
Действительно, совместимость с MT4 можно было сохранить при желании. Многие вещи специально зачем-то были переиначены (начиная с мелочей вроде DoubleToStr и заканчивая более важными вещами а-ля MarketInfo). Не было никакой сложости оставить по возможности старые функции в качестве "синонимов" для новых, но так не было сделано. В результате сейчас прикладники пишут обертки для себя, чтобы вещи из МТ4 можно было быстро перевести на МТ5.
Меня больше всего поразил в MQL5 другой факт: с одной стороны декларация ООП подхода, а с другой - реализация API в виде процедурных вызовов, причем поделенных по принципу типа данных (с суффиксами XXXInteger, XXXDouble и т.д.). Для ООП языка было б лучше во всех отношениях иметь доступ к функционалу ядра в виде интерфейсов (объектов, классов со своими методами), реализованных внутри системы: Account, Position, Symbol, History и т.д. Сейчас все это запихивается на прикладном уровне в библиотеку на mql5, т.е. по сути, внутри терминала есть свой объект, например, позиции, и он на уровне API расчленяется на всякие даблы, стринги и пр., а потом в mql5 обратно собирается уже в другой объект-копию позиции. Смысла в таком двойном преобразовании туда-сюда не угадывается. Версионность библиотеки наверняка привнесет свои проблемы.
Ну уж, что сделано - то сделано. Хотели, как лучше ;-).Ужас. Все с ног на голову. Выделил жирным только три пункта (остальное по факту в поддержку моей же точки зрения, только вы этого видимо не осознаете). 1) нелогично, неудобно, нетехнологично и не имеет отношения к безопасности (не улучшает её); 2) "каши" для компилятора ничуть не жалко - наоборот - важно, чтобы "каши" было меньше для прикладника за счет её поедания компилятором; 3) да, именно разработчикам это было бы надо, если бы ставилась цель разработать платформу, упрощающую жизнь прикладникам/трейдерам, а не перекладывать на них задачи системного уровня. Но впрочем не вижу смысла дискутировать по этому поводу. "Пианист играет как умеет".
Ужас. Где и в чем вы увидели ужас?
1. При желании можно все. К примеру, я почти год назад начал работу с MQL5 (не знакомство, а именно работу) с вопроса именно миграции.
В результате уже пол года пользуюсь синтаксисом MQL4. Для решений связанных с ООП конечно имеется свой подход, но это уже ООП...
2. По поводу MarketInfo - И как Вы себе представляете наличие MarketInfo в MQL5 (причем в том виде в каком она была в MQL4)?
3. Возможно в будущем, когда основа языка будет сформирована разработчики создадут спецпальный раздел с "устаревшими" функциями, как это было сделано в MQL4 для некоторых функция.
Но вот скажите мне как и зачем это делать если с скелет языка до сих пор вносятся изменения. На мой взгляд это уж точно будет не логично со стороны разработчиков.
Кроме всего прочего разработчики ориентируются на ООП, а значит они сознательно идут на замену старого функционала специализированными классами. Причем весь необходимый минимум постовляется в виде стандартных библиотек (кому не достаточно могут разрабатывать свою библиотеку классов, со своим функционалом)
Для тех же кто сейчас хочет пользоваться синтаксисом MQL4 есть три известных и удобных способа:
а) Писать свою "миграционную" библиотеку. По примеру той что сделал для себя я
б) воспользоваться общедоступной статьей - Переход с MQL4 на MQL5
в) заказать все что требуется через сервис работа
Надеюсь в будущем начнет работать и магазин.
ЧТО В ЭТОМ НЕ ЛОГИЧНОГО?
4. Пишут обертки, пишут свои классы. И в чем собственно проблемы?
5. Вернемся к нашим баранам. есть суффиксы и что с того? есть предложения как сделать работу более надежной и комфортной, при этом не усложнив к язык на порядок?
вернемся к всеми известной по MQL4 MarketInfo, упомянутой выше. Представьите теперь себе на минуту что нужно применить в языке для того чтобы компилятор, транслятор и прочие вещи (обычно находящиеся за кулисами этого театра) корректно все обрабатывал.
Не проще, логичней и безопасней использовать суффиксы? Думаете я от хорошей жизни реализовал все именно так?
А может я не интересовался у разработчиков как это лучше реализовать?
6. Разработчиками создается стандартная библиотека классов, реализованная в виде MQL5. Чем именно это вам не нравится?
7. Внутри терминала (и сервера) много чего есть, и это может быть реализовано в каком угодно виде. Причем тут MQL5?
Разработчики не раз декларировали то что при создании языка MQL5 их интересует: безопасность, функциональность и простота будущего языка (именно в таком порядке).
6. Разработчиками создается стандартная библиотека классов, реализованная в виде MQL5. Чем именно это вам не нравится?
мне ненужна!!! и не думаю только мне.. НЕНУЖНА стандартная гигансткая библиотека классов!.. хочеться своего, и понимать что и где ты делаешь...
библиотека на открытие, на закрытие, на обчисления, на трал, на то.. на се.. ЗАЧЕМ??
если уж навязывать классы, тогда проще вшить их в метатрейдер... почему так не сделано тогда?
мне ненужна!!! и не думаю только мне.. НЕНУЖНА стандартная гигансткая библиотека классов!.. хочеться своего, и понимать что и где ты делаешь...
библиотека на открытие, на закрытие, на обчисления, на трал, на то.. на се.. ЗАЧЕМ??
если уж навязывать классы, тогда проще вшить их в метатрейдер... почему так не сделано тогда?
Хотя по началу я тоже думал что оно нафиг не надо.
Оказалось очень удобно. Закрыть позицию 1 команда, получить данные о позиции - другая команда. Естественно если начинать изучать MQL5, то надо все пощупать на низком уровне, а потом стандартная библиотека сокращает рутину в разы.
Да и скорость работы от нее не сильно уменьшается. Да и всяких очепяток в ней нет (или почти нет), из-за которых пол дня ищешь в чем ошибся.
Тем более, если хотите пощупать, все исходники можете просматривать сколько влезет.
Отвлеклись от темы...
нашел я причину такой ситуации (напоминаю)
было такое условие в МТ4
if ( ((x1-x2) >= (y1+y2+y3)) && x2!=-1)
{
}
в МТ5 такая конструкция всегда возвращает TRUE! но если переделать
t1 = x1-x2
t2 = y1+y2+y3
то
if ( (t1>=t2) && x2!=-1) работает так как нужно
Когда меня попросили показать участок кода я не смог воспроизвести данную ошибку, сейчас ошибка повторилась и я начал искать причину
вот что я нашел:
х1 - глобальная переменная
х2 - глобальная переменная
y1 - входной параметр
y2 - локальный параметр
y3 - локальный параметр
Print x1 = 2192
Print x2 = 2193
Print y1=100
Print y2=2
Print y3 = 3
х2 = вызов функции где он пересчитывается например обзовем GetNewX2()
Print x2 = 0
if ( ((x1-x2) >= (y1+y2+y3)) && x2!=-1)
{
Вошли в условие
Print x2 = 2193
}
Почему так происходит? Вызов функции GetNewX2 происходит как то асинхронно?
или в чем моя ошибка?
еще раз тестирую
Print x1 = 2192
Print x2 = 2193
Print y1=100
Print y2=2
Print y3 = 3
х2 = вызов функции где он пересчитывается например обховем GetNewX2()
Print x2 = 2193
if ( ((x1-x2) >= (y1+y2+y3)) && x2!=-1)
{
не вошли
}
ничего не понимаю
Говорили мне что глобальные переменные нужно использовать осторожно...
в функции GetNewX2 объявил локальную переменную х2 (и есть глобальная переменная х2) в итоге наверно и получал неоределенность со сравнением
Надо быть внимательнее)
МТ 5 интересен, но пока тяжко во всем разобраться, вроде переделал мультивалютник с МТ4 на МТ5