В MQL5 можно управлять графиками, только если открепить график от терминала. Это конечно не то, но на всякий случай:
CHART_IS_DOCKED | Окно графика закреплено. Если установить значение false, то график можно перетащить за пределы терминала | bool |
CHART_FLOAT_LEFT | Левая координата открепленного графика относительно виртуального экрана | int |
CHART_FLOAT_TOP | Верхняя координата открепленного графика относительно виртуального экрана | int |
CHART_FLOAT_RIGHT | Правая координата открепленного графика относительно виртуального экрана | int |
CHART_FLOAT_BOTTOM | Нижняя координата открепленного графика относительно виртуального экрана | int |
- www.mql5.com
Здравствуйте, хочу написать скрипт, который бы автоматически изменял размер окон графиков и располагал окна графиков в нужных мне местах внутри терминала, чтобы каждый раз руками не двигать
Не могу найти, какая функция отвечает за сдвиг окна графика в окне терминала. Т.е. например, как расположить график на N пикселей по оси X и N пикселей по оси Y от края рабочей области терминала.
Я нашел, как менять размер графиков: ChartSetInteger(ID, CHART_WIDTH_IN_PIXELS) ; ChartSetInteger(ID,CHART_HEIGHT_IN_PIXELS)
А вот как сдвинуть окно графика в окне терминала не смог найти.
Подскажите пожалуйста. Спасибо за ответы
Здравствуйте!
Возможно, для этого, вам понадобится создать отдельный Профиль.
Профили предназначены для удобной работы с группами графиков. В профилях запоминаются:
- графики, которые были открыты в момент сохранения профиля
- расположение и размер этих графиков;
- шаблоны, которые были применены к этим графикам.
- www.metatrader5.com
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Графический интерфейс для запуска второго терминала мт5.
Nikolai Semko, 2019.04.10 19:20
Код же есть. Смотрите и разбирайтесь.
Можете открепить любое окно, убрать родной график и рисовать, что душе угодно. В том числе и собственный интерфейс.
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 void OnStart() { ChartSetInteger(0,CHART_IS_DOCKED,false); // Открепляем окно ChartSetInteger(0,CHART_SHOW,false); // Выключаем график //ChartSetInteger(0,CHART_FOREGROUND,true); // Ценовой график на переднем плане double d=2.45; while(!IsStopped()) { int x1=int((0.5+sin(d*1.25)/2)*1920); int x2=int((0.5+sin(d*2.12)/2)*1920); int y1=int((0.5+sin(d*1.75)/2)*1080); int y2=int((0.5+sin(d*2.65)/2)*1080); ChartSetInteger(0,CHART_FLOAT_LEFT,(int)fmin(x1,x2)); ChartSetInteger(0,CHART_FLOAT_TOP,(int)fmin(y1,y2)); ChartSetInteger(0,CHART_FLOAT_RIGHT,(int)fmax(x1,x2)); ChartSetInteger(0,CHART_FLOAT_BOTTOM,(int)fmax(y1,y2)); ChartChanged(); Canvas.Erase(); for (int i=0;i<W.Height;i++) Canvas.LineHorizontal(0,W.Width-1,i,Grad((double)i/W.Height)); Canvas.Update(); d+=0.006; Sleep(100); } ChartSetInteger(0,CHART_IS_DOCKED,true); ChartSetInteger(0,CHART_SHOW,true); } //+------------------------------------------------------------------+ uint Grad(double p) { static uint Col[6]={0xFF0000FF,0xFFFF00FF,0xFFFF0000,0xFFFFFF00,0xFF00FF00,0xFF00FFFF}; if(p>0.9999) return Col[5]; if(p<0.0001) return Col[0]; p=p*5; int n=(int)p; double k=p-n; argb c1,c2; c1.clr=Col[n]; c2.clr=Col[n+1]; return ARGB(255,c1.c[2]+uchar(k*(c2.c[2]-c1.c[2])+0.5), c1.c[1]+uchar(k*(c2.c[1]-c1.c[1])+0.5), c1.c[0]+uchar(k*(c2.c[0]-c1.c[0])+0.5)); }
Пожалуй, только через открепление
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу найти, какая функция отвечает за сдвиг окна графика в окне терминала. Т.е. например, как расположить график на N пикселей по оси X и N пикселей по оси Y от края рабочей области терминала.
Я нашел, как менять размер графиков: ChartSetInteger(ID, CHART_WIDTH_IN_PIXELS) ; ChartSetInteger(ID,CHART_HEIGHT_IN_PIXELS)
А вот как сдвинуть окно графика в окне терминала не смог найти.
Подскажите пожалуйста. Спасибо за ответы