Скачать MetaTrader 5

В индикаторе определить тестер работает или находится в режиме паузы

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Удобнее торговать с помощью смартфона? Мобильная версия MetaTrader 5 тебе подойдет!
Sergey Pekshev
681
Sergey Pekshev 2015.12.31 07:40 

Коллеги, кто нибудь знает как в индикаторе определить тестер работает или находится в режиме паузы?

Как программно ставить/снимать с паузы, нашел решение, а как узнать работает/на паузе сейчас тестер?

Dmitry Fedoseev
42906
Dmitry Fedoseev 2015.12.31 09:06  

Типа дзен такой?

Если тестер на паузе, то в индикаторе не запускается функция, поэтому нет смысла что-то определять. А если запускается функция, то тестер точно не на паузе.

Sergey Pekshev
681
Sergey Pekshev 2015.12.31 14:13  
Dmitry Fedoseev:

Типа дзен такой?

Если тестер на паузе, то в индикаторе не запускается функция, поэтому нет смысла что-то определять. А если запускается функция, то тестер точно не на паузе.

да, дзен)

запустится если на окно с графиком тестера бросить скрипт или повесить зацикленный

запустится из обработчика событий индикатора в окне тестера, даже если тестер будет на паузе либо в обработчике таймера

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

программно включать/выключать тестер я могу  

#import "user32.dll"

int GetAncestor(int, int);
int SendMessageW(int hWnd, int Msg, int wParam, int lParam);

#import

      int hwnd;

      hwnd = GetAncestor(WindowHandle(Symbol(), Period()), 2);

      SendMessageW(hwnd, 0x0111, 0x57a, 0);

 или так

#import "user32.dll"

void keybd_event(int bVk, int bScan, int dwFlags, int dwExtraInfo);

#import

         keybd_event(19, 0, 0, 0);

         keybd_event(19, 0, 2, 0);

 

т.е. могу включать и выключать паузу, а вот узнать текущее состояние не знаю как

pako
3308
pako 2015.12.31 15:11  
ps-n: 

т.е. могу включать и выключать паузу, а вот узнать текущее состояние не знаю как

Включили , поставили пауза true

Выключили, поставили пауза false 

keybd_event(19, 0, 0, 0);
Pause=true;
 keybd_event(19, 0, 2, 0);
Pause=false;
if(Pause)
{
 тут Ваш код;
}
else тут Ваш код;
Sergey Pekshev
681
Sergey Pekshev 2015.12.31 15:20  
pako:

Включили , поставили пауза true

Выключили, поставили пауза false 

keybd_event(19, 0, 0, 0); // Нажатие клавиши
keybd_event(19, 0, 2, 0); // Отжатие клавиши

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

Еще бы программно управлять скоростью тестирования... было бы вообще круто 

pako
3308
pako 2016.01.01 15:31  
ps-n:

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

Еще бы программно управлять скоростью тестирования... было бы вообще круто 

Кнопку можете опросить ? Нажата отжата
Sergey Pekshev
681
Sergey Pekshev 2016.01.01 16:47  
pako:
Кнопку можете опросить ? Нажата отжата

в Win API не силен

а еще на паузу ставить/снимать можно кнопкой "Pause" на клавиатуре, в обработчик событий OnChartEvent() не приходит событие при нажатии этой кнопки

да и тестирование собираюсь проводить при закрытом окне тестера стратегий и свернутом графике валютной пары (visual), хотя можно окно тестера не закрывать, а сворачивать двойным кликом по синей полосе слева, где написано тестер

pako:

Включили , поставили пауза true

Выключили, поставили пауза false 

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий