Используйте чистые синхронные вызовы, а не асинхронные коллбеки типа onreceive.
то есть все сделать на основе WinSock и функции send/recv ?
но тогда ведь прийдется намертво зацикливать функцию проверки пришедших данных ?
Winsock Functions (Windows)
- msdn.microsoft.com
The following list provides concise descriptions of each Winsock function. For additional information on any function, click the function name. FunctionDescription Establishes a connection to a specified socket, and optionally sends data once the connection is established. Only supported on connection-oriented sockets. Queries a...
Да, через синхронный винсок.
К сожалению, внутри MQL5 нельзя организовывать асинхронные вызовы по вполне понятным техническим причинам.
К сожалению, внутри MQL5 нельзя организовывать асинхронные вызовы по вполне понятным техническим причинам.
я просто планировал сделать такую простую связку - получаю CSocket::OnReceive -> в ней SendMessage(WM_KEYDOWN) на окно чарта о нотификации что есть данные -> и далее MQL вычитывает по Receive в фунции OnChartEvent.
но вот как раза до первой цепочки - OnReceive - событие из недр винды не доходит. а так бы было красиво... :)
попробую винсок прямо в mql импортнуть, без промежуточной dll. И сам скрипт MQL зациклить на таймер или чартевент на себя.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В обычном диалоговом приложении все отрабатывает четко. Отправка по Send, прием по событию на OnReceive без проблем.
Но при переносе класса в dll - функция OnReceive не вызывается.
то есть начало отрабатывает нормально (Create/Connect), и функция отправки Send работает. Но функция OnReceive, для инициализации приема не вызывается.
В гугле уже обчитался, эта проблема частая, но предлагаемого решения не нашел.
Моя догадка, что вызов события до сокета почему то не передается. Причина может быть, что поток этой dll, в котором сокет создается, не отправляет его окну (CSocketWnd) требуемое событие, ну и как следствие OnReceive не вызывается.
Может надо окно создать и в нем сокет.
Или UI-поток ? С потоком кстати я пытался сделать (AfxBeginThread), но OnReceive тоже не заработал.
Помогите советом или кодом, кто чем может, а то затраха замучился с ним.
вот весь код что в DLL