AlexeyVik: Тогда надо выбрать первый ChartFirst проверить нужный-ли, по символу и периоду, если нет выбрать следующий и т.д. до нужного и определить ChartID
Всем привет. Разбирался с библиотеками функций, импортом функций (#import) и включением файлов (#include). Не совсем понял кто кого "включает"? Итак.
Библиотеки находятся в папке Libraries. В этой папке могут размещаться 5(не исключено) видов файлов: 1- .dll(библиотека функций Windows, уже измененная для MT4 с модификатором #define MT4_EXPFUNC int __stdcall ...),
2- . ex4(похоже результат компиляции .mq4 или .mqh), 3- .dat(вообще про него ничего не прочитал), 4- .mqh(возможно файл для включения, потому что #property library отключен, но у Игоря Кима записана,
как библиотека дополнительных функций), 5- .mq4(библиотека пользовательских функций и файлов для включения, которые могут содержать пользовательские функции, файлы для включения, библиотеки .dll и что-то еще.
Файлы для включения находятся в папке Include и могут содержать другие файлы для включения, пользовательские функции, библиотеки .dll и что-то еще. Так же в папке Include --> Controls --> res значки(картинки) .bmp.
Как смог сделал(переделал) скрипт, который не работает(не реагирует на нажатие мыши и клавиатуры). Возможно потому, что в папке Libraries нет user32.dll(хотя ее использует WinUser32.mqh и ее не может где-то не быть).
Подскажите, где что не так. Заранее благодарен, вопросы только начинаются.
#property copyright"Copyright 2015"#property link"http://"#property version"1.00"//#property strict#include <WinUser32.mqh>
#import "IdleLib.dll"int GetLastKeyWP();
int GetLastMouseWP();
int IdleLibInit();
int IdleLibUnInit();
string GetActiveWndName();
#import
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---Alert("Начало.");
IdleLibInit();//инициализируем Dll для перехвата событий.while(IsStopped()==false)
{
int lastkey=GetLastKeyWP(); //Опрашиваем код посл. клавишиint lastmouse=GetLastMouseWP(); //Опрашиваем код мыши.string lastwnd=GetActiveWndName(); //Имя окна Metatrader где произошло событие.if ((lastkey!=0) && (lastwnd!=""))
{
Alert("Код нажатой клавиши=",lastkey," из окна ",lastwnd);
}
if ((lastmouse!=0) && (lastwnd!="") && (lastmouse!=512)) //отражаем все события кроме движения мыши.
{
Alert("Код мыши=",lastmouse," из окна ",lastwnd);
}
Sleep(200);
} //while
IdleLibUnInit();
Alert("Завершение.");
}
Всем привет. Разбирался с библиотеками функций, импортом функций (#import) и включением файлов (#include). Не совсем понял кто кого "включает"? Итак.
Библиотеки находятся в папке Libraries. В этой папке могут размещаться 5(не исключено) видов файлов: 1- .dll(библиотека функций Windows, уже измененная для MT4 с модификатором #define MT4_EXPFUNC int __stdcall ...),
2- . ex4(похоже результат компиляции .mq4 или .mqh), 3- .dat(вообще про него ничего не прочитал), 4- .mqh(возможно файл для включения, потому что #property library отключен, но у Игоря Кима записана,
как библиотека дополнительных функций), 5- .mq4(библиотека пользовательских функций и файлов для включения, которые могут содержать пользовательские функции, файлы для включения, библиотеки .dll и что-то еще.
Файлы для включения находятся в папке Include и могут содержать другие файлы для включения, пользовательские функции, библиотеки .dll и что-то еще. Так же в папке Include --> Controls --> res значки(картинки) .bmp.
Как смог сделал(переделал) скрипт, который не работает(не реагирует на нажатие мыши и клавиатуры). Возможно потому, что в папке Libraries нет user32.dll(хотя ее использует WinUser32.mqh и ее не может где-то не быть).
Подскажите, где что не так. Заранее благодарен, вопросы только начинаются.
Спасибо за ответ. Уточняю: 1) самописные *.dll - библиотека функций Windows или свой код , уже адаптированный для MT4. 2) *.mq4(исходник) будет компилироваться вместе с основным файлом или его *.ex4(уже скомпилированный)
будет включен(добавлен) к основному файлу в процессе компиляции. Для редактирования библиотеки удобней иметь исходник. 3) Деректива #import только для *.dll. Лежит в папке Libraries потому, что библиотека, хоть и внешних
функций. 4) *.mqh - файлы для включения, не компилируются(всегда исходники).
Читал, что старые библиотеки могут не работать потому, что сейчас юникод. Что не так с примером выше?
Спасибо за ответ. Уточняю: 1) самописные *.dll - библиотека функций Windows или свой код , уже адаптированный для MT4. 2) *.mq4(исходник) будет компилироваться вместе с основным файлом или его *.ex4(уже скомпилированный)
будет включен(добавлен) к основному файлу в процессе компиляции. Для редактирования библиотеки удобней иметь исходник. 3) Деректива #import только для *.dll. Лежит в папке Libraries потому, что библиотека, хоть и внешних
функций. 4) *.mqh - файлы для включения, не компилируются(всегда исходники).
Читал, что старые библиотеки могут не работать потому, что сейчас юникод. Что не так с примером выше?
Уточняю:
1) Библиотеки Windows не обязательно класть в "песочницу" терминала;
2) *.mq4 (исходник) с директивой #property library (после её компиляции получаем *.ex4 файл). Без этой директивы файл не компилируется;
Деректива #import используется не только для *.dll-библиотек. Загляните в любой *.mqh файл в папке Include. Кстати, там и должны лежать *.mqh (заголовочные) файлы. Они не компилируются.
Про "старые" библиотеки и юникод - это про самописные *.dll.
С тем что где лежит разобрался. О структуре скрипта, приведенного выше. #include< WinUser32.mqh> содержит дерективу #import "user32.dll" и список адаптированных внешних функций. Так же #define(присвоение мнемонических имен) каким-то
числовым значениям. Зачем это сделано(присвоение) и нужен ли вообще включаемый файл #include< WinUser32.mqh>, так как внешние функции, которые используются далее принадлежат к #import "IdelLib.dll".
В списке функций "user32.dll" похоже есть свои для перехвата мыши и клавиатуры, но описания не нашел. Хотелось бы знать как это(скрипт) заставить правильно работать(работают же интерактивные панели в тестере стратегий несмотря на его
упорные недоработки со стороны разработчиков) и есть знающие люди. Просмотрел пару веток по *.dll-библиотекам. Начинаются бодро, дальше разговоры за жизнь. Правда, почему-то информации очень мало(рабчих библиотек с описанием и примерами).
С тем что где лежит разобрался. О структуре скрипта, приведенного выше. #include< WinUser32.mqh> содержит дерективу #import "user32.dll" и список адаптированных внешних функций. Так же #define(присвоение мнемонических имен) каким-то
числовым значениям. Зачем это сделано(присвоение) и нужен ли вообще включаемый файл #include< WinUser32.mqh>, так как внешние функции, которые используются далее принадлежат к #import "IdelLib.dll".
В списке функций "user32.dll" похоже есть свои для перехвата мыши и клавиатуры, но описания не нашел. Хотелось бы знать как это(скрипт) заставить правильно работать(работают же интерактивные панели в тестере стратегий несмотря на его
упорные недоработки со стороны разработчиков) и есть знающие люди. Просмотрел пару веток по *.dll-библиотекам. Начинаются бодро, дальше разговоры за жизнь. Правда, почему-то информации очень мало(рабчих библиотек с описанием и примерами).
Поковыряйтесь - может что-то интересное для себя найдёте.
Подскажите сколько внешних переменных можно задать в программе MQL4? Помниться где-то давно видел, что не более 1024, но не уверен и поэтому спрашиваю.
Тогда надо выбрать первый ChartFirst проверить нужный-ли, по символу и периоду, если нет выбрать следующий и т.д. до нужного и определить ChartID
Всем привет. Разбирался с библиотеками функций, импортом функций (#import) и включением файлов (#include). Не совсем понял кто кого "включает"? Итак.
Библиотеки находятся в папке Libraries. В этой папке могут размещаться 5(не исключено) видов файлов: 1- .dll(библиотека функций Windows, уже измененная для MT4 с модификатором #define MT4_EXPFUNC int __stdcall ...),
2- . ex4(похоже результат компиляции .mq4 или .mqh), 3- .dat(вообще про него ничего не прочитал), 4- .mqh(возможно файл для включения, потому что #property library отключен, но у Игоря Кима записана,
как библиотека дополнительных функций), 5- .mq4(библиотека пользовательских функций и файлов для включения, которые могут содержать пользовательские функции, файлы для включения, библиотеки .dll и что-то еще.
Файлы для включения находятся в папке Include и могут содержать другие файлы для включения, пользовательские функции, библиотеки .dll и что-то еще. Так же в папке Include --> Controls --> res значки(картинки) .bmp.
Как смог сделал(переделал) скрипт, который не работает(не реагирует на нажатие мыши и клавиатуры). Возможно потому, что в папке Libraries нет user32.dll(хотя ее использует WinUser32.mqh и ее не может где-то не быть).
Подскажите, где что не так. Заранее благодарен, вопросы только начинаются.
Всем привет. Разбирался с библиотеками функций, импортом функций (#import) и включением файлов (#include). Не совсем понял кто кого "включает"? Итак.
Библиотеки находятся в папке Libraries. В этой папке могут размещаться 5(не исключено) видов файлов: 1- .dll(библиотека функций Windows, уже измененная для MT4 с модификатором #define MT4_EXPFUNC int __stdcall ...),
2- . ex4(похоже результат компиляции .mq4 или .mqh), 3- .dat(вообще про него ничего не прочитал), 4- .mqh(возможно файл для включения, потому что #property library отключен, но у Игоря Кима записана,
как библиотека дополнительных функций), 5- .mq4(библиотека пользовательских функций и файлов для включения, которые могут содержать пользовательские функции, файлы для включения, библиотеки .dll и что-то еще.
Файлы для включения находятся в папке Include и могут содержать другие файлы для включения, пользовательские функции, библиотеки .dll и что-то еще. Так же в папке Include --> Controls --> res значки(картинки) .bmp.
Как смог сделал(переделал) скрипт, который не работает(не реагирует на нажатие мыши и клавиатуры). Возможно потому, что в папке Libraries нет user32.dll(хотя ее использует WinUser32.mqh и ее не может где-то не быть).
Подскажите, где что не так. Заранее благодарен, вопросы только начинаются.
В папке Libraries находятся:
1) самописные *.dll;
2) *.ex4 - результат компилированных библиотек с #property library;
3) *.mq4 (не обязательны) из которых скомпилированы *.ex4 из п.2.
Спасибо за ответ. Уточняю: 1) самописные *.dll - библиотека функций Windows или свой код , уже адаптированный для MT4. 2) *.mq4(исходник) будет компилироваться вместе с основным файлом или его *.ex4(уже скомпилированный)
будет включен(добавлен) к основному файлу в процессе компиляции. Для редактирования библиотеки удобней иметь исходник. 3) Деректива #import только для *.dll. Лежит в папке Libraries потому, что библиотека, хоть и внешних
функций. 4) *.mqh - файлы для включения, не компилируются(всегда исходники).
Читал, что старые библиотеки могут не работать потому, что сейчас юникод. Что не так с примером выше?
Спасибо за ответ. Уточняю: 1) самописные *.dll - библиотека функций Windows или свой код , уже адаптированный для MT4. 2) *.mq4(исходник) будет компилироваться вместе с основным файлом или его *.ex4(уже скомпилированный)
будет включен(добавлен) к основному файлу в процессе компиляции. Для редактирования библиотеки удобней иметь исходник. 3) Деректива #import только для *.dll. Лежит в папке Libraries потому, что библиотека, хоть и внешних
функций. 4) *.mqh - файлы для включения, не компилируются(всегда исходники).
Читал, что старые библиотеки могут не работать потому, что сейчас юникод. Что не так с примером выше?
Уточняю:
1) Библиотеки Windows не обязательно класть в "песочницу" терминала;
2) *.mq4 (исходник) с директивой #property library (после её компиляции получаем *.ex4 файл). Без этой директивы файл не компилируется;
Деректива #import используется не только для *.dll-библиотек. Загляните в любой *.mqh файл в папке Include. Кстати, там и должны лежать *.mqh (заголовочные) файлы. Они не компилируются.
Про "старые" библиотеки и юникод - это про самописные *.dll.
С тем что где лежит разобрался. О структуре скрипта, приведенного выше. #include< WinUser32.mqh> содержит дерективу #import "user32.dll" и список адаптированных внешних функций. Так же #define(присвоение мнемонических имен) каким-то
числовым значениям. Зачем это сделано(присвоение) и нужен ли вообще включаемый файл #include< WinUser32.mqh>, так как внешние функции, которые используются далее принадлежат к #import "IdelLib.dll".
В списке функций "user32.dll" похоже есть свои для перехвата мыши и клавиатуры, но описания не нашел. Хотелось бы знать как это(скрипт) заставить правильно работать(работают же интерактивные панели в тестере стратегий несмотря на его
упорные недоработки со стороны разработчиков) и есть знающие люди. Просмотрел пару веток по *.dll-библиотекам. Начинаются бодро, дальше разговоры за жизнь. Правда, почему-то информации очень мало(рабчих библиотек с описанием и примерами).
С тем что где лежит разобрался. О структуре скрипта, приведенного выше. #include< WinUser32.mqh> содержит дерективу #import "user32.dll" и список адаптированных внешних функций. Так же #define(присвоение мнемонических имен) каким-то
числовым значениям. Зачем это сделано(присвоение) и нужен ли вообще включаемый файл #include< WinUser32.mqh>, так как внешние функции, которые используются далее принадлежат к #import "IdelLib.dll".
В списке функций "user32.dll" похоже есть свои для перехвата мыши и клавиатуры, но описания не нашел. Хотелось бы знать как это(скрипт) заставить правильно работать(работают же интерактивные панели в тестере стратегий несмотря на его
упорные недоработки со стороны разработчиков) и есть знающие люди. Просмотрел пару веток по *.dll-библиотекам. Начинаются бодро, дальше разговоры за жизнь. Правда, почему-то информации очень мало(рабчих библиотек с описанием и примерами).
У кого есть нормальный код технического индикатора iMA с возможностью выбора APPLIED_PRICE? Пришлите пожалуйста!
Ничего не понял.
Индикаторы МА
Или они для Вас слишком хороши?