Как сделать чтобы в окне "Новый ордер" терминала МТ5 первая строка была "Отложенный Ордер"?

 

Как сделать чтобы в окне "Новый ордер" терминала МТ5 первая строка была "Отложенный Ордер",  а не "Исполнение по рынку", как сейчас по умолчанию?

Отложенный Ордер

 
Никак. Только написать свой терминал.
 
Наверное проще сделать свою панель, где приоритет будет у отложек...
 
Vladimir Gulakov:

Как сделать чтобы в окне "Новый ордер" терминала МТ5 первая строка была "Отложенный Ордер",  а не "Исполнение по рынку", как сейчас по умолчанию?

Владимир, а скрипт не подойдёт или обязательно нужно, чтобы только в окне "Новый ордер"? В скрипте можете сразу задать по умолчанию все нужные Вам параметры. Со скриптом гораздо удобней, чем мучится с этим окном. Допустим в какой-то момент сложилась ситуация на рынке для установки отложенного ордера, тогда Вы просто берёте этот скрипт и бросаете его на график. Делов-то на 1-2 секунды.

С уважением, Владимир.

 
Dmitriy Skub #:
Никак. Только написать свой терминал.

Как вариант попросить разработчиков терминала внести коррективы.
Хотя шанс на положительное решение невелик.

 
Dmitriy Skub #:
Никак. Только написать свой терминал.

Cпасибо за ответ. Если мог бы с радостью написал. Но к сожалению не могу.

 
Denis Kirichenko #:
Наверное проще сделать свою панель, где приоритет будет у отложек...

Пробовал через панель. Не проще. Панель только усложняет процесс, к тому же она не совместима с Советниками-помощниками при ручной торговле. Спасибо за ответ.

 

Можно сделать только через автоматизацию WinApi. Например, так:

#include <WinAPI/WinUser.mqh>

int ItemType = 0;
bool Showing = false;
HANDLE Wnd = 0;

#define MAX_STRING 256
#define CB_GETCURSEL 0x0147
#define CB_SETCURSEL 0x014E
#define WM_KEYDOWN 0x0100
#define VK_DOWN 0x28

void FindWindow()
{
   HANDLE h = GetForegroundWindow();
   if(h != Wnd)
   {
      ushort name[MAX_STRING], title[MAX_STRING];
      GetClassNameW(h, name, MAX_STRING);
      GetWindowTextW(h, title, MAX_STRING);
      const string strName = ShortArrayToString(name);
      const string strTitle = ShortArrayToString(title);
      PrintFormat("%llx %s %s", h, strName, strTitle);
      Showing = (strName == "#32770" && StringFind(strTitle, "Position:") == 0);
   }
   if(Showing)
   {
      HANDLE type = GetDlgItem(h, 0x2862);
      if(h != Wnd)
      {
         SendMessageW(type, CB_SETCURSEL, 0, 0);
         for(int i = 0; i < ItemType; i++)
            SendMessageW(type, WM_KEYDOWN, VK_DOWN, 0);
      }
      else
      {
         int newType = (int)SendMessageW(type, CB_GETCURSEL, 0, 0);
         if(newType != ItemType)
         {
            ItemType = newType;
            Print("New type: ", ItemType);
         }
      }
   }
   Wnd = h;
}

Функцию FindWindow вызывать по таймеру раз в секунду из индикатора или в цикле из сервиса.

Функция запоминает позицию в выпадающем списке и восстанавливает её при последующем открытии диалога.

 
Stanislav Korotky #:

Функция запоминает позицию в выпадающем списке и восстанавливает её при последующем открытии диалога.

Такой подход позволил бы даже полностью запоминать все значения полей и восстанавливать их при открытии окна.

 
MrBrooklin #:

Владимир, а скрипт не подойдёт или обязательно нужно, чтобы только в окне "Новый ордер"? В скрипте можете сразу задать по умолчанию все нужные Вам параметры. Со скриптом гораздо удобней, чем мучится с этим окном. Допустим в какой-то момент сложилась ситуация на рынке для установки отложенного ордера, тогда Вы просто берёте этот скрипт и бросаете его на график. Делов-то на 1-2 секунды.

С уважением, Владимир.

Скрипт не подойдет. Очень много графиков и на каждом разные настройки, которые надо менять на ходу. В ручную через отложенный ордер удобнее.

 

Спасибо всем за ответы. Вопрос решён ответом в другой моей теме.

Отложенные ордера удобно устанавливать через контекстное меню на графике. Даже если их по алгоритму нужно выставлять много. Цена и тип автоматически выставляются в месте нахождения курсора мыши. Недостающие СЛ, ТП и время можно дополнить советником или скриптом.

Вот так как-то...

Отложенные ордера.

Пожалуй, ничего нового по данной теме и придумывать не надо... 

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