Stanislav Korotky: Еще теоретически есть вариант постоянных (persistent) HTTP соединений, если их поддерживает WebRequest. Тогда бы можно было без DLL, сделать HTTP-сервер во внешней программе и передавать данные и команды хоть локально, хоть через интернет.
WebRequest их не поддерживает в явном виде. То есть где-то глубоко внутри он возможно держит keepalive и не закрывает соединение, но пользователю эта внутренняя кухня не доводится. И он синхронный - на время исполнения запроса WebRequest советник стоит.
Stanislav Korotky:
А разве штатный виндовый способ обмена сообщениями не работает? Послать в DLL или вообще в другой процесс хэндл чарта, и потом уже в обратную сторону делать SendMessage или PostMessage. Конечно над выбором самих сообщений может придется повозиться (MSDN Spy погонять), если не делать полноценный сабклассинг окон терминала - не уверен что это полностью через импорты стандартных виндовых dll можно сделать без кастомных библиотек, не проверял.
гонять Spy и самому засылать недокументированный Message в окно, это и есть не-штатный по отн. к MQL способ оповещений :-)
вообще самый простой способ - спихивать все данные сразу во внешнюю базу, чтобы та отвечала. Базы и предназначены чтобы их запрашивали :-) Самые подходящие чтобы писать потоки, то есть быстрые и маложручие - RR (round-robin), но они узко-специализированы и потому редки (в этой области имею ввиду, всякая измерительная аппаратура весьма их использует)
из более-менее универсальных, на мой взгляд более подходит MonetDB - там и данные организованы по столбцам и есть оригинальные "сокеты" - можно прямо по tcp лить сырые данные, а база сама триггерами разложит их по таблицам. Для фанатов - к базе можно прицепить R и python :-)
вообще самый простой способ - спихивать все данные сразу во внешнюю базу, чтобы та отвечала. Базы и предназначены чтобы их запрашивали :-)
Да, самый естественный подход. Передаются только последние данные.
Я использую MS SQL-Server или Access. Кстати, последние версии Access достаточно быстрые, но вообще, это не имеет особого значения т.к. последние данные все равно лежат в копиях таблиц в самой программе.
Alexey Oreshkin: Допустим всю логику я хочу описать не на мкл а где-то в другом месте, а от мт мне нужен тока поток данных и история, при запросе. Кто как решает данную задачу ?
Раньше для МТ4 все писал в DLL, так как язык был бедный. Это я про старые версии < 600.
Похоже, вчера нашел решение, мне надо подключить МТ5 к MS SQL Server 2017
Можно конечно через пайпы, но я их не люблю за ненадежность
ДЛЛ писать влом, вот готовый пакет для подключения MT4, MT5-32, MT5-64 к C#
Все гнутое, пакет развивается
http://mtapi4.net
Утром все установил, смысл такой. Во первых проект с открытым кодом, то есть исходники на MQL4, MQL5, C#, C++ CLR и вдобавок все в уже откомпилированном виде. Ставятся легко, если будете ставить, только на c:\Program Files и c:\Program Files(x86). На другие диски почему-то не ставиться, об этом пишут на сайте. Нужна Visual Studio 2015, если будете писать на шарпе.
Пока изучаю сырцы, если эта магия заработает, будет здорово.
Вообще я давно связывал МТ4 с шарпом через прослойку на C++ CLR, похоже, тут тот же подход.
Вообще, я не собираюсь уйти с MQL5, просто нужен доступ к MS SQL Server 2017. Кстати, для Сан Саныча, VS 2017 и этот сервер поддерживают R.
Сырцы лежат на Githab, постоянно народ пишет багфиксы.
Утром все установил, смысл такой. Во первых проект с открытым кодом, то есть исходники на MQL4, MQL5, C#, C++ CLR и вдобавок все в уже откомпилированном виде. Ставятся легко, если будете ставить, только на c:\Program Files и c:\Program Files(x86). На другие диски почему-то не ставиться, об этом пишут на сайте. Нужна Visual Studio 2015, если будете писать на шарпе.
Пока изучаю сырцы, если эта магия заработает, будет здорово.
Вообще я давно связывал МТ4 с шарпом через прослойку на C++ CLR, похоже, тут тот же подход.
Вообще, я не собираюсь уйти с MQL5, просто нужен доступ к MS SQL Server 2017. Кстати, для Сан Саныча, VS 2017 и этот сервер поддерживают R.
Сырцы лежат на Githab, постоянно народ пишет багфиксы.
по отзывам от его пользователей - он нещадно тормозит и подглючивает. Впрочем Ренат уже высказался (правда про другую DLL), (в целом так) "если вы втягиваете для простых вещей, целую виртуальную машину CLR, то чего вы от нас ждёте ?? оно и будет тормозить и глючить.."
Maxim Kuznetsov: по отзывам от его пользователей - он нещадно тормозит и подглючивает. Впрочем Ренат уже высказался (правда про другую DLL), (в целом так) "если вы втягиваете для простых вещей, целую виртуальную машину CLR, то чего вы от нас ждёте ?? оно и будет тормозить и глючить.."
Вот и проверю. Не думаю, что запросы к БД раз в секунду через мостик .NET будут прям так критически тормозить. Мой мост MQL4 - C++ CLR - C# не тормозил и не глючил, но сырцы частично утеряны.
А что с машиной, ну надо время на разгон, потом она едет. Проводили же тесты год назад или меньше, С# отстает от MS С++ и MQL5, но не критично, вроде было менее 2 раз.
По факту, пусть сделают вместо разных экзотических либ типа fuzzy logic либу для MySQL. Давно обещали.
Вот и проверю. Не думаю, что запросы к БД раз в секунду через мостик .NET будут прям так критически тормозить. Мой мост MQL4 - C++ CLR - C# не тормозил и не глючил, но сырцы частично утеряны.
А что с машиной, ну надо время на разгон, потом она едет. Проводили же тесты год назад или меньше, С# отстает от MS С++ и MQL5, но не критично, вроде было менее 2 раз.
По факту, пусть сделают вместо разных экзотических либ типа fuzzy logic либу для MySQL. Давно обещали.
Вот и проверю. Не думаю, что запросы к БД раз в секунду через мостик .NET будут прям так критически тормозить. Мой мост MQL4 - C++ CLR - C# не тормозил и не глючил, но сырцы частично утеряны.
А что с машиной, ну надо время на разгон, потом она едет. Проводили же тесты год назад или меньше, С# отстает от MS С++ и MQL5, но не критично, вроде было менее 2 раз.
По факту, пусть сделают вместо разных экзотических либ типа fuzzy logic либу для MySQL. Давно обещали.
он там не просто мостик stdC<->C#, mt4api там ещё и данные сериализует/десериализует туда обратно. На чём в сумме и оттормаживает
по поводу "давно обещали", я тоже про то помню :-) ждёмс "нативный интерфейс SQLite" уже давно-давно..походу этого не будет никогда.
В общем, как только разработчики найдут время и силы для написания большего количества"народных" библиотек (и внедрения фич типа доступа к БД в язык??) будет совсем круто. С быстродействием MQL5 все хорошо, не хватает обвязки.
По поводу выбора MS MQL 2017 - это не мой выбор )) Себе я беру что-то попроще с доступом через нативную DLL. Например SCLIte, MS SQL Compact или другое.
Еще теоретически есть вариант постоянных (persistent) HTTP соединений, если их поддерживает WebRequest. Тогда бы можно было без DLL, сделать HTTP-сервер во внешней программе и передавать данные и команды хоть локально, хоть через интернет.
WebRequest их не поддерживает в явном виде. То есть где-то глубоко внутри он возможно держит keepalive и не закрывает соединение, но пользователю эта внутренняя кухня не доводится. И он синхронный - на время исполнения запроса WebRequest советник стоит.
А разве штатный виндовый способ обмена сообщениями не работает? Послать в DLL или вообще в другой процесс хэндл чарта, и потом уже в обратную сторону делать SendMessage или PostMessage. Конечно над выбором самих сообщений может придется повозиться (MSDN Spy погонять), если не делать полноценный сабклассинг окон терминала - не уверен что это полностью через импорты стандартных виндовых dll можно сделать без кастомных библиотек, не проверял.
гонять Spy и самому засылать недокументированный Message в окно, это и есть не-штатный по отн. к MQL способ оповещений :-)
вообще самый простой способ - спихивать все данные сразу во внешнюю базу, чтобы та отвечала. Базы и предназначены чтобы их запрашивали :-) Самые подходящие чтобы писать потоки, то есть быстрые и маложручие - RR (round-robin), но они узко-специализированы и потому редки (в этой области имею ввиду, всякая измерительная аппаратура весьма их использует)
из более-менее универсальных, на мой взгляд более подходит MonetDB - там и данные организованы по столбцам и есть оригинальные "сокеты" - можно прямо по tcp лить сырые данные, а база сама триггерами разложит их по таблицам. Для фанатов - к базе можно прицепить R и python :-)
вообще самый простой способ - спихивать все данные сразу во внешнюю базу, чтобы та отвечала. Базы и предназначены чтобы их запрашивали :-)
Да, самый естественный подход. Передаются только последние данные.
Я использую MS SQL-Server или Access. Кстати, последние версии Access достаточно быстрые, но вообще, это не имеет особого значения т.к. последние данные все равно лежат в копиях таблиц в самой программе.
Допустим всю логику я хочу описать не на мкл а где-то в другом месте, а от мт мне нужен тока поток данных и история, при запросе.
Кто как решает данную задачу ?
Раньше для МТ4 все писал в DLL, так как язык был бедный. Это я про старые версии < 600.
Сейчас особого смысла не вижу.
Похоже, вчера нашел решение, мне надо подключить МТ5 к MS SQL Server 2017
Можно конечно через пайпы, но я их не люблю за ненадежность
ДЛЛ писать влом, вот готовый пакет для подключения MT4, MT5-32, MT5-64 к C#
Все гнутое, пакет развивается
http://mtapi4.net
Похоже, вчера нашел решение, мне надо подключить МТ5 к MS SQL Server 2017
Можно конечно через пайпы, но я их не люблю за ненадежность
ДЛЛ писать влом, вот готовый пакет для подключения MT4, MT5-32, MT5-64 к C#
Все гнутое, пакет развивается
http://mtapi4.net
Утром все установил, смысл такой. Во первых проект с открытым кодом, то есть исходники на MQL4, MQL5, C#, C++ CLR и вдобавок все в уже откомпилированном виде. Ставятся легко, если будете ставить, только на c:\Program Files и c:\Program Files(x86). На другие диски почему-то не ставиться, об этом пишут на сайте. Нужна Visual Studio 2015, если будете писать на шарпе.
Пока изучаю сырцы, если эта магия заработает, будет здорово.
Вообще я давно связывал МТ4 с шарпом через прослойку на C++ CLR, похоже, тут тот же подход.
Вообще, я не собираюсь уйти с MQL5, просто нужен доступ к MS SQL Server 2017. Кстати, для Сан Саныча, VS 2017 и этот сервер поддерживают R.
Сырцы лежат на Githab, постоянно народ пишет багфиксы.
Утром все установил, смысл такой. Во первых проект с открытым кодом, то есть исходники на MQL4, MQL5, C#, C++ CLR и вдобавок все в уже откомпилированном виде. Ставятся легко, если будете ставить, только на c:\Program Files и c:\Program Files(x86). На другие диски почему-то не ставиться, об этом пишут на сайте. Нужна Visual Studio 2015, если будете писать на шарпе.
Пока изучаю сырцы, если эта магия заработает, будет здорово.
Вообще я давно связывал МТ4 с шарпом через прослойку на C++ CLR, похоже, тут тот же подход.
Вообще, я не собираюсь уйти с MQL5, просто нужен доступ к MS SQL Server 2017. Кстати, для Сан Саныча, VS 2017 и этот сервер поддерживают R.
Сырцы лежат на Githab, постоянно народ пишет багфиксы.
по отзывам от его пользователей - он нещадно тормозит и подглючивает. Впрочем Ренат уже высказался (правда про другую DLL), (в целом так) "если вы втягиваете для простых вещей, целую виртуальную машину CLR, то чего вы от нас ждёте ?? оно и будет тормозить и глючить.."
Вот и проверю. Не думаю, что запросы к БД раз в секунду через мостик .NET будут прям так критически тормозить. Мой мост MQL4 - C++ CLR - C# не тормозил и не глючил, но сырцы частично утеряны.
А что с машиной, ну надо время на разгон, потом она едет. Проводили же тесты год назад или меньше, С# отстает от MS С++ и MQL5, но не критично, вроде было менее 2 раз.
По факту, пусть сделают вместо разных экзотических либ типа fuzzy logic либу для MySQL. Давно обещали.
Вот и проверю. Не думаю, что запросы к БД раз в секунду через мостик .NET будут прям так критически тормозить. Мой мост MQL4 - C++ CLR - C# не тормозил и не глючил, но сырцы частично утеряны.
А что с машиной, ну надо время на разгон, потом она едет. Проводили же тесты год назад или меньше, С# отстает от MS С++ и MQL5, но не критично, вроде было менее 2 раз.
По факту, пусть сделают вместо разных экзотических либ типа fuzzy logic либу для MySQL. Давно обещали.
Наврал, вот время летит, думал год прошел ))
Вот эти тесты https://www.mql5.com/ru/forum/165687
Вот и проверю. Не думаю, что запросы к БД раз в секунду через мостик .NET будут прям так критически тормозить. Мой мост MQL4 - C++ CLR - C# не тормозил и не глючил, но сырцы частично утеряны.
А что с машиной, ну надо время на разгон, потом она едет. Проводили же тесты год назад или меньше, С# отстает от MS С++ и MQL5, но не критично, вроде было менее 2 раз.
По факту, пусть сделают вместо разных экзотических либ типа fuzzy logic либу для MySQL. Давно обещали.
он там не просто мостик stdC<->C#, mt4api там ещё и данные сериализует/десериализует туда обратно. На чём в сумме и оттормаживает
по поводу "давно обещали", я тоже про то помню :-) ждёмс "нативный интерфейс SQLite" уже давно-давно..походу этого не будет никогда.
В общем, как только разработчики найдут время и силы для написания большего количества"народных" библиотек (и внедрения фич типа доступа к БД в язык??) будет совсем круто. С быстродействием MQL5 все хорошо, не хватает обвязки.
По поводу выбора MS MQL 2017 - это не мой выбор )) Себе я беру что-то попроще с доступом через нативную DLL. Например SCLIte, MS SQL Compact или другое.