Блог им. 3Qu
К сожалению, я не шучу. Quik мне активно не нравится. О недостатках Quik — неудобный, глючный, периодически подвисающий на абсолютно пустом месте в самый неподходящий момент, и пр., и пр. Даже оставив в нем всего несколько самых необходимых окон и инструментов, избавиться от его глючности не получится. Уж, за более чем 10 лет, разработчики Quik могли бы его довести до ума, но воз и ныне там.
Видел и пользовался терминалами много лучше — с полным C-API, оч удобные и лишенные каких либо существенных недостатков — на них и работал аж до 2013 г. Это были самопальные термналы брокеров, для которых, к тому-же, было написано много вспомогательного софта. К сожалению, к 2013 г терминалы безнадежно устарели, благодаря апгрейдам становились все хуже, и, в конце концов, были сняты брокером с эксплуатации. Вся проделанная работа по написанию софта пошла прахом, и для работы предстояло выбрать другой терминал и/или брокера.
Коннекторы сразу не подошли. Остался выбор из 3-х терминалов c возможностью программирования или подключения внешнего софта — Quik, TRANSAQ, и МТ5.
TRANSAQ: есть только у одного брокера Финам. Если Финам откажется от Transag или поменяет версию терминала на несовместимую, то весь вспомогательный софт предстоит переделывать заново. Спсибо, я это уже проходил.) Кроме того, Transag есть толькоу Финам, и изменить брокера становится невозможно — опять надо будет все переделывать.
МТ5: имеется для МОЕХ у ограниченнного числа брокеров. Строго говоря, биржевым терминалом не является, и судя по форуму MQL, проблем с биржей у него выше крыши. Я так понимаю(оценочное суждение), фирма MQ попыталась вывести МТ5 на биржу, ничего с этого не получила, и завязала с этой деятельностью. Да, такой хоккей нам тоже не нужен.
Quik — старенький, плохонький, глюковатенький, но имеет всю необходимую функциональность, и все нужные возможности. Имеется практически у всех брокеров — смена или добавление брокера не вызовет проблем. В одночасье не исчезнет, что могут себе позволить терминалы оганиченного применения — Transaq, и тот же МТ5.
Отсюда следует, что Quik — лучший терминал для биржи MOEX для большинства пользователей, особенно для тех, кто пользуется каким либо вспомогательным софтом — индикаторы, торговые системы, системы анализа и пр.
Жаль, что я этого не понял раньше, не пришлось бы весь софт переписывать с нуля.
Квик тоже еще старый 7.29 вроде, на 8 не переходил.
Все доки Квик есть на их сайте. В инете вы найдете все материалы по программированию под Квик.
Да, и не я один отмечал глюковатость Квик.
А может, не разработчики квика виноваты, а проблема в прокладке меж рулём и сиденьем, раз простая логика для вас неочевидна?
Хоть одну проблему с биржей назовите.
Да и брокеров на МТ5 — раз, и все, что не есть приемлемо.
Язык MQL5 — это уровень 90-х гг. Внутри терминала на MQL5 ничего толкового сделать невозможно, а выход на внешний софт весьма проблематичен.
Внутри терминала толкового ничего не сделать? Не смешите, озвучьте что не сделать. MQL нормальный язык, работает намного быстрее, чем Lua. Организовать связь с внешним софтом из MT можно аж несколькими способами.
Итого на стороне MT:
— хороший язык программирования,
— наличие бектестера,
— стабильность работы (9 апреля 2017, когда почти у всех брокеров были проблемы, MT у тех же брокеров даже не чихал),
— наличие неограниченной истории счета (показываются все движения по вашему счету)
— неограниченная длина рыночных данных, включая ленту сделок.
Реальные проблемы тоже есть, но они далеки от вашего поверхностного обзора.
Что не сделать? Да ничего не сделать. Все, что имеет MQL, это оч ограниченный набор кривых самопальных плохо отработанных и непроверенных библиотек, которых минимальное количество. А язык, это прежде всего наличие библиотек, а не синтаксис.
На фиг это устаревшее г… от MQ (оценочное суждение) и извращения с ГПУ и пр. в которых нет необходимости для подобных задач.Сложные задачи уже в библиотеках. Вы под ГПУ библиотеки собираетесь переписывать?
Та-же Луа уходит в ДЛЛ и из ДЛЛ можно вызвать функцию Луа (коллбэк) — вообще нет проблем. Луа минимальна и ни на что не влияет, на быстродействие в том числе.
Интересно только было бы узнать — когда ОНО устареть успело? )))
МТ5 всего-лишь года 3 как начало активно использоваться!
Активнейшим образом совершенствуется ВСЁ, в т.ч. язык.
2) Отлично заявки подаются из подключенной dll.
3)
Тех, кто сделал не смешите.
Расскажите как заявку подать из С++ ДЛЛ в MQL? В MQL нет коллбэков. Костыли я и сам делать умею — эт неинтересно.
Непосредственно под Луа в библиотеках нет необходимости — любой сторонний софт подключается через ДЛЛ. К MQL замучаетесь подключать.))
ЗЫ Нормальное взаимодействие с внешним софтом в MQL организовать принципиально невозможно. Организуете через костыли — все хваленые «преимущества» MQL пропадают.
К MQL подключить dll не сложнее, чем к QLua.
Пишите костыли, и замечательно. Главное, чтобы вам нравилось.)
Нужно всего-то уметь вызывать из dll 3 функции MQL4: OrdersHistoryTotal(), OrderSelect() и OrderPrint().
Сможете легко это организовать (при условии, что приведённый выше код — это код C/C++, располагающийся в dll)?
Когда вы об этом как следует задумаетесь, то, думаю, поймёте, в чём проблема.
Jame Bonds, тогда вы должны знать, что это явно сложнее, чем просто подключить dll. И насколько «умеренное» время на это надо потратить, зависит от «полноты реализации».
3Qu, организовать-то возможно, но сильно не «бесплатно». И ещё придётся это всё поддерживать по мере изменения API MQL.
3Qu, после нескольких попыток заняться мазохизмом на MQL4 я серьёзно задумался от том, чтобы, всё-таки, организовать это взаимодействие, лишь бы (почти) навсегда избавиться от этого мазохизма, ибо это ужасно.
1. если стратегия неспешная, то можно через файлы.
2 если быстрая. Берем два советника. Один на передачу. Второй на прием заявок, в нем ставим мьютекс(ы), благо советники в разных потоках. ДЛЛ, естественно.
Но, в итоге, я избавился от терминала МТ5.)
3Qu, это никуда не годится.
Это частный случай копирования из одного советника в другой, запущенных в одном терминале. А что, если я хочу просто написать советник, но не на MQL, а на C++?
Нужно некое общее решение, чтобы можно было писать в стиле, как рассказано в этом сообщении.
То есть, чтобы писать на C/C++, как на MQL.
Как будто случилось чудо, и теперь можно не на MQL, а на C/C++ писать, пусть и вне терминала, но, тем не менее, имея доступ к API MQL, не важно что: советник это, индикатор или скрипт.
Цель: избавиться от MQL, сохранив доступ к его API.
Этот вариант хорош, но не всегда применим.
Но по обмену можно поговорить. Напишите в личку. Чем смогу...
Сейчас сплю уже.
3Qu, это не требуется, я, скорее, обменялся мнением. Там надо потратить определённое немаленькое время и немаленькие усилия на это.
Jame Bonds, вызвать из dll функцию MQL — не тривиальная задача.
Например, простейшая функция OrdersTotal(). Как вы её вызовете из dll как какую-нибудь другую C/C++-функцию из вашей же dll или из какой-нибудь другой библиотеки?
Это можно сделать, но это не тривиальная задача, нужно создать соответствующий framework, в котором ещё потребуется написать поддержку для каждой функции MQL, которую необходимо иметь возможность вызывать.
Хвалить MT может либо сотрудник MQ, либо программист, пишущий под MT для заказчиков, либо не знаю, торговец руками например. Каждый, кто пытается делать алго под МТ для биржи знает дюжину косяков, которым годы!
Jame Bonds, не «хороший язык программирования», а редкостный кал, извините за мой «французский».
Мало того, что кишит bug'ами, как только начинаешь пытаться более или менее пользоваться языком, даже ещё не «на всю катушку» (примеры bug'ов в самом языке приводить не буду, чтобы не работать для них бесплатным тестировщиком), так ещё и безобразно убог. Лишь низко-квалифицированные архитекторы могли так убого мыслить. Но кичатся, что, мол, 30-летний опыт у них.
Приведу пример убогости, с которым недавно столкнулся (это MQL4, но компилятор-то, по их заявлениям, общий): в макросах можно использовать только 8 параметров, попытка использовать 9-й приводит к явной ошибке компиляции «too much parameters for macro» (ещё и перевести на нормальный английский денег пожалели, parameters — исчисляемое, поэтому many, а никак не much; но это, пожалуй, закономерное следствие их общего убогого уровня).
Вопрос «а зачем вам больше параметров?», если его задаёт, как бы, профессионал, как раз выдаёт убогость такого «профессионала». Для любителя такой вопрос простителен.
Почему в нормальном C/C++ нет таких проблем, никто таких вопросов не задаёт, и не составляет никакой проблемы создать макрос хоть со 101-м параметром (вот ссылка на пример кода)?
Все 4 основных компилятора «справляются», MSVC только исполнить не может, потому что на том сайте это не доделано, но компилирует успешно. А остальные компиляторы и исполняют успешно.
Это ещё не всё. В моём примере макрос сделан многострочным, и склеивается он стандартно с помощью обратного slash'а '\' в конце каждой строки, кроме последней. В данном случае так склеено как само тело макроса, так и его параметры.
В убогом же MQL4 само тело макроса можно также без проблем с помощью данной техники сделать многострочным, а вот список параметров на несколько строк разнести — уже нет.
И так там — во всём.
Ещё там имеется куча ограничений, которая существует, как бы, для того, чтобы сделать язык «безопасным», но которая связывает, буквально, по рукам и ногам.
Что-либо написать там из-за всей этой совокупности факторов очень сложно и, при попытке, всё-таки, это сделать, по ощущениям, очень напоминает мазохизм.
Если охота поравзлечься, можете глянуть ссылку и срач в коментах))
Там правда немного про другое, но тогда я еще имел силы и достаточно нервов чтобы аргументировать с метаковскими представителями ))
https://smart-lab.ru/blog/336332.php
скрин лень делать))
но если руки дойдут, порадую))
Подвисает и с одним окном. В более ранних версиях этого не было. Сейчас у меня наихудшая поганая версия Quik 7.27.2.1
Из росс. брокеров, АЛОР предоставляет доступ (3 секции — ФР, СР, ВР).
Таким образом, QUIK, наверное, лучший в плане всякого скриптоподельничества (не могу утверждать, никогда не писал на QLua, но LUA для других задач использую активно и ее удобство сложно переоценить), но не более того
Что касается — переписать только интерфейс, на деле это так не получается. Для этого нужен идентичный API.
mt5 неплохая игрушка, но тестер у них просто упоротый(стал опять)… хотя может это просто я отстал от жизни и не знаю как настроить нормально. Но отношение метаков к людям(которые например образаются с багрепортами или в саппорт) это просто пиздец...
Глючат все трое, и смартком тоже глючит...
но глюк транзака(вернее транзак коннекта) я наблюдал только один раз(и то, не влияющий критически на работу), тогда как глюки остальных — пальцев на руках не хватит пересчитать…
Наоборот, завязать пытались с МТ4 — несколько лет даже не делали обновлений к нему, делали грозные объявления о том, что МТ4 скоро вообще отключат от торговых серверов! И всё это ради того, чтобы пересадить народ на МТ5. А вы тут пишете неведомо что.
На МТ5 идет активная работа не только по поддержке, но и по модернизации. Когда ваша биржа научится работать, тогда и МТ5 не будет глючить. По крайней мере по Форексу я ничего о сильных повсеместных глюках МТ5 не слышал.
Кстати, это вам написал человек, которого здесь (в блоге MQ) и на форуме разрабов забанили именно за критику МТ5.
Только она касалась совсем не глюков.
Какое-то время назад кстати сделали разные билды для биржи и для форекса… видимо от гибрида ужа и ежа и те и другие нос воротили…
Оч похоже, что MQ плюнула на эту затею. Видимо, нерентабельно.