Мышиная помощь трейдеру-кодеру

Наверняка у вас есть мышка, обычная или с дополнительными кнопками. Однако не все её функции доступны по умолчанию при работе с MetaTrader и MetaEditor, а некоторые и вовсе работают неправильно. Исправим это своими с помощью одной программы и нескольких настроек.

Необходимое ПО

Понадобится лишь одна функция - возможность назначить клику любой кнопки мыши имитацию нажатия клавиш клавиатуры и кнопок мыши. Очень желательно с фильтрацией по приложению (обычно доступен фильтр по имени процесса / exe-файла, заголовку, классу окна, всё вместе или отдельно).

Можно написать небольшую программу, которая бы перехватывала указанные кнопки мыши и что-то делала, но всё уже сделано за нас, например в X-Mouse Button Control (XMBC).

В этой программе каждому окну и процессу можно назначить свои действия. Сначала добавляем новый профиль кнопкой Add, указываем имя процесса (удобно сначала запустить соответствующую программу, чтобы выбрать её из списка). Для редактора MT4 и 32-битной MT5 нужно указать имя экзешника metaeditor.exe, а для 64-битной MT5 - metaeditor64.exe. Если пользуетесь обоими вариантами, придётся продублировать все настройки в разных профилях.


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

Хватит про базовые возможности, всё вполне очевидно, а для тех особенных программистов, которые не знают английского, есть интерфейс на других языках, включая русский. Перейдём собственно к тем задачам, которые хочется решить с помощью этой программы или её аналогами.

Переход на определение

В MetaEditor есть возможность перейти на определение средней кнопкой мыши (колесом), однако перед этим необходимо встать на определение курсором (mki#10). Это действие можно автоматизировать - сымитировать сначала левый клик мыши ({LMB}), а затем - средний ({MMB}).


Переход на определение также осуществляется комбинацией клавиш Alt+G, поэтому можно заменить комбинацию двух кликов мыши на клик для выбора слова и нажатие Alt+G, получится {LMB}{ALT}G. У меня нормально работают оба варианта, но в случае каких-то проблем можно перейти с одного на другой.

Навигация вперёд-назад

Переход вперёд-назад в редакторе происходит по нажатиям комбинаций клавиш Ctrl+'-' и Ctrl+Shift+'-' или альтернативных им Alt+Left и Alt+Right, которые работают и в большинстве других программ с возможностью таких переходов. Но перемещаться боковыми кнопками мыши нельзя. Исправим.


Не проверял в последних билдах, но раньше имитация Alt+Left и Alt+Right работала неправильно, поэтому я переключился на Ctrl+'-', Ctrl+Shift+'-'. Вручную нажимать их неудобно, но программно - без разницы.

В зависимости от ваших привычек и производителя мыши, может понадобиться поменять местами кнопки 4 и 5. Например, в моей последней мышке от A4Tech боковые кнопки перепутаны местами относительно всех моих прошлых мышей с такими кнопками. XMBC может поменять их местами глобально (профиль Default) или в отдельной программе.

Работа со справкой

При работе со справкой MT, ME или MQL формата CHM кнопки мыши (обычно сбоку) вперёд и назад работают неправильно, вместо перехода происходит уменьшение шрифта (mki#37). Справка в этом формате у других программ работает нормально, проблема только здесь.

В XMBC это решается повторным назначением кнопкам своих же действий (Back и Forward). Не знаю, как это работает, но эти кнопки начинают правильно работать, при этом не мешая “правильным” CHM.

Параметры профиля окна:


Class: Internet Explorer_Server
Parent Class: Shell DocObject View

И собственно настройки:

Прочее

Что ещё я делал этой программой:
  • Отправка сочетаний клавиш в MT, где индикатор их подхватывает и делает своё дело, например кнопками вперёд-назад можно менять масштаб или таймфрейм или символ или что-либо ещё, зависит от логики индикатора-перехватчика, причём можно как назначить сочетание клавиш для запуска некоторого скрипта в MT, так и отлавливать клавиши в индикаторе в OnChartEvent.
  • Показ различий в TortoiseHg Workbench нажатием средней кнопки мыши.
  • Переход между различиями в TortoiseMerge и подобных программах боковыми кнопками.
  • Поддержка боковых кнопок в RStudio вместо F9/F10 (перестало работать какое-то време назад, но это баг самой RStudio).
  • Переход по ссылкам средней кнопкой в VSCode.
  • Переход к определению средней кнопкой в VS.