Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 943

 

Кто знает, как узнать 

long  chart_id, // Идентификатор графика. 0 означает текущий график.

если график не текущий?

 
Leo59:

Кто знает, как узнать 

long  chart_id, // Идентификатор графика. 0 означает текущий график.

если график не текущий?

Тогда надо выбрать первый ChartFirst проверить нужный-ли, по символу и периоду, если нет выбрать следующий и т.д. до нужного и определить ChartID
 
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                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
      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("Завершение.");
  }
 
kosmos0975:

Всем привет. Разбирался с библиотеками функций, импортом функций (#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 - файлы для включения, не компилируются(всегда исходники).

Читал, что старые библиотеки могут не работать потому, что сейчас юникод. Что не так с примером выше?

 
kosmos0975:

Спасибо за ответ. Уточняю: 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-библиотекам.  Начинаются бодро, дальше разговоры за жизнь.  Правда, почему-то информации очень мало(рабчих библиотек с описанием и примерами).

 
kosmos0975:

С тем что где лежит разобрался. О структуре скрипта, приведенного выше.  #include< WinUser32.mqh> содержит дерективу #import "user32.dll" и список адаптированных внешних функций. Так же #define(присвоение мнемонических имен) каким-то

числовым значениям. Зачем это сделано(присвоение)  и  нужен ли вообще включаемый файл #include< WinUser32.mqh>, так как внешние функции, которые используются далее принадлежат к #import "IdelLib.dll".

В  списке функций "user32.dll" похоже есть свои для перехвата мыши и клавиатуры, но описания не нашел. Хотелось бы знать как это(скрипт) заставить правильно работать(работают же интерактивные панели в тестере стратегий несмотря на его

упорные недоработки со стороны разработчиков) и есть знающие люди.  Просмотрел пару веток по *.dll-библиотекам.  Начинаются бодро, дальше разговоры за жизнь.  Правда, почему-то информации очень мало(рабчих библиотек с описанием и примерами).

Поковыряйтесь - может что-то интересное для себя найдёте.
 
У кого есть нормальный код технического индикатора iMA с возможностью выбора APPLIED_PRICE? Пришлите пожалуйста!
Причина обращения: