Горячие кнопки мт5

 

Можно ли в мт5 приделать горячие клавиши,например покупка продажа.Сейчас только мышкой(пользуюсь)

Если есть ,дайте описание я найти не могу.

 
Forex2424:

Можно ли в мт5 приделать горячие клавиши,например покупка продажа.Сейчас только мышкой(пользуюсь)

Если есть ,дайте описание я найти не могу.

это можно сделать через обработчик события OnChartEvent например так:

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)

  {

   if(id==CHARTEVENT_KEYDOWN)

     {

      if(int(lparam)==Hotkey_Buy)

        {

         TradeBuy(Lot_Default,false);

         UpdateStatus();

        }

      if(int(lparam)==Hotkey_Sell)

        {

         TradeSell(Lot_Default,false);

         UpdateStatus();

        }

      if(int(lparam)==Hotkey_Close)

        {

         TradeCloseAll(false);

         UpdateStatus();

        }

     }

  }


 
transcendreamer:

это можно сделать через обработчик события OnChartEvent например так:

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)

  {

   if(id==CHARTEVENT_OBJECT_CLICK)

     {

      ObjectSetInteger(0,sparam,OBJPROP_STATE,false);

      if(sparam=="BUTTON_BUY")

        {

         TradeBuy(Lot_Default,false);

         UpdateStatus();

        }

      if(sparam=="BUTTON_SELL")

        {

         TradeSell(Lot_Default,false);

         UpdateStatus();

        }

      if(sparam=="BUTTON_CLOSE")

        {

         TradeCloseAll(false);

         UpdateStatus();

        }

     }

   if(id==CHARTEVENT_KEYDOWN)

     {

      if(int(lparam)==Hotkey_Buy)

        {

         TradeBuy(Lot_Default,false);

         UpdateStatus();

        }

      if(int(lparam)==Hotkey_Sell)

        {

         TradeSell(Lot_Default,false);

         UpdateStatus();

        }

      if(int(lparam)==Hotkey_Close)

        {

         TradeCloseAll(false);

         UpdateStatus();

        }

     }

  }


то есть сделать можно,на любую кнопку?

 

предварительно нужно задать коды кнопок например:

input int               Hotkey_Sell       =219;

input int               Hotkey_Buy        =221;

input int               Hotkey_Close      =220;


 
Forex2424:

то есть сделать можно,на любую кнопку?

да на любую кроме системных комбинаций конечно

 
чтобы понять какая кнопка какой код имеет можно протестировать Print(lparam); и код отпечатается в журнале экспертов
 
transcendreamer:

да на любую кроме системных комбинаций конечно

Понятно,попробую разобраться.

Приведите пример, на что  не получиться "зацепить"

 
Forex2424:

Понятно,попробую разобраться.

Приведите пример, на что  не получиться "зацепить"

я сам не проверял, но наверное нельзя использовать кнопку win, esc и т.п.

и наверное нежелательно конфликтовать со стандартными комбинациями МТ5: 
https://www.metatrader5.com/ru/terminal/help/start_advanced/hotkeys

можно задействовать shift и ctrl с помощью:

         if((TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT)&0x80)!=0)

здесь проверяется удерживается ли в моменте кнопка shift
 

Можно наделать скриптов и уже на скрипт ставить горячую клавишу.


 
Ihor Herasko:

Можно наделать скриптов и уже на скрипт ставить горячую клавишу.


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

знаю что скрипт срабатывает один раз вроде,  или нет?

 
Forex2424:

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

По скорости выполнения одинаково. Здесь разница в другом.

В случае с экспертом нужно прикрепить эксперт к каждому графику, на котором планируется использование горячей клавиши, а в случае со скриптом - нет, вообще ничего прикреплять не нужно. Какой график активен, там скрипт и будет вызван.

знаю что скрипт срабатывает один раз вроде,  или нет?

Так на одно нажатие клавиши ведь и не требуется дву- или более кратное срабатывание. Нажали клавишу - скрипт отработал и выгрузился. Нужно еще - снова нажали.

Причина обращения: