Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
... констатируя очевидное, если вы хотите сделать вышеописанное в советнике, а не в скрипте [...].
Переработанная версия, которую можно использовать для создания советника, а не скрипта, просто убрав комментарий #define COMPILE_AS_EA. Тогда код будет иметь OnTimer (и OnTick) вместо OnStart.
Единственным другим изменением является то, что код теперь переводит сокеты в неблокирующий режим. Он по-прежнему опрашивает наличие новых событий сокета с помощью select(), но теперь он избегает опасности вхождения в состояние блокировки, если select() окажется ошибочным.
Пересмотренная версия, которая [...].
Я уверен, что все с нетерпением ждут обновления по этому вопросу...
В контексте эксперта - который теперь используется по умолчанию в коде - оказывается, что можно использовать WSAAsyncSelect() для событийно-управляемой обработки активности сокета. Это часто позволяет снизить задержку между отправкой и получением сообщения ниже уровня миллисекунд. Точная скорость зависит от того, что еще делает MT4, но в среднем это намного быстрее, и никогда не хуже, чем просто использование таймера.
Невозможно заставить WSAAsyncSelect() вызвать OnTimer() или OnTick() в советнике. Например, можно сказать WSAAsyncSelect(), чтобы она отправляла сообщения WM_TIMER, но MT4 игнорирует их, потому что идентификатор таймера wparam из WSAAsyncSelect() не совпадает с идентификатором таймера, который она ожидает от EventSetMillisecondTimer().
Однако, указание WSAAsyncSelect() посылать WM_KEYDOWN успешно запускает OnChartEvent() в советнике. См. комментарии в коде для получения подробной информации о том, как работает это дополнение.
Для развлечения...
Лол. Потрясающе. Поздравляю. Я и не думал, что на MQL можно написать такие функции.
Лол. Потрясающе. Поздравляю. Я и не думал, что на MQL можно реализовать такой функционал.
Мой инстинкт - всегда делать серверные сокеты с использованием многопоточности, но я не могу придумать причину, по которой этот код не был бы жизнеспособным и безопасным для реального использования.
В последней версии, приведенной выше, есть одна вещь, которая не является идеальной. Вместо того чтобы публиковать еще один большой блок кода, я опишу его:
Это небольшое изменение в коде, но я не хочу постить еще один большой блок в этот форум, когда это интересно только вам.
Вместо того, чтобы публиковать еще один большой блок кода [...]
На второй размышления...
Еще одна версия со следующими изменениями:
Вместо того, чтобы размещать такие длинные SRC, подумайте о том, чтобы просто прикрепить сам файл. Я бы предложил вам отредактировать ваши длинные сообщения, удалив секции SRC и просто прикрепив исходный файл.
Вместо того, чтобы размещать такие длинные SRC, подумайте о том, чтобы просто прикрепить сам файл. Я бы предложил вам отредактировать ваши длинные сообщения, удалив секции SRC и просто прикрепив вместо них исходный файл.
Большое спасибо за ваш вклад.
Но, среди многих причин, почему я не собираюсь этого делать, является тот факт, что приведенный выше код работает как на MT4, так и на MT5. Если бы я загрузил его как вложение, он был бы введен в заблуждение и был бы помечен как .mq4 или .mq5, тогда как на самом деле он работает и там, и там.
Но среди множества причин [...].
Еще одной из ключевых причин является следующий сценарий, который мог бы быть применен к ОП:
Насколько я знаю, ни поисковые системы, ни поиск на этом сайте не могут просматривать вложения. Поэтому, если вы разместите код в виде вложения, он будет невидим для поиска по запросу "mql4 bind listen htons".
Вы регулярно говорите людям, что им следовало бы воспользоваться поиском или обратиться к документации; я пытаюсь помочь именно в этом.
(Так получилось, что "mql4 bind listen htons" не находит эту тему, потому что Google не просматривал страницу с 14 сентября. Но скоро она должна появиться в Google).
Большое спасибо за ваш вклад.
Но, среди многих причин, по которым я не собираюсь этого делать, является тот факт, что приведенный выше код работает как на MT4, так и на MT5. Если бы я загрузил его как вложение, он был бы введен в заблуждение и был бы помечен как .mq4 или .mq5, тогда как на самом деле он работает и там, и там.
Если подумать...
Еще одна версия, со следующими изменениями:
Еще раз спасибо jjc,
Сейчас я тороплюсь и у меня нет времени на тестирование, но я сделаю это на следующей неделе и расскажу вам. Я думаю, что у меня не будет проблем с запуском, но, возможно, я задам вам несколько вопросов. BTW: Пожалуйста, не редактируйте сообщения, они все идеальны как они есть (я чувствую себя как в StackOverflow =)).