Простой пример как вызвать из индикатора скрипт. ( РЕШЕНО https://www.mql5.com/ru/forum/388529/page4 ) - страница 3

 
Yuriy Zaytsev #:

Из индикатора не желательно , ну просто операция не быстрая. 

В теории на индикаторе возникло событие  , отправил данные в скрипт и пошел трудится дальше. 

Это всего лишь индикатор, пусть остановится на 3-5 секунд, разве это критично?

У меня так уже лет 5 точно работает, отправляет данные на сервер
 
137 Matrix #:

Спасибо!

Похоже вызов скрипта эмуляцией нажатия клавишей  оптимальный вариант - Dmitry Fedoseev тоже самое описал в начале.

 
Vitaly Muzichenko #:

Это всего лишь индикатор, пусть остановится на 3-5 секунд, разве это критично?

У меня так уже лет 5 точно работает, отправляет данные на сервер

Виталий - как я понял именно через DLL   

#import "wininet.dll"

Нет не критично

принципе тоже можно.  в конце концов сигнал возникает внути дня не так часто.

да и ракеты  баллистические тут мы через космос мы не запускаем.  

 
Vitaly Muzichenko #:

Это всего лишь индикатор, пусть остановится на 3-5 секунд, разве это критично?

У меня так уже лет 5 точно работает, отправляет данные на сервер

На какой сервер он что-то отправляет, останавливая работу на несколько секунд? Виталий, речь об ИНДИКАТОРЕ. 

 
Алексей Тарабанов #:

На какой сервер он что-то отправляет, останавливая работу на несколько секунд? Виталий, речь об ИНДИКАТОРЕ. 

На мой сервер отправляет данные, а оттуда принимает ответ.

Конечно об индикаторе. В этом и преимущество, что для индикатора не нужно открывать отдельный график, а можно повесить к любому эксперту на уже открытый график.

 

Продолжу. Индикаторы устроены так, чтобы вообще не замедлять свою работу. Оператор Sleep запрещён, ну и все подобные операторы и функции тоже. 

Можно только передать данные куда-нибудь, это не возбраняется, надеюсь, но не факт. А вот, удастся ли принять данные - не уверен, насчёт глобальных переменных - тоже. Это ведь тоже чтение файла. 

Данные можно передать через графические объекты, причём в обе стороны - это точно. 

 
Yuriy Zaytsev #:

Спасибо!

Похоже вызов скрипта эмуляцией нажатия клавишей  оптимальный вариант - Dmitry Fedoseev тоже самое описал в начале.

Помогите разобраться  в коде Дмитрия. В какой строке индикатора происходит вызов скрипта? Не догоняю.)))

 
keybd_event(FirstKey,0,0,0);//нажатие первой клавиши (альта или контрола)
Sleep(PAUSE);
keybd_event(SecondKey,0,0,0);//нажатие второй клавиши (буквы)
Sleep(PAUSE);
keybd_event(SecondKey,0,2,0);// отжатие второй клавиши
Sleep(PAUSE);
keybd_event(FirstKey,0,2,0);// отжатие первой клавиши

Это нажатие горячих клавиш, которые должны быть назначены скрипту. 

Назначение горячих клавиш скрипту: в навигаторе правой кнопкой - Назначить горячую клавишу 

 

если всё равно без вызова DLL (WinAPI что всё равно) не обойтись - то лучше использовать WinAPI впрямую или свой DLL и не затрагивать очередь сообщений терминала. 

посылка Key-Events или навигация по иерархии окон терминала, всё-таки на грани фола. Так нельзя, это неприлично делать из модулей и плагинов. 

PS/ что нужно сделать в скрипте (WebRequest как правило) то делать через DLL. 

 
Dmitry Fedoseev #:

Это нажатие горячих клавиш, которые должны быть назначены скрипту. 

Назначение горячих клавиш скрипту: в навигаторе правой кнопкой - Назначить горячую клавишу 

Ха, дошло. Глаза проел название скрипта искал)))) Спасибо. Креативно)))

Причина обращения: