Что Вы сделали для популяризации MetaTrader 5? - страница 27

 
Nikolay Demko:

Давай лучше обсуждать развитие МТ5.

Я например внёс в СД предложение ввести "ОСО тикет" #1122198

Это такой магик который можно править после установки отложки.

Ну чтоб можно было по свойству ордера понять от какого ордера он зависит.

По началу это будет удобно для программной обработки на стороне терминала. 

В перспективе такое поле позволит ввести серверную обработку ОСО зависимостей. 

ЗЫ Но MQ молчат, видимо предложение сырое. 

Иногда в сервисдеске заявка может уйти далеко в просмотренные и теряется из вида. Чтобы обратить внимание повторно на неё напишите в заявке новый комментарий.
 

В самом начале уже озвучили один из способов мнгновенной популяризации МТ5 - отключить МТ4.

Есть более демократичный способ - выпустить МТ6 с поддержкой как неттинговой, так и ордерной системы, если не на стороне пользователя, то хотя бы на стороне брокера, такую систему не надо будет популяризовывать, на нее ломанутся все :)

Если с ордерной системой нельзя сертифицироваться на бирже, то может выпустить к неттингу МТ некий плагин, который может установить себе только брокер, тогда вся вина за использование ордерной системы будет на брокере, к МТ никаких претензий быть не может, все законно - биржи имеют неттинг в МТ, а ДЦ - ордера, с юридической точки зрения все в выигрыше.

Сайты МТ4 и МТ5 обьединяются потихоньку, в МТ4 вводятся недостающие фичи, типа ООП и прочего, так может есть шанс, что когда-то в будущем выйдет уникальный гибрид, соединяющий в себе все лучшее?

А чтобы не переписывать тонны кода и не менять идеологию, то различаться неттинг и ордера должны не по мейджику или тикету, а по названию символа, например, можно открыть позицию по сиволу EURUSD, потом можно долиться к ней по неттингу или закрыть противоположным ордером с таким же обьемом. А можно динамически добавить буквочку к названию символа, наример, EURUSD1 и будет два разных не связанных ордера, потом открыться по EURUSD12 И будет уже три несвязанных ордера, таким образом кодовая база и работа с позициями остается полностью как в МТ5, но к ней добавляются возможности работы как с ордерами в МТ4, тем более, что есть ДЦ, которые именно таким способом это и реализовывают, правда, у них недостаток - ограничение по кол-ву одинаковых символов, например, EURUSD1 - EURUSD4, а надо бы побольше.

 
Useddd:
Так может уже сделать в конце концов разделение на "принятые и нет" заявки, и "непринятые" рассортировать по дате.Или что-то ещё, чтобы они уже хоть как-то мониторились, а не звучало в сотый раз "наверное она ушла далеко", а то складывается чувство что мониторятся только последние-первые, а пользователю нужно ананировать с новыми коментами в борьбе за право попасть в число последних и робко надеяться на обращение взора на неё. Хотя проблемы дизайна видно важнее функционала.
Если заявка уходит в просмотренные это не означает, что заявка удалена в корзину.
 
Просьба не отклоняться от темы. Для других вопросов есть остальные темы.
 
Фьючерсные объемы для МТ:


MACD Sample сравните

На мой взгляд, сложность приблизительно одинакова. Весь добавочный код в МТ5 - это обслуживание ООП-подхода, который не оправдывает себя в проектах на сто строк.  Если добавить его в МТ4, код в МТ4 увеличится как раз до объема МТ5. Если его убрать из МТ5, и перейти на процедурно-ориентированный подход - код сократится до МТ4.

То есть, данное сравнение показывает, что при ООП существуют дополнительные накладные программные расходы. Но это не зависит от того, пишем ли мы для МТ4 или для МТ5.

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

Ввыше вроде как говорили, что в МТ4 не надо делать проверок там, где в МТ5 они необходимы. Есть такие примеры ?

 
Art:

В самом начале уже озвучили один из способов мнгновенной популяризации МТ5 - отключить МТ4.

Есть более демократичный способ - выпустить МТ6 с поддержкой как неттинговой, так и ордерной системы, если не на стороне пользователя, то хотя бы на стороне брокера, такую систему не надо будет популяризовывать, на нее ломанутся все :)

Да, я давно уже говорил - было странно выпускать МТ5 только на  неттинговую систему. Он изначально должен был поддерживать обе.
 
George Merts:
Да, я давно уже говорил - было странно выпускать МТ5 только на  неттинговую систему. Он изначально должен был поддерживать обе.
Просьба не отклонятся от темы, вам велел модератор. Мои отклонения о темы были удалены, следуя логике, думаю так же поступят и с вашими. Очень переживаю за ваши напрасные усилия. Потому как вера в справедливое следование правилам здесь тщательно поддерживается.
 
George Merts:

Ввыше вроде как говорили, что в МТ4 не надо делать проверок там, где в МТ5 они необходимы. Есть такие примеры ?

Везде надо делать проверки.

И четверка в плане доступа к рыночному окружению ничего не гарантирует, как и пятерка. Но в пятерке возможностей контроля разработчиком больше.

 
George Merts:

В том, что за слова надо отвечать.

Я вот тоже пытаюсь понять, что же такого в МТ4 "значительно проще", чем в МТ5. Но мне как-то никто не хочет это показать с примерами кодов.

Но, "вечный бан" - это, по-моему, глупо. Тем более, что, действительно, человек на деле сделал немало для популяризации платформы. Я за ограниченный по времени бан.

Integer ответил. Ответил конечно поздно и уже на форуме MQL4, но тем не менее. Делаю перепост. Прав он или нет, решать вам:

Integer:

1. Что чаще всего требуется - получения цены с графика.

В МТ4 это Close[i] или iClose(NULL,0,i), просто взял значение и все. Учитывая, что пользователь сначала открывает график, при этом будет разумно и естественно дождаться обновления данных, дальше терминал сам обеспечивает свежесть данных и т.о. доступ к цена график на котором висит советник происходит без проблем. Выполнение каких-либо проверок не требуется и не подразумевается самой функций  iClose(). Т.е. программист вообще не заморачивается проблемами получения данных цены.

В МТ5 это выполняется функцией  CopyClose() или CopyRates(), функции возвращают true/false, что намекает на то, что может и не получиться скопировать, т.е. надо проверять результат и в случае неудачи принимать меры. Т.е. такое вот элементарнейшее действие разветвляет алгоритм. Можно и начале функции скопировать все требуемые данные, но это будет означать что во многих случаях будут выполняться ненужные действия, потому-что не всегда все нужно.

2. Получение данных индикаторов.

В МТ4 достаточно один раз написать вызов iCustom() для какого-нибудь индикатора и все, дальше копируешь туже функцию и если надо меняешь буфер и индекс. Т.е. требуется быть внимательным один раз.

в МТ5 сначала надо загрузить индикатор  и получить его хэндл. По трудозатратам это аналогично вышеописанному пункту для МТ4. Далее, для получения значения требуется вызывать функцию CopyBuffer(), т.е. надо быть внимательным второй раз. Функция может вернуть true/false, значить требуется проверка, опять разветвление алгоритма.

3. Собственно эксплуатация советника.

Известно, что в МТ4 очень просто обеспечить независимую работу нескольких советников, в МТ5 же это же вообще не реально. Значит в МТ4 просто запускаешь еще одного советника. Потом смотришь, оставить или снять. При это, естественно, работающие советники как работали так и работают. В МТ5 запуск советника, это событие, потому-что может работать только один советник. Поэтому надо семь раз отмерить, прежде чем снять одного советника и запустить другого.

4. Сейчас не знаю как обстоит дело, но было... В МТ5 после открытия позиции, в списке истории еще отсутствуют данные об ордере и сделке, требуется какая-то доля секунды. Это усложняет алгоритм. В МТ4 на одном тике можно последовательно выполнить много действий, в МТ5 надо усложнять алгоритм (делать ожидание обновления списка) или же учитывать по результату OrderSend(). Этот пункт кому-то может показаться неубедительным, но это не удивительно, найдется кто-нибудь кому и пункты 1-3 будут не убедительны.

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

6. ArraySort() в МТ4 позволят сортировать многомерные массивы по первому измерению, в МТ5 только одномерные сортируются.

7. Тестер. Отладка советника в тестере. В МТ4 полноценный график, можно графические объекты создавать... значки сдвигать... все как по настоящему. В МТ5 возможности работы с графиком ограничены.

8. Время графических объектов. В МТ4 скопировал мышкой и вставил в код. В МТ5 за один мах мышкой время не скопируешь, приходится набирать вручную. 

9. Отчет в тестере. В МТ4 события в хронологическом порядке. В МТ5 отложенный ордер и сразу под ним сделка этого ордера, хотя эта сделка могла быть гораздо позже, чем события в следующих строках отчета. Т.е. в МТ5 события не в хронологическом порядке.

10. МТ4 через год (когда узнал о нем) после своего появления был полностью в рабочем состоянии и не менялся. В МТ5 годами выполнялись значительные принципиальные изменения. Сначала убрали параметры PositionSelet(), что потребовало переделки написанных советников, потом меняли идентификаторы из-за чего некоторые советники снова требовали переделки. Может и другие какие изменения, за всем не уследишь. 

Еще немного.

В МТ4 переменные Point, Digits... В МТ5 эти же переменные начинаются с подчеркивания. Это выглядит как будто это все кто-то наскоряк на шару придумал... а экспертописателям их ставить, пальцы топырить. Мелочь конечно, но как-то раздражает. Чувствуется непродуманность.

В МТ5 доступ к разным данным через идентификаторы. Чтобы получить одно значение надо сначала написать функцию с названием в пол экрана, потом еще идентификатор написать размером еще пошире чем пол экрана. Эта проблема решается использованием стандартных классов, но там свои "моментики", не все названия очевидны, например у класса работы с позицией были методы Type и PositionType (как-то так). Для определения направления позиции используется метод PositionType, а не Type. Мелочь конечно, но все это требует повышенного внимания и потребляет энергию.

 
Integer:

1. Что чаще всего требуется - получения цены с графика.

В МТ4 это Close[i] или iClose(NULL,0,i), просто взял значение и все. Учитывая, что пользователь сначала открывает график, при этом будет разумно и естественно дождаться обновления данных, дальше терминал сам обеспечивает свежесть данных и т.о. доступ к цена график на котором висит советник происходит без проблем. Выполнение каких-либо проверок не требуется и не подразумевается самой функций  iClose(). Т.е. программист вообще не заморачивается проблемами получения данных цены.

В МТ5 это выполняется функцией  CopyClose() или CopyRates(), функции возвращают true/false, что намекает на то, что может и не получиться скопировать, т.е. надо проверять результат и в случае неудачи принимать меры. Т.е. такое вот элементарнейшее действие разветвляет алгоритм. Можно и начале функции скопировать все требуемые данные, но это будет означать что во многих случаях будут выполняться ненужные действия, потому-что не всегда все нужно.

Якобы "простой" метод Close[i] в MetaTrader 4 в разы дольше, чем CopyClose() в пятерке за счет того, что обычно нужно делать много запросов в историю.

То есть, аналитический перебирающий бары код в пятерке заведомо быстрее в разы за счет прямой работы с локальным массивом. Особенно это важно с учетом доступности глубокой истории, которую надо постоянно прочесывать. И еще более важно, что можно запрашивать только нужный объем истории (100 баров вместо хх миллионов), а не автоматически принудительно создавать копию истории текущего чарта, реально тормозя отработку пришедшего тика.

Вы хоть в курсе, что в четверке работает автоматический механизм репликации текущего чарта в область рыночного окружения эксперта? Так вот в пятерке этого нет, что экономит много ресурсов.


Жалоба на контроль результатов вызова CopyXXX функций - это глупость и наглость программиста. В пятерке наоборот больше способов контроля как по запросу функции, так и по проверке выданного значения.

И в MQL4 надо вообще-то проверять результат обращения к истории. А можно и в пятерке не проверять - это зависит от качества программиста. Обманывать себя придумками про ненужность проверок не надо.


2. Получение данных индикаторов.

В МТ4 достаточно один раз написать вызов iCustom() для какого-нибудь индикатора и все, дальше копируешь туже функцию и если надо меняешь буфер и индекс. Т.е. требуется быть внимательным один раз.

в МТ5 сначала надо загрузить индикатор  и получить его хэндл. По трудозатратам это аналогично вышеописанному пункту для МТ4. Далее, для получения значения требуется вызывать функцию CopyBuffer(), т.е. надо быть внимательным второй раз. Функция может вернуть true/false, значить требуется проверка, опять разветвление алгоритма.

В пятерке никаких проблем - создаешь однократно индикатор, получаешь его хендл и потом всегда можешь быстро извлекать из него данные. Аналогично пункту первому - в пятерке преимущество в скорости работы и экономии памяти.

Контроль результатов аналогично пункту первому - в пятерке больше контроля. И если разработчик безбашенный и верит, что "данные всегда есть в четверке", то и в пятерке может не проверять.



3. Собственно эксплуатация советника.

Известно, что в МТ4 очень просто обеспечить независимую работу нескольких советников, в МТ5 же это же вообще не реально. Значит в МТ4 просто запускаешь еще одного советника. Потом смотришь, оставить или снять. При это, естественно, работающие советники как работали так и работают. В МТ5 запуск советника, это событие, потому-что может работать только один советник. Поэтому надо семь раз отмерить, прежде чем снять одного советника и запустить другого.

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

Если есть сильная потребность, то легко пишется виртуализатор, которые еще и спред будет здорово экономить. Это уже неоднократно обсуждалось.


4. Сейчас не знаю как обстоит дело, но было... В МТ5 после открытия позиции, в списке истории еще отсутствуют данные об ордере и сделке, требуется какая-то доля секунды. Это усложняет алгоритм. В МТ4 на одном тике можно последовательно выполнить много действий, в МТ5 надо усложнять алгоритм (делать ожидание обновления списка) или же учитывать по результату OrderSend(). Этот пункт кому-то может показаться неубедительным, но это не удивительно, найдется кто-нибудь кому и пункты 1-3 будут не убедительны.

Если работаете в обычном синхронном режиме, то результат транзакции в историю прилетает сразу вместе с кодом ответа. Некоторые разработчики совершают ошибки в параметре TO запроса истории сделок, что выглядит для них как "транзакция еще не пришла". Просто забывают время TO хотя бы на несколько секунд в будущее сдвинуть.

В асинхронном режиме сделки отлично ловятся в обработчике транзакций.

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

Не понятно.

Если про тестер, то в пятерке он реально на голову выше, да еще и мультисимвольный.


6. ArraySort() в МТ4 позволят сортировать многомерные массивы по первому измерению, в МТ5 только одномерные сортируются.

Скорее всего сортировку расширим в MQL5. Но это не принципиальная проблема.


7. Тестер. Отладка советника в тестере. В МТ4 полноценный график, можно графические объекты создавать... значки сдвигать... все как по настоящему. В МТ5 возможности работы с графиком ограничены.

В пятерке тоже будет полная обработка объектов в визуализаторе. Дело в том, что в четверке сам движок тестера внутри терминала, а не вынесен наружу как у пятерки.


8. Время графических объектов. В МТ4 скопировал мышкой и вставил в код. В МТ5 за один мах мышкой время не скопируешь, приходится набирать вручную. 

Как часто люди вручную прописывают даты в графический объект?

В пятерке работа с датой даже удобнее за счет специализированного контрола даты.


9. Отчет в тестере. В МТ4 события в хронологическом порядке. В МТ5 отложенный ордер и сразу под ним сделка этого ордера, хотя эта сделка могла быть гораздо позже, чем события в следующих строках отчета. Т.е. в МТ5 события не в хронологическом порядке.

Вы не в курсе, что есть 3 режима отображения сделок + двойные сортировки по каждой колонке.


В пятерке отчеты тестера торговых стратегий гораздо лучше.


10. МТ4 через год (когда узнал о нем) после своего появления был полностью в рабочем состоянии и не менялся. В МТ5 годами выполнялись значительные принципиальные изменения. Сначала убрали параметры PositionSelet(), что потребовало переделки написанных советников, потом меняли идентификаторы из-за чего некоторые советники снова требовали переделки. Может и другие какие изменения, за всем не уследишь. 

МТ4 менялся очень много все 9 лет - были выпущены сотни билдов. Вот сейчас очередной релиз выходит.

Пятерка тоже менялась, становясь все более мощной платформой. И жаловаться тут неуместно.


Еще немного.

В МТ4 переменные Point, Digits... В МТ5 эти же переменные начинаются с подчеркивания. Это выглядит как будто это все кто-то наскоряк на шару придумал... а экспертописателям их ставить, пальцы топырить. Мелочь конечно, но как-то раздражает. Чувствуется непродуманность.

Подчеркивания, чтобы показать их deprecated статус. Нельзя использовать такие простые переменные, объявленные на глобальном уровне, но выглядящие как обычные локальные переменные.

Для чистоты языка и кода нужно переходить на Symbol(), Period(). Тут как раз продуманность и избавление от наследия старого.


В МТ5 доступ к разным данным через идентификаторы. Чтобы получить одно значение надо сначала написать функцию с названием в пол экрана, потом еще идентификатор написать размером еще пошире чем пол экрана. Эта проблема решается использованием стандартных классов, но там свои "моментики", не все названия очевидны, например у класса работы с позицией были методы Type и PositionType (как-то так). Для определения направления позиции используется метод PositionType, а не Type. Мелочь конечно, но все это требует повышенного внимания и потребляет энергию.

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

Извлечение постоянно увеличивающего набора характеристик через рост идентификаторов при неизменности количества функций - это классический метод масштабирования.

Для борьбы со сложностью у нас есть хорошо работающие методы интеллисенса и автодополнения.

Жаловаться на это не имеет смысла - это касается любых языков и их API.

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