Костыль-мэйкер: допиливаем Аврору самостоятельно


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

 

За год активного использования терминала я как-то совсем утомился дергать мышку из-за малейшей активности в терминале, которая не была бы напрямую связана с совершением сделки: переключения между кучей окон, скачки по инструментам графика, неудобная (на мышках с высокой сенсой) новая прокрутка, необходимость несколько раз за день руками обновлять зависший стакан вкупе с рутинной рисовкой типовых уровней (при повторном запуске предательски съезжающих на пол цента). Мало приятно признавать все это, однако с течением времени подобные вещи зае****ют вгоняют в депрессию.

По такому поводу несколько месяцев назад вспомнилась мне надпись на сайте терминала (но это не точно) в духе «При открытии счета предоставляются бесплатные API», которую видел году в 2015 или около того, еще в первые дни знакомства с компанией. Разумеется, я таки попытался их достать, но в зависимости от номера попытки API то не предоставлялись вовсе, то оказывались не бесплатными (вот прям совсем-совсем), то их существование вообще отрицалось – в общем, попытка сделать культурное решение успехом не увенчалась.

В связи с чем возникла необходимость выдумывать что-то свое, и по наступлению первых дней свободы от работ, забот и салатов пришло мне в голову использовать старый, почти дедовский, способ – AutoHotKey, которым в моем кругу пользовались еще лет 10 назад, когда Steam не был зарегулированной помойкой, а TF2 не был симулятором шапок.

Определившись с инструментом перешел к списку требований:

  • Возможность относительно легко адаптироваться к перестройке лэйаута;
  • Переключение между наиболее часто используемыми окнами;
  • Быстрое переключения между инструментами графика;
  • Возможность работать с ними с клавиатуры;
  • Симуляция мыши, чтобы ее наконец-то вообще, нахрен, не трогать.

Перед реализацией хотелок нужно было провести небольшую подготовку:

Во-первых, отрубить звук, который воспроизводится при нажатии Alt+{someKey} т.к. в будущем на мозг это будет капать не хуже смсок от Билайна.
Во-вторых, отключить в Авроре сочетание Alt+X потому что на этой кнопке в будущем будет висеть один из инструментов для работы с графиком.

В-третьих, нужно установить сам AutoHotKey с официального сайта, если вдруг найдутся желающие попробовать скрипт в деле или, что еще круче – написать что-нибудь самим, то могу обрадовать: программа полностью бесплатная и с открытым исходным кодом.

После завершения подготовки к работе наступает самый важный этап – ВРЕМЯ ГОВНОКОДА! Запасаемся документацией, списком виртуальных кодов клавиш, парой часов свободного времени и начинаем творить...


#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

mouseSpeed := 20
Return

~^F12:: Suspend, Toggle

~^!1::
CoordMode, Mouse, Screen
MouseGetPos, X, Y
MsgBox, Mouse coord %X%, %Y%
Return

~^!2::
WinGetPos, X, Y, , , A
MsgBox, The active window is at %X%`,%Y%
Return

~!vk51:: moveMouseTo(-1900, 50)
~!vk57:: moveMouseTo(-1900, 530)
~!vk45:: moveMouseTo(-265, 20)
~!vk41:: moveMouseTo(20, 560)
~!vk53:: moveMouseTo(980, 560)
~!vk44:: moveMouseTo(980, 40)

~!End:: mouseSpeed := 2
~!PgDn:: mouseSpeed := 20

~!Up:: MouseMove, 0, -mouseSpeed, 0, R
~!Down:: MouseMove, 0, mouseSpeed, 0, R
~!Left:: MouseMove, -mouseSpeed, 0, 0, R
~!Right:: MouseMove, mouseSpeed, 0, 0, R

~!vk5a:: selectChartTool(325)
~!vk58:: selectChartTool(375)
~!vk43:: selectChartTool(445)

~!Delete:: Send {Del}

CapsLock:: LButton

moveMouseTo(x, y)
{
CoordMode, Mouse, Screen
MouseMove, x, y, 0
MouseClick, Middle
CoordMode, Mouse, Window
Return
}

selectChartTool(x)
{
WinGetActiveTitle, Title
StringReplace, formatedTitle, Title, %A_SPACE%, , All
if formatedTitle = Chart
{
MouseGetPos, prevMouseXPos, prevMouseYPos
MouseMove, x, 15, 0
MouseClick
MouseMove, prevMouseXPos, prevMouseYPos, 0
Return
}
}

По итогу этим кодом реализуется весь необходимый функционал под мой деск. Кстати, выглядит он вот так:

Дэск одноэтажный, левый монитор (первый скрин) служит для работы с позой, правый (второй скрин) – для монитора бумаг. Ну так вот, на этом деске вышеприведенный скрипт реализует следующий функционал:


Alt+F12 – Вкл\Откл скрипта
Alt+Q – Часовик
Alt+W – Основная 5-минутка
Alt+E – Стакан
Alt+D – Вспомогательная 5-минутка (MS)
Alt+S – Вспомогательная 5-минутка (BAC)
Alt+A – Вспомогательная 5-минутка (SCHW)
Alt+Z – Курсор для текущего графика
Alt+X – Прокрутка для текущего графика
Alt+C – Уровень для текущего графика
Alt+Arrow’s – Симуляция мыши
Alt+Delete – Нажатие Delete (не баг, а фича)
Alt+End – Скорость курсора 2 px
Alt+PageDown – Скорость курсора 20 px
CapsLock – Нажатие ЛКМ

 

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

Вообще, изначально планировалось реализовать иной способ закрытия позы и отмены ордеров, но вспомнив увещевания ТОГО САМОГО SuperScalper’a о том, что делать это нужно только через стакан, а остальное – удел всяких австралопитеков, Маэстро и слушателей Фэйса от идеи я почему-то отказался.

Собственно, на этом все: скрипт работает и на данный момент полностью удовлетворяет текущие потребности. За сим откланиваюсь.

P.S. Посоны, когда листинг? Когда to the moon?

Будьте в курсе всех важных событий United Traders — подписывайтесь на наш телеграм-канал

  • trading
  • aurora
  • LifeStyle
  • terminal
  • AutoHotKey
  • binding
  • горячие
  • клавиши

Похожие публикации

Комментарии (16)

Чтобы оставить комментарий, вам необходимо войти или зарегистрироваться
UP