| / | Форум |
|
ForexTools
24.02.2010 17:08
Задачка такая: мне в скрипте\индикаторе\советнике нужно узнать 1) номер открытого ордера, который подсвечен\выбран в окне Торговля (колонка Ордер) 2) номер закрытого ордера на закладочке История счета 3) номер ордера на закладочке Результаты в режиме визуального тестирования В идеале - хотелось бы (на всякий случай) иметь возможность получить значение из любой ячейки этих "таблиц" задавая номер строки и номер или имя колонки ну и конечно номер выбранной строки или 0 если строка не выбрана. Фактически нужны функции: int GetSelectedOrderNumber(int Source) а в общем случаеstring GetCell(int Source, int Row, int Column) int GetSelectedRowNumber(int Source) int GetRowsCount(int Source) где Source - задает окно откуда тягать данные, например 0-Открытые, 1-закрытые, 2-визуализатор нужен код на MQ4 (без внешних dll). Кто знает как сделать такое и может написать такой набор функций - отзовитесь пожалуйста. |
|
Организуйте багтрекинг и техсаппорт для своей компании В TeamWox имеются все для того чтобы организовать багтрекинг. Интегрировав модуль Сервисдеск с веб-сайтом, Вы сможете получать заявки своих клиентов напрямую в TeamWox. Более того, вся переписка с клиентами автоматически распознается и попадает в архив, где ее без труда можно найти в будущем. |
|
marketeer
24.02.2010 17:35
Без DLL не обойтись. Что такое внешние и не внешние DLL - не понятно, они все внешние по отношению к MQL.
|
7380 |
sergeev
24.02.2010 17:41
почему же не обойтись. если испльзовать хендлы, то докопаться можно... |
|
ForexTools
24.02.2010 17:45
marketeer >>:
Без DLL не обойтись. Что такое внешние и не внешние DLL - не понятно, они все внешние по отношению к MQL. очень даже можно обойтись - в MQL достаточно средств для этого ;) слово внешние - просто подчеркивает что мне нужно "внутреннее" решение только на MQL вот код который получает к-во строк в истории счета #include <WinUser32.mqh> #import "user32.dll" int GetParent( int hWnd ); int GetAncestor(int hWnd, int gaFlags); int GetDlgItem(int hDlg, int nIDDlgItem); #import #define LVM_GETITEMCOUNT 0x1004 void start() { int hwnd = GetAncestor(WindowHandle(Symbol(),Period()),2); //дескриптор основного окна терминала int Count = 0; if (hwnd != 0) // нашли главное окно { hwnd = GetDlgItem(hwnd, 0xE81E); // Нашли историю счета hwnd = GetDlgItem(hwnd, 0x51); hwnd = GetDlgItem(hwnd, 0x81B8); Count = SendMessageA(hwnd, LVM_GETITEMCOUNT, 0, 0); // получили количество элементов списка } Print(Count); }осталось дописать получение выбранной строки и нужной ячейки в ней, но в этом я уже не силен :(( |
|
ForexTools
24.02.2010 17:49
вот на просторах тырнета удалось накопиастить такие тексты - возможно они помогут public struct LV_ITEM const int BUFFER_SIZE = 512;
|
|
SofTAA
24.02.2010 21:14
|
12485 |
Mathemat
24.02.2010 21:53
ForexTools, а тебе известен аналог функции WindowHandle() в пятере? Я что-то его не нашел. И вообще ничего с окнами нет вроде как. Ну вот как мне найти хэндл окна текущего чарта в пятере - пусть и с API? |
|
ForexTools
24.02.2010 23:00
Mathemat >>:
ForexTools, а тебе известен аналог функции WindowHandle() в пятере? Я что-то его не нашел. И вообще ничего с окнами нет вроде как. Ну вот как мне найти хэндл окна текущего чарта в пятере - пусть и с API? ChartID - оно? |
|
ForexTools
24.02.2010 23:03
SofTAA >>:
годится все что угодно из стандартного набора Win32API - лиш бы не было собственных длл. в примере моего кода используется user32.dll ;) |
7380 |
sergeev
24.02.2010 23:14
Mathemat >>:
ForexTools, а тебе известен аналог функции WindowHandle() в пятере? Я что-то его не нашел. И вообще ничего с окнами нет вроде как. Ну вот как мне найти хэндл окна текущего чарта в пятере - пусть и с API? чтоб получить хендл надо обратиться к ChartGetInteger(ChartID(), CHART_WINDOW_HANDLE)
и все что касается окон лежит в http://www.mql5.com/ru/docs/constants/chartconstants/enum_chart_property
намного больший ассортимент чем в МТ4 |
12485 |
Mathemat
24.02.2010 23:29
Ух спасибо, народ. А то я уже растерялся... |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий