KEYBOARD::IsAlt(); KEYBOARD::IsShiftLeft(); KEYBOARD::IsShiftRight(); KEYBOARD::IsControlLeft(); KEYBOARD::IsControlRight(); KEYBOARD::IsAltLeft(); KEYBOARD::IsAltRight();
ЗЫ. И координаты курсора на экране (без CHART_EVENT_MOUSE_MOVE-подписки).
KEYBOARD::MouseXY( int &X, int &Y );
В тестере как со всем этим?
Не работает, т.к. не используются DLL.
Работает определение выбранной раскладки клавиатуры на момент запуска Тестера.
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393 void OnInit() { Comment(EnumToString(KEYBOARD::Layout())); }
Видимо это моя испорченность. Но ничего кроме как встраивания тайного кейлогера в эксперта в голову не приходит. В плане практики применения ))
Простой пример выгрузки советника при одновременном нажатии двух SHIFT.
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393 void OnChartEvent( const int id, const long&, const double&, const string& ) { if ((id == CHARTEVENT_KEYDOWN) && KEYBOARD::IsShiftLeft() && KEYBOARD::IsShiftRight()) ExpertRemove(); }
Клавиатура может быть полезна в боевых советниках.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как в MQL5 сделать возобновление работы советника после паузы?
fxsaber, 2023.11.11 16:18
Для контроля состояния всех советников терминала использую.
- Сбор по горячей клавише всей информации по запущенным советникам. В одном текстовом файле видишь сразу, что и как работает, а что - нет.
- По горячей клавише проход по всем советникам с проверкой, что работают штатно: нет деления на ноль, выхода за массив, какой-то советник при запуске терминала не запустился и т.д.
- Очень наглядные визуализации работы советников, о которых нет смысла здесь писать.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2021.09.28 21:55
Горячей клавишей закрываю все внутренние окна терминала, уменьшаю marketwatch до минимума, сворачиваю все чарты, терминал и алерт-окно. В MT4 и MT5.
И в индикаторах.
Скриншот.
По клавише 'F' делается скриншот текущего места на чарте.
MarketScreener.
- 2023.01.31
- www.mql5.com
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393 void OnTick() { if (KEYBOARD::Language() != "English") MessageBox("Change your keyboard layout to English!"); }
Работа советника только в англоязычной раскладке.
Четкое задание рабочей раскладки.
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393 input ENUM_LANGUAGEID inLanguageID = RUS_Russian__Russia; // В какой раскладке работаем void OnTick() { if (KEYBOARD::Layout() != inLanguageID) MessageBox("Не работаю с этой (" + EnumToString(KEYBOARD::Layout()) + ") раскладкой клавиатуры!" + "\n\nПереключитесь на рабочую: " + EnumToString(inLanguageID)); }
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393 input ENUM_KEYCODE inKeyCode = KEYCODE_KEY_A; // По какой клавише срабатывание input group "Какие клавиши должны быть дополнительно нажаты/включены" input ENUM_KEYSTATE inKeyStateEnable1 = KEYSTATE_NONE; input ENUM_KEYSTATE inKeyStateEnable2 = KEYSTATE_NONE; input ENUM_KEYSTATE inKeyStateEnable3 = KEYSTATE_NONE; input group "Какие клавиши НЕ должны быть нажаты/включены" input ENUM_KEYSTATE inKeyStateDisable1 = KEYSTATE_NONE; input ENUM_KEYSTATE inKeyStateDisable2 = KEYSTATE_NONE; input ENUM_KEYSTATE inKeyStateDisable3 = KEYSTATE_NONE; void OnChartEvent( const int id, const long &lparam, const double&, const string& ) { if ((id == CHARTEVENT_KEYDOWN) && (lparam == inKeyCode) && KEYBOARD::KeysState(inKeyStateEnable1 | inKeyStateEnable2 | inKeyStateEnable3, inKeyStateDisable1 | inKeyStateDisable2 | inKeyStateDisable3)) MessageBox(KEYBOARD::Pressed(lparam)); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Keyboard:
Работа с данными клавиатуры
Автор: fxsaber