MQL4 - automated forex trading   /  

Code Base

Code Base  Скрипты  Interception Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Этот скрипт для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
Interception [ en | cn ]
Автор: Avals (30.03.2006 09:14)
Рейтинг: 8.5
Скачано: 2355
Скачать:
 IdleLib.dll (60.0 Kb)
 shablon.mq4 (1.4 Kb) View
 shablon.zip (33.9 Kb)
 shablon.gif (7.0 Kb)

    Нужен для организации управляемых пользователем действий. Например пошаговый эмулятор торгов.

    Состав:
IdleLib.dll - библиотека перехвата. Установить в папку "libraries"
shablon.mq4 - пример скрипта перехватывающего все события окон Metatrader и распечатывающий код события (например нажатой клавиши) и имя окна, где это событие произошло.
13 комментариев: 1 2   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий
Avals писал(а):
Begun wrote:
Полезная разработка !
Спасибо.
А можно узнать номер бара и цену, на которой случился клик мышкой :) ?
Можно получить экранные координаты, координаты внутри окна, но это будут координаты в пикселях (x,y), а как их перевести в логические координаты - время/котировка я не знаю.

Уважаемый Слава! Как можно получить координаты (х,у) в пикселях?


03.12.2008 17:30 NPV
Почемуто у меня скрипт не работает. Прицепляю его, в "Экспертах" пишет loaded successfully. Нажимаю клавиши - ноль реакции. Делаю "удалить скрипт", после небольшой паузы удаляет с ошибкой shutdown by tumeout. Все галочки на разрешение торговать включаю. Подскажите пожалуйста чего я могу не доделать.
20.12.2006 14:55 Mihause

Господа! Я только недавно выбрался на сайт. Спасибо Tovaroved! Извиняюсь за невежливость!

21.10.2006 00:04 GeorgeU
GeorgeU писал(а):

Здравствуйте Слава! А что делать, всё таки, если платформа называется не Метатрейдер, а Телетрейдер? Библиотека dll к сож. не работает. ... не распознает. Посоветуете?

скопировать файл C:Program FilesMetaTrader 4profilesconfiguration.ini от "правильного" МТ в
C:Program FilesTeletrader 4profilesconfiguration.ini

19.10.2006 00:03 Tovaroved

Здравствуйте Слава! А что делать, всё таки, если платформа называется не Метатрейдер, а Телетрейдер? Библиотека dll к сож. не работает. ... не распознает. Посоветуете?

22.09.2006 14:23 GeorgeU
тут глючок небольшой имеется... железно зашито в dll имя окна метатрейдера :/
а если программа называется как-нибудь по-другому, то getactiveWndname ни чего не возвращает... и ни как не узнать :(
08.09.2006 08:41 Myxu

Очень хорошая и полезная идея!

Уважаемый Avals!

У меня к Вам такой вопрос. А можно ли сделать обратную эмуляцию команды. Вот например я нахожусь в окне графика любой валютной пары, и нажимаю правую кнопку. Открывается окно, Ваш shablon показывает код мыши 517, затем я жму на надпись "Обновить" - shablon выдает код 513. Мне нужно сделать так, чтобы когда я мышкой передвигаю Object помещенный на конце индикатора - в этот момент эмулировалась бы команда "Обновить" код 513.

Или более обще, если я знаю код, то можно ли его допустим из скрипта запустить на выполнение, при определенном условии не нажимая мышкой или клавишей.

Заранее благодарю за ответ. Если это выходит за рамки обсуждения данной темы, то ответить можно на адресс ANG3110@latchess.com .

02.05.2006 18:17 ANG3110
Avals wrote:
Begun wrote:
Полезная разработка !
Спасибо.
А можно узнать номер бара и цену, на которой случился клик мышкой :) ?
Можно получить экранные координаты, координаты внутри окна, но это будут координаты в пикселях (x,y), а как их перевести в логические координаты - время/котировка я не знаю.
Если известен размер окна в пикселях, тогда запросто можно воспользоваться функциями BarsPerWindow и FirstVisibleBar. Нет никаких проблем, чтобы вычислить номер бара.
Сложнее с координатой цены. Если масштаб - автоматический, то можно посчитать, прибавив по 5 процентов от разнициы между наибольшим и наименьшим значениями цен сверху и снизу. Если масштаб - фиксированный, то посчитать нельзя, так как отсутствует информация о верхней и нижней границе.
07.04.2006 17:07 stringo
Referent wrote:
Уважаемый Слава!
А можно такую функцию добавить в Вашу разработку:
возвращать название активного окна без нажатия клавиши или мыши,
то есть в к5аждый момент времени знать какое окно активное.
Можно, но ничего добавлять не нужно - только изменить скрипт обработчик:

//+------------------------------------------------------------------+ //| shablon.mq4 | //| Viatcheslav Suvorov | //+------------------------------------------------------------------+ #property copyright "Viatcheslav Suvorov" #property show_inputs #include <WinUser32.mqh> #import "IdleLib.dll" int GetLastKeyWP(); int GetLastMouseWP(); int IdleLibInit(); int IdleLibUnInit(); string GetActiveWndName(); #import int start() { IdleLibInit();//инициализируем Dll для перехвата событий bool NeedLoop=true; string predwnd=''; while(NeedLoop){ // int lastkey=GetLastKeyWP();//Опрашиваем код посл. клавиши // int lastmouse=GetLastMouseWP();//Опрашиваем код мыши string lastwnd=GetActiveWndName();//Имя окна Metatrader где произошло событие if ((predwnd!=lastwnd) && lastwnd!="") { Print("Активное окно ",lastwnd); predwnd=lastwnd; } else { // Print("Активное окно ",predwnd); //активное окно не изменилось } Sleep(100); }//while return(0); } void deinit() { IdleLibUnInit(); }

Будет выодить имя окна когда изменилось активное. В блок
} else { // Print("Активное окно ",predwnd); //активное окно не изменилось }

можно добавить обработку если активное окно осталось тем же. Т.е. в любой момент имеем имя окна.
Можно так же добавить обработку случая когда не одно окно MetaTrader не имеет фокуса (т.е. пользователь переключился на другое приложение):
if (lastwnd="") { ////////////////// }
03.04.2006 07:29 Avals
Уважаемый Слава!
А можно такую функцию добавить в Вашу разработку:
возвращать название активного окна без нажатия клавиши или мыши,
то есть в к5аждый момент времени знать какое окно активное.
02.04.2006 21:12 Referent