← К каталогу
Исходный код · ID 3367

Расширение графика

graph extension.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор «Расширение графика» размещает на графике MetaTrader настраиваемую кнопку-переключатель. При нажатии кнопка меняет текст между «ВКЛ» и «ВЫКЛ» и вызывает системную функцию управления стилем окон терминала через Windows API (user32.dll). Индикатор не содержит буферов и не рассчитывает аналитические значения — его единственная задача предоставить пользователю графический элемент управления внешним видом окон терминала.

Кнопка создаётся или обновляется при инициализации и при изменении внешних параметров. Её положение, размеры и цвета полностью настраиваются через входные параметры. При удалении индикатора с графика кнопка корректно удаляется.

Управление окнами терминала осуществляется путём перебора дочерних окон MDI-кластера и изменения их стилевых флагов (WS_BORDER, WS_DLGFRAME, WS_SIZEBOX) с последующим применением через SetWindowPos. Функция активируется только при нажатии на кнопку, а не в каждом тике.

Получить полный код

Поиск по коду файла

#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0

input int   Горизонтальное_смещение = 5;          
input int   Вертикальное_смещение   = 500;           
input int   Высота_кнопки           = 25;                   
input int   Ширина_кнопки           = 45;                   
input color Цвет_фона               = clrLime;                  
input color Цвет_границы            = clrRed;                
input color Цвет_текста             = clrBlack;               

#define ИМЯ_КНОПКИ "_Кнопка переключения"

int OnInit()
{
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
{

   if (reason == REASON_REMOVE)
      ObjectDelete(0, ИМЯ_КНОПКИ);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
      // код доступен только после оплаты
   }

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

   if (id == CHARTEVENT_OBJECT_CLICK && sparam == ИМЯ_КНОПКИ)
   {

      ObjectSetString(0, ИМЯ_КНОПКИ, OBJPROP_TEXT, ObjectGetInteger(0, ИМЯ_КНОПКИ, OBJPROP_STATE) ? "ВКЛ" : "ВЫКЛ");
      УправлениеОкнами(ObjectGetInteger(0, ИМЯ_КНОПКИ, OBJPROP_STATE));
   }

   if (id == CHARTEVENT_CUSTOM + 1)
   {

      СоздатьИлиОбновитьКнопку();
   }
}

void СоздатьИлиОбновитьКнопку()
{

   if (ObjectFind(0, ИМЯ_КНОПКИ) < 0)
   {

      ObjectCreate(0, ИМЯ_КНОПКИ, OBJ_BUTTON, 0, 0, 0);
   }

   ObjectSetInteger(0, ИМЯ_КНОПКИ, OBJPROP_XDISTANCE, Горизонтальное_смещение);       
   ObjectSetInteger(0, ИМЯ_КНОПКИ, OBJPROP_YDISTANCE, Вертикальное_смещение);         
   ObjectSetInteger(0, ИМЯ_КНОПКИ, OBJPROP_XSIZE, Ширина_кнопки);                     
   ObjectSetInteger(0, ИМЯ_КНОПКИ, OBJPROP_YSIZE, Высота_кнопки);                     
   ObjectSetInteger(0, ИМЯ_КНОПКИ, OBJPROP_CORNER, CORNER_LEFT_LOWER);                // Угол — левый нижний
   

Показано первые 50% кода (символов: 3290)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
329₽ ≈ $4.02