Всех приветствую,
Поделитесь пожалуйста любым индикатором, где есть возможность установки Хоткея с доп.клавишами (CTRL или ALT или SHIFT)
Или ссылкой на такой пример
к сожалению в MQL5 нет события KEYUP, поэтому полноценного события одновременно двух клавих не добиться.
Но возможен такой вариант (на примере сочетания Shift+S):
#property indicator_chart_window #define DELAY 500 //+------------------------------------------------------------------+ int OnInit() { ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { return(rates_total); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { static uint last_shift = 0; static uint last_S = 0; string str = IntegerToString(id) + "; lparam = " + IntegerToString( lparam) + "; dparam = " + DoubleToString(dparam)+ "; sparam = "+sparam; Comment(str); if (id==CHARTEVENT_KEYDOWN) { if (lparam==16) {// press Shift key last_shift = GetTickCount(); if(last_shift-last_S<DELAY) EventShift_S(); } if (lparam==83) {// press S key last_S = GetTickCount(); if(last_S-last_shift<DELAY) EventShift_S(); } } } //+------------------------------------------------------------------+ void EventShift_S() { Print ("Press Shift +S"); } //+------------------------------------------------------------------+
особенности выполнения такого кода:
- если удерживаете клавишу Shift и при этом нажимаете S несколько раз, то нужное событие будет генерироваться только при первом нажатии S
- если нажали клавишу Shift и отпустили ее, а после этого в течении 0.5 сек нажали клавижу S, то событие будет генерироваться, т.е. срабатывает не только одновременное нажатие, но и последовательное нажатие клавиш Shift+S
- последовательность нажатия S и Shift не важна
Извиняюсь, забыл уточнить, ищу для МQL4.
То что вы показали, будет работать в МQL4?
к сожалению в MQL5 нет события KEYUP, поэтому полноценного события одновременно двух клавих не добиться.
Но возможен такой вариант (на примере сочетания Shift+S):
особенности выполнения такого кода:
- если удерживаете клавишу Shift и при этом нажимаете S несколько раз, то нужное событие будет генерироваться только при первом нажатии S
- если нажали клавишу Shift и отпустили ее, а после этого в течении 0.5 сек нажали клавижу S, то событие будет генерироваться, т.е. срабатывает не только одновременное нажатие, но и последовательное нажатие клавиш Shift+S
- последовательность нажатия S и Shift не важна
Николай. может проще
TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT) < 0 ? "DN" : "UP"
О, спасибо Алексей. Не знал.
тогда, действительно, проще и полноценно работает двойное нажатие:
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if (id==CHARTEVENT_KEYDOWN) { if (lparam==83) {// press S key if(TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT) <0) EventShift_S(); } } }
Попробовал оба решения, к сожалению команда через Shift не выполняется отдельно от других индикаторов...
Если я использую предложенные варианты с комбинацией "Shift+A" и второй индикатор с ХотКеем "А", то при нажатии на Shift+A срабатывают команды с обоих индикаторов ((
Попробовал оба решения, к сожалению команда через Shift не выполняется отдельно от других индикаторов...
Если я использую предложенные варианты с комбинацией "Shift+A" и второй индикатор с ХотКеем "А", то при нажатии на Shift+A срабатывают команды с обоих индикаторов ((
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_KEYDOWN) { if(TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT) <0) { if(lparam==83) // press S key { EventShift_S(); } } } }
Если вы предлагаете сделать так, то это ничего не меняет. Я просто не программист, мне тяжеловато в коде делать изменения.
Я хотел бы посмотреть на рабочий пример (MQL4), что бы вообще понять, можно реализовать Shift+Хоткей в индикаторах или нет
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всех приветствую,
Поделитесь пожалуйста любым индикатором, где есть возможность установки Хоткея с доп.клавишами (CTRL или ALT или SHIFT)
Или ссылкой на такой пример