Как запрограммировать физическую кнопку компьютера на выполнение в советнике?
//+---------------------------------------------------+ //| Скрипт для фиксации нажатия кнопки -С-Проба.mq4 | //+---------------------------------------------------+ void OnStart() { GlobalVariableSet("Кнопка",1); }
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(!GlobalVariableCheck("Кнопка"))return; int Кнопка=int(GlobalVariableGet("Кнопка")); if(Кнопка==1)Alert("Нажата первая кнопка"); if(Кнопка==2)Alert("Нажата ВТОРАЯ кнопка"); GlobalVariableSet("Кнопка",0); }
На скрипт назначил клавишу CTRL-A. При ее нажатии получаю:
Далее пишем еще скрипты по одному на каждую клавишу.
Или делаем кнопки в советнике и нажимаем мышью. Тут еще демонстрируется, что любое число, отличное от нуля, это true; А ноль это false
//+------------------------------------------------------------------+ //| Создается кнопку Выход и демонстрируется что надо. Э-Демо-1.mq4 | //+------------------------------------------------------------------+ #property strict bool Результат; //+------------------------------------------------------------------+ //| Инициализация | //+------------------------------------------------------------------+ int OnInit() { int Счетчик; string Текст="Демонстрация истинности и ложности числового выражения\n\n"; //--- Кнопка Выход ObjectCreate(0,"Exit",OBJ_BUTTON,0,0,0); // Создать кнопку ObjectSetInteger(0,"Exit",OBJPROP_CORNER,CORNER_RIGHT_UPPER); // Правый верхний угол ObjectSetInteger(0,"Exit",OBJPROP_XDISTANCE,85); // Расстояние от (правого) края окна ObjectSetInteger(0,"Exit",OBJPROP_YDISTANCE,52); // Расстояние по высоте от (верха окна) ObjectSetInteger(0,"Exit",OBJPROP_XSIZE,80); // Размер по ширине ObjectSetInteger(0,"Exit",OBJPROP_YSIZE,25); // Размер по высоте ObjectSetString (0,"Exit",OBJPROP_TEXT,"Выход"); // Надпись ObjectSetInteger(0,"Exit",OBJPROP_COLOR,White); // Цвет надписи ObjectSetInteger(0,"Exit",OBJPROP_BGCOLOR,Green); // Цвет фона ObjectSetInteger(0,"Exit",OBJPROP_BORDER_COLOR,Yellow); // Цвет рамки ObjectSetInteger(0,"Exit",OBJPROP_HIDDEN,false); // Не прятать в списке объектов ObjectSetInteger(0,"Exit",OBJPROP_STATE,false); // Ненажатое состояние ObjectSetInteger(0,"Exit",OBJPROP_FONTSIZE,12); // Размер шрифта for(Счетчик=-2; Счетчик<=2; Счетчик++) { Текст+="Число = "+string(Счетчик); if(Счетчик)Текст+=" --> Истина = true\n"; else Текст+=" --> Ложь = false\n"; } // Вывод информации MessageBox(Текст, "Числовое выражение", MB_ICONINFORMATION); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(!GlobalVariableCheck("Кнопка"))return; int Кнопка=int(GlobalVariableGet("Кнопка")); if(Кнопка==1)Alert("Нажата первая кнопка"); if(Кнопка==2)Alert("Нажата ВТОРАЯ кнопка"); GlobalVariableSet("Кнопка",0); } //+------------------------------------------------------------------+ //| Реакция на события | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &ИмяКнопки) { if(ИмяКнопки=="Exit") { ObjectSetInteger(0,"Exit",OBJPROP_STATE,false); ObjectSetInteger(0,"Exit",OBJPROP_BGCOLOR,Yellow); ObjectSetString(0,"Exit",OBJPROP_TEXT,"Ухожу"); ObjectSetInteger(0,"Exit",OBJPROP_COLOR,Black); ObjectSetInteger(0,"Exit",OBJPROP_BORDER_COLOR,Red); WindowRedraw(); // Перерисовать окно Sleep(555); // Пауза 0,555 секунды ObjectDelete("Exit"); ExpertRemove(); } } //+---------------------------------------------------------+ //| Деинициализация эксперта | //| Вывод сообщения о причине | //+---------------------------------------------------------+ void OnDeinit(const int НомерПричины) { string Причина=""; switch (НомерПричины) { case 0: Причина=" Вызвана функция ExpertRemove()"; break; case 1: Причина=" Удаление"; break; case 2: Причина=" Перекомпиляция"; break; case 3: Причина=" Смена таймфрейма или символа"; break; case 4: Причина=" График закрыт"; break; case 5: Причина=" Изменение параметров"; break; case 6: Причина=" Смена счета или настроек"; break; case 7: Причина=" Смена шаблона графика"; break; case 8: Причина=" Ошибка в OnInit()"; break; case 9: Причина=" Терминал закрыт"; break; } Alert(StringSubstr(__FILE__,0,StringLen(__FILE__)-4)," ", Symbol(), " --> ", НомерПричины,". ", Причина); }
Файлы:
demo-1.mq4
5 kb
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь