не сумели ответить, так как не поставили правильно.
вам что надо - запустить ex5 код в обычном приложени или дать команду терминалу чтоб он запустил ex5 ?
первое нельзя, второе можно, но как то недокументированно через API.
не сумели ответить, так как не поставили правильно.
вам что надо - запустить ex5 код в обычном приложени или дать команду терминалу чтоб он запустил ex5 ?
первое нельзя, второе можно, но как то недокументированно через API.
Неполнота вопроса скорее всего от того, что я не до конца понимаю всех возможностей платформы.
У меня есть самописное приложение, которому хотелось бы дать возможность взаимодействовать с терминалом, т.е. открывать/закрывать позиции по рынку, делать обработки данных и прочее. Для меня видятся несколько вариантов:
- реализовать внешний функционал средствами mql - сейчас это будет слишком затратно и неоптимально, так как пришлось бы переносить несколько десятков тысяч строк кода с ассемблерными вставками.
- обернуть внешнее приложение в dll и периодически дергать его, получая данные и реагируя на них уже из скрипта - тут вопрос об оптимальном периоде дерганья, данные меняются непериодически.
- вариант №2 можно расширить реализовав обмен через сокеты или named pipes - но это уже огород получается.
- сделать на mql5 скрипты, дергать их их внешнего приложения через API (есть ли такое? и если есть, то где посмотреть), либо через командную строку (а так можно?) - видится мне наиболее оптимальным вариантом.
И еще один вопрос - все то же самое, только для MQL4
- www.mql5.com
Неполнота вопроса скорее всего от того, что я не до конца понимаю всех возможностей платформы.
У меня есть самописное приложение, которому хотелось бы дать возможность взаимодействовать с терминалом, т.е. открывать/закрывать позиции по рынку
не проблема
- реализовать внешний функционал средствами mql - сейчас это будет слишком затратно и неоптимально, так как пришлось бы переносить несколько десятков тысяч строк кода с ассемблерными вставками.
делайте DLL и обращайтесь к ней. Затрат временных и производственных нет.
- обернуть внешнее приложение в dll и периодически дергать его, получая данные и реагируя на них уже из скрипта - тут вопрос об оптимальном периоде дерганья, данные меняются непериодически.
боятся нечего, можете дергать сам МТ, посылая ему сообщение на окно чарта. Он будет перехватывать его через ObChartEvent. Вам надо определиться только какое из виндовых сообщений МТ выкидывает в эту функцию.
- вариант №2 можно расширить реализовав обмен через сокеты или named pipes - но это уже огород получается.
а этого вообще нет смысла.
- сделать на mql5 скрипты, дергать их их внешнего приложения через API (есть ли такое? и если есть, то где посмотреть), либо через командную строку (а так можно?) - видится мне наиболее оптимальным вариантом.
если знаете Spy++ и WinAPI и умеете посылать сообщения окнам, то разобраться можно.
И еще один вопрос - все то же самое, только для MQL4
Попробуйте использовать для обмена с Вашим приложением вот эту библиотеку: https://www.mql5.com/ru/code/816
Проверено - работает как часы (швейцарские) и практически без накладных расходов.- голосов: 7
- 2012.01.13
- o_O
- www.mql5.com
Dima_S
Спасибо за ответы!
Мапить файлы и дергать dll - хорошие варианты, только один минус - терминал не знает, когда обращаться к моему приложению за очередной порцией данных. Именно поэтому я идеальным вижу вариант, когда мое приложение является ведущим, а терминал - ведомым. Т.е. терминал должен был бы каким-то образом принимать realtime нотификации.
Насколько я понял из Ваших ответов, нужно посылать сообщения окну чарта, на котором будет запущен эксперт Далее система ретранслирует его в событие OnChartEvent, которое и может быть обработано в скрипте. Но для MT4 разве есть подобные события? (прошу прощения за свою темноту) А если нет, то какие могут быть альтернативы named pipe? (tcp, udp и другие протоколы сложнее в реализации и использовании)
sergeev
Dima_S
Спасибо за ответы!
Мапить файлы и дергать dll - хорошие варианты, только один минус - терминал не знает, когда обращаться к моему приложению за очередной порцией данных.
а вам и знать не надо. Дергаете в цикле каждую секунду/минуту
Именно поэтому я идеальным вижу вариант, когда мое приложение является ведущим, а терминал - ведомым. Т.е. терминал должен был бы каким-то образом принимать realtime нотификации.
Насколько я понял из Ваших ответов, нужно посылать сообщения окну чарта, на котором будет запущен эксперт Далее система ретранслирует его в событие OnChartEvent, которое и может быть обработано в скрипте. Но для MT4 разве есть подобные события?
для МТ4 нету. только WInAPI по запуску требуемого скрипта
sergeev:
боятся нечего, можете дергать сам МТ, посылая ему сообщение на окно чарта. Он будет перехватывать его через ObChartEvent. Вам надо определиться только какое из виндовых сообщений МТ выкидывает в эту функцию.
а этого вообще нет смысла.
если знаете Spy++ и WinAPI и умеете посылать сообщения окнам, то разобраться можно.
Идея интересная. Тут возможен некоторый прорыв. Создание call-back функций вызываемых из внешних приложений (в частности из другого терминала, в том числе MT4). Типа: пишем в в map-файл номер чарта, имя функции и параметры, потом засылаем внешнее сообщение в чарт, эксперт-драйвер перехватывает, парсит map-файл и уже адресно засылает в соответствующий чарт юзерское сообщение с именем функции и параметрами.
Щупать надо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сам не сумел ответить на этот вопрос, поэтому прошу помощи более знающих людей.
Есть ли возможность запускать советники и скрипты MQL на выполнение из внешней программы?