Мои замечания вообще нужны здесь? Я связываю mql код с внешним кодом, параллельно посматриваю на ваши наработки, находятся ошибки, могу и не писать сюда.
Не забудьте явно написать в статье про битность. Что-то вроде: "код для x64" или сделать на макросах переключатель для компиляции под разные архитектуры. Кстати, чему у вас на x64 равен sizeof(ULONG)? Какие-то противоречивые данные у меня. С одной стороны вроде как должен быть 4 всегда, модель LLP64 в win намекает, да и msdn пишет: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx
ULONG: An unsigned LONG. The range is 0 through 4294967295 decimal This type is declared in WinDef.h as follows: typedef unsigned long ULONG;
The data types supported by Windows are used to define function return values, function and message parameters, and structure members. They define the size and meaning of these elements. For more information about the underlying C/C++ data types, see Data Type Ranges. The following table contains the following types: character, integer...
Могли бы Вы поделиться, для каких задач собираетесь применять? В статье даже просьба такая есть
В голову не приходит, где это было бы мне удобно.
Я в линуксе, следовательно, ipc вообще становится нетривиальной задечей (общение между терминалом под wine и linuex exe). А IPC через сеть - универсальный способ. Я соединяю мкл скрипт с linux программой через loopback (127.0.0.1) на одном компе. По сути, я написал linux api для терминала (мкл скрипт обрабатывает запросы и отсылает ценовые данные или выставляют ордера).
В моей ситуации это лучший способ IPC из того что я пробовал. А перносить свои наработки на мкл не хочу - не хочу привязываться к конкретному языку, принципиально.
Я в линуксе, следовательно, ipc вообще становится нетривиальной задечей (общение между терминалом под wine и linuex exe). А IPC через сеть - универсальный способ. Я соединяю мкл скрипт с linux программой через loopback (127.0.0.1) на одном компе. По сути, я написал linux api для терминала (мкл скрипт обрабатывает запросы и отсылает ценовые данные или выставляют ордера).
В моей ситуации это лучший способ IPC из того что я пробовал. А перносить свои наработки на мкл не хочу - не хочу привязываться к конкретному языку, принципиально.
Статья вышла бы знатная! Получается свой торговый универсальный API под любую платформу. А для платформы пишется только приемо/передатчик на API самой уже платформы.
И можно писать ТС на любом языке. Программеры - они такие!
Расплата только в лэтенси. Поэтому для совсем узкого вида ТС не подойдет - и не страшно.
Статья очень интересная и познавательная. Планирую использовать сокетную технологию для передачи с VPS сервера с МТ-5 теминалами на сервер с БД MS-SQL информации по финансовому состоянию счетов в конце дня/недели/месяца. Реализовал на практике, но практика показывает что по прошествии некоторого времени пакеты начинают теряться. Причем судя по логам вначале "глохнет" серверная часть, а клиентские части в это время продолжают считать что все Ок, т.к. проведение в коде клиентской части проверки вида
ничего не дает. Т.е. клиенты не могут диагностировать потерю коннекта с сервером до начала отпраки и даже в момент отправки пакетов.
Возможно необходимо дополнительно какую-то функция типа "CheckSocket" для предварительной проверки работоспособности серверного сокета? Как ее тогда реализовать ?
но в статье
Мои замечания вообще нужны здесь? Я связываю mql код с внешним кодом, параллельно посматриваю на ваши наработки, находятся ошибки, могу и не писать сюда.
все ок, замечания пишите.
правки типов я отправляю в статью.
в примерах поиспользую 64 бит
https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx
An unsigned LONG. The range is 0 through 4294967295 decimal This type is declared in WinDef.h as follows: typedef unsigned long ULONG;
но не уверен.
ЗЫ:
если я прав, то вот сюда вы зря ulong впихнули:
У меня получился такой синхронный TCP клиент:
На мкл мне сервер не нужен, поэтому только клиент. Проверил поверхностно.
ЗЫ: Спасибо за статью.У меня получился такой синхронный TCP клиент:
Могли бы Вы поделиться, для каких задач собираетесь применять? В статье даже просьба такая есть
Если у вас тоже есть идеи применения — поделитесь ими в комментариях к статье
В голову не приходит, где это было бы мне удобно.
Могли бы Вы поделиться, для каких задач собираетесь применять? В статье даже просьба такая есть
В голову не приходит, где это было бы мне удобно.
Я в линуксе, следовательно, ipc вообще становится нетривиальной задечей (общение между терминалом под wine и linuex exe). А IPC через сеть - универсальный способ. Я соединяю мкл скрипт с linux программой через loopback (127.0.0.1) на одном компе. По сути, я написал linux api для терминала (мкл скрипт обрабатывает запросы и отсылает ценовые данные или выставляют ордера).
В моей ситуации это лучший способ IPC из того что я пробовал. А перносить свои наработки на мкл не хочу - не хочу привязываться к конкретному языку, принципиально.
Я в линуксе, следовательно, ipc вообще становится нетривиальной задечей (общение между терминалом под wine и linuex exe). А IPC через сеть - универсальный способ. Я соединяю мкл скрипт с linux программой через loopback (127.0.0.1) на одном компе. По сути, я написал linux api для терминала (мкл скрипт обрабатывает запросы и отсылает ценовые данные или выставляют ордера).
В моей ситуации это лучший способ IPC из того что я пробовал. А перносить свои наработки на мкл не хочу - не хочу привязываться к конкретному языку, принципиально.
Статья вышла бы знатная! Получается свой торговый универсальный API под любую платформу. А для платформы пишется только приемо/передатчик на API самой уже платформы.
И можно писать ТС на любом языке. Программеры - они такие!
Расплата только в лэтенси. Поэтому для совсем узкого вида ТС не подойдет - и не страшно.
Реализовал на практике, но практика показывает что по прошествии некоторого времени пакеты начинают теряться. Причем судя по логам вначале "глохнет" серверная часть, а клиентские части в это время продолжают считать что все Ок, т.к. проведение в коде клиентской части проверки вида
if(client==INVALID_SOCKET) StartClient(Host,Port);ничего не дает. Т.е. клиенты не могут диагностировать потерю коннекта с сервером до начала отпраки и даже в момент отправки пакетов.Возможно необходимо дополнительно какую-то функция типа "CheckSocket" для предварительной проверки работоспособности серверного сокета? Как ее тогда реализовать ?