Экспорт данных - страница 2

 
Maxim Kuznetsov:

разница (точнее некоторая сложность) в том что MQL может работать с DLL только по опросам. То есть MQL всегда является инициатором и нет нормального штатного способа снаружи (из DLL или сторонней программы) ему сказать - "пришёл запрос - дай ответ".


Вот в этом и загвоздка. Понятно что можно по таймеру, но хочется то по событию (необходимости)

 
Yuriy Asaulenko:
Вариант конечно. Сам их никогда не использовал, но несколько раз читал на форуме, что они периодически отваливаются. Возможно слухи преувеличены.)

Слухи сильно преувеличены. У меня работает вообще без каких-либо сбоев.

 
Dmitriy Skub:

Слухи сильно преувеличены. У меня работает вообще без каких-либо сбоев.

Я  IP-протоколы (сокеты) пользую. Майкрософт там все хорошо организовала, ничего дополнительного не надо. С MMF - там еще самому надо организовывать. С пайпами, если не ошибаюсь, тоже.
 
Yuriy Asaulenko:
Я  IP-протоколы (сокеты) пользую. Майкрософт там все хорошо организовала, ничего дополнительного не надо. С MMF - там еще самому надо организовывать. С пайпами, если не ошибаюсь, тоже.
Сокеты штатно не поддерживаются МТ5, в отличие от пайпов. В пределах локальной машины пайп работает через мемори мэп - соответсвенно, прием/передача мгновенная, внутри сети - через тсп. В целом, организация работы с МТ попроще, чем через сокеты. Все ИМХО, конечно.
 
Dmitriy Skub:
Сокеты штатно не поддерживаются МТ5, в отличие от пайпов. В пределах локальной машины пайп работает через мемори мэп - соответсвенно, прием/передача мгновенная, внутри сети - через тсп. В целом, организация работы с МТ попроще, чем через сокеты. Все ИМХО, конечно.

В этом направлении как раз и думал двинуться.

Ещё вопрос знатокам...хотя нет, думаю забанят нафиг сразу.

Всем спасибо за дискуссию и помощь.
 
Dmitriy Skub:
Сокеты штатно не поддерживаются МТ5, в отличие от пайпов. В пределах локальной машины пайп работает через мемори мэп - соответсвенно, прием/передача мгновенная, внутри сети - через тсп. В целом, организация работы с МТ попроще, чем через сокеты. Все ИМХО, конечно.

Не знаю. В данном случае штатная поддержка не является ни плюсом, ни минусом. Просто ДЛЛ, и будет штатная поддержка чего пожелаете.

Какая разница что вызывать, штатную функцию, или функцию ДЛЛ.

 
Yuriy Asaulenko:

Не знаю. В данном случае штатная поддержка не является ни плюсом, ни минусом. Просто ДЛЛ, и будет штатная поддержка чего пожелаете.

Какая разница что вызывать, штатную функцию, или функцию ДЛЛ.

Надеюсь, что разница в надежности) И в скорости, конечно.
 
Maxim Kuznetsov:

разница (точнее некоторая сложность) в том что MQL может работать с DLL только по опросам. То есть MQL всегда является инициатором и нет нормального штатного способа снаружи (из DLL или сторонней программы) ему сказать - "пришёл запрос - дай ответ".

А разве штатный виндовый способ обмена сообщениями не работает? Послать в DLL или вообще в другой процесс хэндл чарта, и потом уже в обратную сторону делать SendMessage или PostMessage. Конечно над выбором самих сообщений может придется повозиться (MSDN Spy погонять), если не делать полноценный сабклассинг окон терминала - не уверен что это полностью через импорты стандартных виндовых dll можно сделать без кастомных библиотек, не проверял.

 
Еще теоретически есть вариант постоянных (persistent) HTTP соединений, если их поддерживает WebRequest. Тогда бы можно было без DLL, сделать HTTP-сервер во внешней программе и передавать данные и команды хоть локально, хоть через интернет.
 
Stanislav Korotky:

А разве штатный виндовый способ обмена сообщениями не работает? Послать в DLL или вообще в другой процесс хэндл чарта, и потом уже в обратную сторону делать SendMessage или PostMessage. Конечно над выбором самих сообщений может придется повозиться (MSDN Spy погонять), если не делать полноценный сабклассинг окон терминала - не уверен что это полностью через импорты стандартных виндовых dll можно сделать без кастомных библиотек, не проверял.

Коллбэк в МТ вряд-ли возможен. Кроме того в МТ нет указателей.( Дескрипторы не в счет.
Причина обращения: