2 технических вопроса по metatrader 5

 

Привет, 2 вопроса по mt5:

1. Есть ли скрипт для удаления границ чарта? Есть для мт4, на мт5 не мгу найти? На форуме есть похожий вопрос(https://www.mql5.com/en/forum/444812), о там скрипт не работает.

2. Как настроить открытие нового чарта не на весь теминал(maximize)? У меня например уже открыто пару чартов в нужном мне расположении, но когда открываю новое, то оно открывается на весь экран и приходится заново настраивать расположение.

remove all borders
remove all borders
  • 2023.04.03
  • www.mql5.com
Hi there, i found this script to remove all windows borders. But infortunately, it does not work...
 
dzmitry.zimin:

Привет, 2 вопроса по mt5:

1. Есть ли скрипт для удаления границ чарта? Есть для мт4, на мт5 не мгу найти? На форуме есть похожий вопрос(https://www.mql5.com/en/forum/444812), о там скрипт не работает.

Если под границами чарта имеется в виду шкала цены и времени, то тут все просто:

void OnStart()
{
   ChartSetInteger(0, CHART_SHOW_DATE_SCALE, false);   
   ChartSetInteger(0, CHART_SHOW_PRICE_SCALE, false);   
}

Если что-то другое, то поясните.

2. Как настроить открытие нового чарта не на весь теминал(maximize)? У меня например уже открыто пару чартов в нужном мне расположении, но когда открываю новое, то оно открывается на весь экран и приходится заново настраивать расположение.

Скорее всего, дело в шаблоне default.tpl. В нем есть данные о размерах открываемого графика. Попробуйте перезаписать шаблон в этот файл с окна графика, которое не максимизировано.

 
Ihor Herasko #:

Если под границами чарта имеется в виду шкала цены и времени, то тут все просто:

Если что-то другое, то поясните.

Скорее всего, дело в шаблоне default.tpl. В нем есть данные о размерах открываемого графика. Попробуйте перезаписать шаблон в этот файл с окна графика, которое не максимизировано.

Нет, речь идет о самих границах окна, приложил скрин. У меня есть скрипт для mt4(также приложил файл), который удаляет эти границы, а для mt5 не нашел.

По второму вопросу все сработало, спасибо.

Файлы:
 
Тоже интересно. В MT4 можно было убрать через Windows API. Почему в MT5 прикрыли лавочку? Сделали бы хотя бы штатную возможность тогда: очень экранное место экономит.
 
#include <WinAPI\WinAPI.mqh>

#define GWL_STYLE         -16 
#define WS_CAPTION        0x00C00000 
#define WS_BORDER         0x00800000
#define WS_SIZEBOX        0x00040000
#define WS_DLGFRAME       0x00400000
#define SWP_NOSIZE        0x0001
#define SWP_NOMOVE        0x0002
#define SWP_NOZORDER      0x0004
#define SWP_NOACTIVATE    0x0010
#define SWP_FRAMECHANGED  0x0020

void OnStart()
{
  const HANDLE iChartParent = user32::GetParent(ChartGetInteger(0, CHART_WINDOW_HANDLE));    
  const int iNewStyle = (int)(user32::GetWindowLongW(iChartParent, GWL_STYLE) & (~(WS_BORDER | WS_DLGFRAME | WS_SIZEBOX)));    

  if ((iChartParent > 0) && (iNewStyle > 0))
  {
    DebugBreak(); // В терминале сделать окно внутренним.
    
    user32::SetWindowLongW(iChartParent, GWL_STYLE, iNewStyle);
    user32::SetWindowPos(iChartParent, 0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_FRAMECHANGED);

    DebugBreak(); // Посмотреть результат.
  }
}


Переделал под пятерку, работает только по F5.


 
fxsaber #:
работает только по F5

Интересно, но к сожалению бесполезно на практике.

 
Ivan Titov #:

Интересно, но к сожалению бесполезно на практике.

Интересно, зачем было тогда искать такой способ, если он "бесполезен на практике"? То есть изначально на вопрос "Как убрать границы окна?" можно было ответить, что это бесполезно (не нужно). Таким образом, тема вырождается сама собой. ))

 
Ihor Herasko #:
Интересно, зачем было тогда искать такой способ, если он "бесполезен на практике"?  То есть изначально на вопрос "Как убрать границы окна?" можно было ответить, что это бесполезно (не нужно).  Таким образом, тема вырождается сама собой. ))

Я ищу способ, который работает не только в отладке, но и в реальной работе. Только в отладке бесполезно изначально. Тема актуальна.

 
Ivan Titov #:

Интересно, но к сожалению бесполезно на практике.

Раз в отладке работает, значит MQ насильно возвращают стиль окна в нужное им состояние.

 
fxsaber #:

Раз в отладке работает, значит MQ насильно возвращают стиль окна в нужное им состояние.

Это я понял, поэтому и написал:

Ivan Titov #:
Почему в MT5 прикрыли лавочку? Сделали бы хотя бы штатную возможность тогда: очень экранное место экономит.
 
Ivan Titov #:
Тоже интересно. В MT4 можно было убрать через Windows API. Почему в MT5 прикрыли лавочку? Сделали бы хотя бы штатную возможность тогда: очень экранное место экономит.

конкуренты (не буду показывать пальцем, говорят неприлично) сделали иначе - меню поместили в декор (верхнюю рамку) окна, а всякие доп.панели только справа или слева..оказалось очень удобно

При том что современные мониторы более широкие чем высокие, то разумная экономия места по вертикали довольно важна