Автоматизация с перехватом нажатия кнопок и мыши. - страница 4

 
HIDDEN >>:

интересует програмное управление тестером стратегий.

1. открыть его из эксперта (код найден)

2. нажать кнопку Старт

и.д. вообще желательно бы все коды от этого окна. кнопки и т.д.

Легко хочешь отделаться. :))

Тут куча сложных вещей:


1. Открыть окно тестера

2. Открыть список советников, выбрать заданный советник из списка по имени (можно пропустить, заранее оставив в списке одну позицию)

3. Открыть список символов, выбрать заданный символ из списка по имени (можно пропустить, заранее оставив в списке одну позицию)

4. Открыть список методов, выбрать заданный метод из списка по имени или номеру

5. Открыть список периодов, выбрать заданный период из списка по имени или номеру

6. Проверить состояние галочки "Использовать дату", поставить галочку

7. Проверить состояние галочки "Оптимизация", поставить галочку

8. Проверить состояние галочки "Визуализация", убрать галочку (не обязательно)

9. Занести заданную дату в окно "От" ( если это возможно)

10. Занести заданную дату в окно "До" ( если это возможно)

11. Нажать кнопку "Пуск"

12. Получить сигнал окончания оптимизации, т.е. возврат текста "Старт" на кнопку (можно обойтись таймером)

13. Закрыть окно тестера


Это если я еще ничего не пропустил..

 
granit77 >>:

Легко хочешь отделаться. :))

Тут куча сложных вещей:


1. Открыть окно тестера

2. Открыть список советников, выбрать заданный советник из списка по имени (можно пропустить, заранее оставив в списке одну позицию)

3. Открыть список символов, выбрать заданный символ из списка по имени (можно пропустить, заранее оставив в списке одну позицию)

4. Открыть список методов, выбрать заданный метод из списка по имени или номеру

5. Открыть список периодов, выбрать заданный период из списка по имени или номеру

6. Проверить состояние галочки "Использовать дату", поставить галочку

7. Проверить состояние галочки "Оптимизация", поставить галочку

8. Проверить состояние галочки "Визуализация", убрать галочку (не обязательно)

9. Занести заданную дату в окно "От" ( если это возможно)

10. Занести заданную дату в окно "До" ( если это возможно)

11. Нажать кнопку "Пуск"

12. Получить сигнал окончания оптимизации, т.е. возврат текста "Старт" на кнопку (можно обойтись таймером)

13. Закрыть окно тестера


Это если я еще ничего не пропустил..

В папке тестера есть файлик lastparameters.ini что мешает его подготовить в эксперте, записать и открыть тестер и нажать кнопку старт. Получается половина пунктов уже отпадает.

 

Верно, я и позабыл.

Если ты с ним работал, прореди перечень, может, действительно достаточно только "Старт" нажать?

 
granit77 >>:

Верно, я и позабыл.

Если ты с ним работал, прореди перечень, может, действительно достаточно только "Старт" нажать?

optimization=0 // оптимизация вкл. и выкл
genetic=1 //гинетика
fitnes=0
method=0 // метод тестирования
use_date=0 // по датам
from=1226620800 // начальная дата в секундах с 1970
to=1226620800 // конечная дата


тоже самое по эксперту, после тестирования и оптимизации делается 1 раз в ручную параметры сохраняются и меняй как хочешь. Мне пока нужно нажать кнопку Старт, ой как нужно....


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

 
HIDDEN >>:

Мне пока нужно нажать кнопку Старт, ой как нужно....

Я особенно не обольщаюсь. Ручная прогонка с периодическими оптимизацичми пока не дала однозначно положительного результата.

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

Mathemat обещал статью, может прояснится маленько.

Но с этим инструментом возможности возрастут на порядок, это будет прорыв.

 

Из соседней ветки Erics подсказывает.


Коды кнопок смотрятся в Spy++ (Control ID)

И используются для получения дескриптора кнопки:

hButtonStart = GetDlgItem(hTester, 0x40A);



Щас проснусь и буду разбираться как прикрутить.

 

Прежде чем производить какие-либо действия в окне тестера стратегий, необходимо, во-первых, понять как устроено дерево окон в MetaTrader, во-вторых, определить
его системный дескриптор. После, пользуясь функцией GetDlgItem(int hDlg,int nIDDlgItem), можно будет получать идентификаторы необходимых элементов управления.


На рисунке ниже показана часть дерева окон терминала MetaTrader в программе Spy++. Красным маркером отмечен его корень. Желтым - местоположение окна "Терминал" в дереве и т.д.
Таким образом, чтобы получить системный идентификатор кнопки "Старт" (на рисунке отмечен синим маркером), необходимо последовательно пройти по всем вышестоящим 
уровням. Для наглядности каждый уровень отмечен цветом.




Вот пример кода на MQL для получения дескриптора кнопки "Старт".

#include <WinUser32.mqh>

#import "user32.dll"
   int GetAncestor(int hWnd, int gaFlags);
   int GetDlgItem(int hDlg, int nIDDlgItem);
#import

void start()
{
   int hMetaTrader, hTerminal, hTester, hButtonStart;
   
   hMetaTrader = GetAncestor(WindowHandle(Symbol(),Period()),2); //дескриптор основного окна терминала
	
   hTerminal = GetDlgItem(hMetaTrader,0xE81E);
   hTester = GetDlgItem(hTerminal,0x53);
   hButtonStart = GetDlgItem(GetDlgItem(hTester,0x81BF),0x40A);  //дескриптор кнопки "Старт"
}

Для определения дескриптора вторым параметром функции GetDlgItem() необходимо передать Control ID компоненты окна. Его можно определить, вызвав пункт меню 
"Properties..." по правой кнопки мыши. В качестве примера на рисунке ниже красным маркером отмечен Control ID окна "Терминал" (0xE81E).


 
Ilnur >>:

Прежде чем производить какие-либо действия в окне тестера стратегий, необходимо, во-первых, понять как устроено дерево окон в MetaTrader, во-вторых, определить


Спасибо за науку. Кнопка Старт благополучно нажата, как и другие нужные кнопки пульта управления под названием MetaTrader 4.

 

Эх.... вспомнилось.


Американцы прислали туриста на советскую подлодку. Он в первый же день напился. Утром просыпается и видит - капитан с дубинкой бегает за матросами и орет: "Кто нажал красную кнопку? Кто нажал красную кнопку?". Американец его укоряет:
- А вы знаете, сэр, а вот у нас в Америке капитаны так себя не ведут!
- Нет больше вашей Америки! Кто нажал красную кнопку?!

 
HIDDEN писал(а) >>

Эх.... вспомнилось.

Американцы прислали туриста на советскую подлодку. Он в первый же день напился. Утром просыпается и видит - капитан с дубинкой бегает за матросами и орет: "Кто нажал красную кнопку? Кто нажал красную кнопку?". Американец его укоряет:
- А вы знаете, сэр, а вот у нас в Америке капитаны так себя не ведут!
- Нет больше вашей Америки! Кто нажал красную кнопку?!

Хороший был терминал : -)))

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