А ведь есть люди не знающие с++. Как вы думаете, смогут они освоить MQL5 ?
А ведь есть люди не знающие c++, Как вы думаете, смогут они освоить java, php и другие? На MQL5 свет клином сошелся? Обычный язык программирования, круче mql4.
Да и на mql4 он похож, просто конструкции поменялись из-за расширенных возможностей.
Действительно, совместимость с MT4 можно было сохранить при желании. Многие вещи специально зачем-то были переиначены (начиная с мелочей вроде DoubleToStr и заканчивая более важными вещами а-ля MarketInfo). Не было никакой сложости оставить по возможности старые функции в качестве "синонимов" для новых, но так не было сделано. В результате сейчас прикладники пишут обертки для себя, чтобы вещи из МТ4 можно было быстро перевести на МТ5.
Меня больше всего поразил в MQL5 другой факт: с одной стороны декларация ООП подхода, а с другой - реализация API в виде процедурных вызовов, причем поделенных по принципу типа данных (с суффиксами XXXInteger, XXXDouble и т.д.). Для ООП языка было б лучше во всех отношениях иметь доступ к функционалу ядра в виде интерфейсов (объектов, классов со своими методами), реализованных внутри системы: Account, Position, Symbol, History и т.д. Сейчас все это запихивается на прикладном уровне в библиотеку на mql5, т.е. по сути, внутри терминала есть свой объект, например, позиции, и он на уровне API расчленяется на всякие даблы, стринги и пр., а потом в mql5 обратно собирается уже в другой объект-копию позиции. Смысла в таком двойном преобразовании туда-сюда не угадывается. Версионность библиотеки наверняка привнесет свои проблемы.
Ну уж, что сделано - то сделано. Хотели, как лучше ;-).
Сейчас все это запихивается на прикладном уровне в библиотеку на mql5, т.е. по сути, внутри терминала есть свой объект, например, позиции, и он на уровне API расчленяется на всякие даблы, стринги и пр., а потом в mql5 обратно собирается уже в другой объект-копию позиции. Смысла в таком двойном преобразовании туда-сюда не угадывается. Версионность библиотеки наверняка привнесет свои проблемы.
Ну уж, что сделано - то сделано. Хотели, как лучше ;-).
Вполне нормальное решение и для MQ и для тех кто буде пользоваться MQL5. Доходчиво, безопасно и вполне логично.
Если сомневаетесь, представьте на минуту ТРУДНОСТИ компилятора связанные с разбором "каши" которая возвращается и передается в тот же MarketInfo.
Разработчикам это надо?
Тем более всем кому это нужно было все давно реализовали в виде классов или функций-оберток.
К примеру думаете это функционал MQL4?
//Возвращает день месяца последнего известного времени сервераint Day();
//Возвращает порядковый номер дня недели (воскресенье-0,1,2,3,4,5,6)int DayOfWeek();
//Возвращает текущий день года (1-1 января,..,365(6) - 31 декабря)int DayOfYear();
//Возвращает текущий час (0,1,2,..23) последнего известного серверного времениint Hour();
//Возвращает текущую минуту (0,1,2,..59) последнего известного серверного времениint Minute();
//Возвращает номер текущего месяца (1-Январь,2,3,4,5,6,7,8,9,10,11,12)int Month();
//Возвращает количество секунд, прошедших с начала текущей минутыint Seconds();
//Возвращает день месяца (1 - 31) для указанной датыint TimeDay(datetime date);
//Возвращает день недели (0-Воскресенье,1,2,3,4,5,6) для указанной датыint TimeDayOfWeek(datetime date);
//Возвращает день (1 - 1 января,..,365(6) - 31 декабря) года для указанной датыint TimeDayOfYear(datetime date);
//Возвращает час для указанного времениint TimeHour(datetime time);
//Возвращает минуты для указанного времениint TimeMinute(datetime time);
//Возвращает номер месяца для указанного времени (1-Январь,2,3,4,5,6,7,8,9,10,11,12)int TimeMonth(datetime time);
//Возвращает количество секунд, прошедших с начала минуты для указанного времениint TimeSeconds(datetime time);
А почему вот это не должно работать в MQL5?
//Returns TRUE if expert works in regimen of the testing, otherwise returns FALSEbool IsTesting();
//Returns TRUE if expert works in regimen of the optimization of the testingbool IsOptimization();
//Returns TRUE if expert is tested in mode of the visualizationsbool IsVisualMode();
Почему не может работать это?
//Возвращает состояние главного соединения клиентского терминала с серверомbool IsConnected();
//Возвращает TRUE, если DLL вызов функции разрешены, иначе возвращает FALSEbool IsTerminalDllsAllowed();
//Возвращает TRUE, если есть разрешение нп использование DLL для данной программыbool IsDllsAllowed();
//Возвращает TRUE, если в клиентском терминале разрешен запуск экспертов//В MT5 считается устаревшей функцией, поскольку эксперт торгует постоянноbool IsExpertEnabled();
//Возвращается TRUE, если в параметрах терминала разрешена автоматическая торговляbool IsTerminalTradeAllowed();
//Возвращается TRUE, если эксперту разрешено торговать, иначе возвращает FALSEbool IsTradeAllowed();
или это?
//Возвращает название брокерской компании, в которой зарегистрирован текущий счетstring AccountCompany();
//Возвращает наименование валюты для текущего счетаstring AccountCurrency();
//Режим расчета свободных средств, разрешенных для открытия позиций на текущем счете//Пока постоянно ввозвращает 0double AccountFreeMarginMode();
//Возвращает значение плеча для текущего счетаlong AccountLeverage();
//Возвращает имя пользователя текущего счетаstring AccountName();
//Возвращает номер текущего счетаlong AccountNumber();
//Возвращает имя активного сервераstring AccountServer();
//Возвращает значение уровня, по которому определяется состояние Stop Outdouble AccountStopoutLevel();
//Возвращает режим расчета уровня Stop Outint AccountStopoutMode();
//Возвращает значение уровня, по которому определяется состояние Margin Calldouble AccountMarginCallLevel();
//Возвращается TRUE, если программа работает на демонстрационном счетеbool IsDemo();
Может и это тоже не будет работать?
//Возвращает значение баланса активного счета (сумма денежных средств на счете)double AccountBalance();
//Возвращает сумму собственных средств для текущего счетаdouble AccountEquity();
//Возвращает сумму залоговых средств, используемых для поддержания открытых позицийdouble AccountMargin();
//Возвращает значение свободных средств, разрешенных для открытия позиций на текущем счетеdouble AccountFreeMargin();
//Возвращает значение прибыли/убытка для текущего счета в базовой валютеdouble AccountProfit();
//Возвращает значение кредита для активного счетаdouble AccountCredit();
Почему бы теперь MarketInfo не превратиться в нечто подобное?
//Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка"//MODE_DIGITS - Количество цифр после десятичного точки в цене инструмента //MODE_SPREAD - Спрэд в пунктах//MODE_STOPLEVEL - Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах //MODE_TRADEALLOWED - Разрешение торгов по указанному инструменту//MODE_PROFITCALCMODE - Способ расчета прибыли. 0 - Forex; 1 - CFD; 2 - Futures //MODE_FREEZELEVEL - Уровень заморозки ордеров в пунктахint MarketInfoInt(string symbol,ENUM_MT4_MARKETINFO_INT type);
//Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка"//MODE_LOW - Минимальная дневная цена//MODE_HIGH - Максимальная дневная цена //MODE_BID - Последняя поступившая цена предложения для инструмента//MODE_ASK - Последняя поступившая цена продажи для инструмента//MODE_POINT - Размер пункта в валюте котировки для текущего инструмента//MODE_LOTSIZE - Размер контракта в базовой валюте инструмента //MODE_TICKVALUE - Размер минимального изменения цены инструмента в валюте депозита//MODE_TICKSIZE - Минимальный шаг изменения цены инструмента в валюте котировки//MODE_SWAPLONG - Размер свопа для длинных позиций//MODE_SWAPSHORT - Размер свопа для коротких позиций//MODE_MINLOT - Минимальный размер лота//MODE_LOTSTEP - Шаг изменения размера лота//MODE_MAXLOT - Максимальный размер лота//MODE_MARGININIT - Начальные залоговые требования для 1 лота//MODE_MARGINMAINTENANCE - Размер залоговых средств для поддержки открытых позиций//MODE_MARGINHEDGED - Маржа, взимаемая с перекрытых позиций в расчете на 1 лот//MODE_MARGINREQUIRED - Размер свободных средств для открытия 1 лота на покупкуdouble MarketInfoDouble(string symbol,ENUM_MT4_MARKETINFO_DOUBLE type);
//Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка"//MODE_TIME - Время поступления последней котировки//MODE_SYMBOL_STARTING - Дата начала торгов по инструменту (обычно используется для фьючерсов)//MODE_SYMBOL_EXPIRATION - Дата окончания торгов по инструменту (обычно используется для фьючерсов)datetime MarketInfoTime(string symbol,ENUM_MT4_MARKETINFO_TIME type);
Может и к тайм-сериям теперь обратиться нет возможности, Примерно так?
//Возвращает количество баров на определенном графикеint iBars(string symbol,int SecondsToTF = 0); //передается число секунд в ТФ//Функция возвращает смещение бара, которому принадлежит указанное времяint iBarShift(string symbol,int SecondsToTF, datetime time = -1, bool exact = false);
//Возвращает значение цены закрытия указанного бара с соответствующего графикаdouble iClose(string symbol, int timeframe, int shift);
//Возвращает значение максимальной цены указанного параметром shift бара с соответствующего графикаdouble iHigh(string symbol, int timeframe, int shift);
//Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара)int iHighest(string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0);
//Возвращает значение минимальной цены указанного параметром shift бара с соответствующего графикаdouble iLow(string symbol, int timeframe, int shift);
//Возвращает индекс найденного наименьшего значения (смещение относительно текущего бара)int iLowest(string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0);
//Возвращает значение времени открытия указанного параметром shift бара с соответствующего графикаdatetime iTime(string symbol, int timeframe, int shift);
//Возвращает значение тикового объема указанного параметром shift бара с соответствующего графикаdouble iVolume(string symbol, int timeframe, int shift);
PS
- Думаешь мы дышим воздухом, здесь, в этом месте? (Из диалога Нео и Морфиуса. Произвольный перевод)
Вполне нормальное решение и для MQ и для тех кто буде пользоваться MQL5. Доходчиво, безопасно и вполне логично.
Если сомневаетесь, представьте на минуту ТРУДНОСТИ компилятора связанные с разбором "каши" которая возвращается и передается в тот же MarketInfo.
Разработчикам это надо?
Ужас. Все с ног на голову. Выделил жирным только три пункта (остальное по факту в поддержку моей же точки зрения, только вы этого видимо не осознаете). 1) нелогично, неудобно, нетехнологично и не имеет отношения к безопасности (не улучшает её); 2) "каши" для компилятора ничуть не жалко - наоборот - важно, чтобы "каши" было меньше для прикладника за счет её поедания компилятором; 3) да, именно разработчикам это было бы надо, если бы ставилась цель разработать платформу, упрощающую жизнь прикладникам/трейдерам, а не перекладывать на них задачи системного уровня. Но впрочем не вижу смысла дискутировать по этому поводу. "Пианист играет как умеет".
Действительно, совместимость с MT4 можно было сохранить при желании. Многие вещи специально зачем-то были переиначены (начиная с мелочей вроде DoubleToStr и заканчивая более важными вещами а-ля MarketInfo). Не было никакой сложости оставить по возможности старые функции в качестве "синонимов" для новых, но так не было сделано. В результате сейчас прикладники пишут обертки для себя, чтобы вещи из МТ4 можно было быстро перевести на МТ5.
Меня больше всего поразил в MQL5 другой факт: с одной стороны декларация ООП подхода, а с другой - реализация API в виде процедурных вызовов, причем поделенных по принципу типа данных (с суффиксами XXXInteger, XXXDouble и т.д.). Для ООП языка было б лучше во всех отношениях иметь доступ к функционалу ядра в виде интерфейсов (объектов, классов со своими методами), реализованных внутри системы: Account, Position, Symbol, History и т.д. Сейчас все это запихивается на прикладном уровне в библиотеку на mql5, т.е. по сути, внутри терминала есть свой объект, например, позиции, и он на уровне API расчленяется на всякие даблы, стринги и пр., а потом в mql5 обратно собирается уже в другой объект-копию позиции. Смысла в таком двойном преобразовании туда-сюда не угадывается. Версионность библиотеки наверняка привнесет свои проблемы.
Ну уж, что сделано - то сделано. Хотели, как лучше ;-).
marketeer: Ужас. Все с ног на голову. Выделил жирным только три пункта (остальное по факту в поддержку моей же точки зрения, только вы этого видимо не осознаете). 1) нелогично, неудобно, нетехнологично и не имеет отношения к безопасности (не улучшает её); 2) "каши" для компилятора ничуть не жалко - наоборот - важно, чтобы "каши" было меньше для прикладника за счет её поедания компилятором; 3) да, именно разработчикам это было бы надо, если бы ставилась цель разработать платформу, упрощающую жизнь прикладникам/трейдерам, а не перекладывать на них задачи системного уровня. Но впрочем не вижу смысла дискутировать по этому поводу. "Пианист играет как умеет".
Ужас. Где и в чем вы увидели ужас?
1. При желании можно все. К примеру, я почти год назад начал работу с MQL5 (не знакомство, а именно работу) с вопроса именно миграции.
В результате уже пол года пользуюсь синтаксисом MQL4. Для решений связанных с ООП конечно имеется свой подход, но это уже ООП...
2. По поводу MarketInfo - И как Вы себе представляете наличие MarketInfo в MQL5 (причем в том виде в каком она была в MQL4)?
3. Возможно в будущем, когда основа языка будет сформирована разработчики создадут спецпальный раздел с "устаревшими" функциями, как это было сделано в MQL4 для некоторых функция.
Но вот скажите мне как и зачем это делать если с скелет языка до сих пор вносятся изменения. На мой взгляд это уж точно будет не логично со стороны разработчиков.
Кроме всего прочего разработчики ориентируются на ООП, а значит они сознательно идут на замену старого функционала специализированными классами. Причем весь необходимый минимум постовляется в виде стандартных библиотек (кому не достаточно могут разрабатывать свою библиотеку классов, со своим функционалом)
Для тех же кто сейчас хочет пользоваться синтаксисом MQL4 есть три известных и удобных способа:
а) Писать свою "миграционную" библиотеку. По примеру той что сделал для себя я
4. Пишут обертки, пишут свои классы. И в чем собственно проблемы?
5. Вернемся к нашим баранам. есть суффиксы и что с того? есть предложения как сделать работу более надежной и комфортной, при этом не усложнив к язык на порядок?
вернемся к всеми известной по MQL4 MarketInfo, упомянутой выше. Представьите теперь себе на минуту что нужно применить в языке для того чтобы компилятор, транслятор и прочие вещи (обычно находящиеся за кулисами этого театра) корректно все обрабатывал.
Не проще, логичней и безопасней использовать суффиксы? Думаете я от хорошей жизни реализовал все именно так?
//Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка"//MODE_DIGITS - Количество цифр после десятичного точки в цене инструмента //MODE_SPREAD - Спрэд в пунктах//MODE_STOPLEVEL - Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах //MODE_TRADEALLOWED - Разрешение торгов по указанному инструменту//MODE_PROFITCALCMODE - Способ расчета прибыли. 0 - Forex; 1 - CFD; 2 - Futures //MODE_FREEZELEVEL - Уровень заморозки ордеров в пунктахint MarketInfoInt(string symbol,ENUM_MT4_MARKETINFO_INT type);
//Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка"//MODE_LOW - Минимальная дневная цена//MODE_HIGH - Максимальная дневная цена //MODE_BID - Последняя поступившая цена предложения для инструмента//MODE_ASK - Последняя поступившая цена продажи для инструмента//MODE_POINT - Размер пункта в валюте котировки для текущего инструмента//MODE_LOTSIZE - Размер контракта в базовой валюте инструмента //MODE_TICKVALUE - Размер минимального изменения цены инструмента в валюте депозита//MODE_TICKSIZE - Минимальный шаг изменения цены инструмента в валюте котировки//MODE_SWAPLONG - Размер свопа для длинных позиций//MODE_SWAPSHORT - Размер свопа для коротких позиций//MODE_MINLOT - Минимальный размер лота//MODE_LOTSTEP - Шаг изменения размера лота//MODE_MAXLOT - Максимальный размер лота//MODE_MARGININIT - Начальные залоговые требования для 1 лота//MODE_MARGINMAINTENANCE - Размер залоговых средств для поддержки открытых позиций//MODE_MARGINHEDGED - Маржа, взимаемая с перекрытых позиций в расчете на 1 лот//MODE_MARGINREQUIRED - Размер свободных средств для открытия 1 лота на покупкуdouble MarketInfoDouble(string symbol,ENUM_MT4_MARKETINFO_DOUBLE type);
//Возвращает различную информацию о финансовых инструментах, перечисленных в окне "Обзор рынка"//MODE_TIME - Время поступления последней котировки//MODE_SYMBOL_STARTING - Дата начала торгов по инструменту (обычно используется для фьючерсов)//MODE_SYMBOL_EXPIRATION - Дата окончания торгов по инструменту (обычно используется для фьючерсов)datetime MarketInfoTime(string symbol,ENUM_MT4_MARKETINFO_TIME type);
А может я не интересовался у разработчиков как это лучше реализовать?
6. Разработчиками создается стандартная библиотека классов, реализованная в виде MQL5. Чем именно это вам не нравится?
7. Внутри терминала (и сервера) много чего есть, и это может быть реализовано в каком угодно виде. Причем тут MQL5?
Разработчики не раз декларировали то что при создании языка MQL5 их интересует: безопасность, функциональность и простота будущего языка (именно в таком порядке).
мне ненужна!!! и не думаю только мне.. НЕНУЖНА стандартная гигансткая библиотека классов!.. хочеться своего, и понимать что и где ты делаешь...
библиотека на открытие, на закрытие, на обчисления, на трал, на то.. на се.. ЗАЧЕМ??
если уж навязывать классы, тогда проще вшить их в метатрейдер... почему так не сделано тогда?
Это вы зря, я вот попользовался библиотекой - понравилось. Хотя по началу я тоже думал что оно нафиг не надо. Оказалось очень удобно. Закрыть позицию 1 команда, получить данные о позиции - другая команда. Естественно если начинать изучать MQL5, то надо все пощупать на низком уровне, а потом стандартная библиотека сокращает рутину в разы.
Да и скорость работы от нее не сильно уменьшается. Да и всяких очепяток в ней нет (или почти нет), из-за которых пол дня ищешь в чем ошибся.
Тем более, если хотите пощупать, все исходники можете просматривать сколько влезет.
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