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

MarginTrader

mt_functions.mqh
Вы автор или правообладатель?

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

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

О программе

Библиотека mt_functions.mqh — это include-файл для MQL4, входящий в проект MarginTrader. Она предоставляет набор вспомогательных функций для создания графических элементов на чарте (метки, кнопки, панели, поля ввода, растровые изображения, отметки) и для выполнения торговых операций с надёжной обработкой ошибок.

Торговые функции библиотеки обеспечивают отправку, модификацию и закрытие ордеров с автоматическим повтором при временных ошибках, проверкой торгового контекста и контролем лимита открытых позиций. Утилиты включают безопасное деление, определение валюты счёта, кодирование символа, проверку объёма и описание ошибок.

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

Состав библиотеки

Классов: 0 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 8

Функции
Функция void MakeBackground(color BCol)

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

Функция double Divide(double n, double d)

Выполняет деление двух чисел с защитой от деления на ноль — при нулевом делителе возвращает ноль.

Функция string AccountCurrencySymbol()

Возвращает символьное обозначение валюты торгового счёта на основе текущей валюты аккаунта.

Функция double EncodeSymbol()

Возвращает числовой код выбранного торгового символа на основе его символьного представления.

Функция double VerifyVolume(string pSymbol,double pVolume)

Проверяет и корректирует объём сделки в соответствии с минимальным, максимальным значениями и шагом лота торгового инструмента.

Функция bool isTemporaryError(int Err)

Определяет, является ли код ошибки временной (повторяемой) или постоянной.

Функция void StoreErrorData(int eCode, datetime eTime)

Сохраняет код ошибки и время её возникновения в глобальные переменные терминала.

Функция string ErrorString(int Err)

Возвращает текстовое описание кода торговой ошибки.

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

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

??//+------------------------------------------------------------------------------------------------------------------------------------------------------+

//|                                                                                                                      MarginTrader: Functions Library |

//|                                                                                                                                     MT_functions.mqh |

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

#property      strict

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

// --- LIBRARIES

#include       <MT_defines.mqh>

//+------------------------------------------------------------------------------------------------------------------------------------------------------+   

void           MakeBackground             (color BCol) {



   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Set the backround of working area.                                                                                                                 |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+   

   

   int xB = 1;

   int yB = 0;

   char Bfontsize = 10;

   string _backName = _ID + "_bkg";



   for (int k = 0; k <= 300; k++) {

     yB = int(k * Bfontsize * 1.3);

     Label(_backName + IntegerToString(k), CORNER_RIGHT_UPPER, xB, yB, "gggggggggggg", Bfontsize, BCol, "Webdings", ANCHOR_RIGHT_LOWER);

   }

}

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

void           Label                      (string  _Name, 

                                           char    corner, 

                                           int     x, 

                                           int     y,

                                           string  _text, 

                                           char    size, 

                                           color   col = C'65,65,65', 

                                           string  _font = "Consolas",

                                           char    anchor = ANCHOR_LEFT_LOWER,

                                           int     window = 0) {



   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Creates a text field.                                                                                                                              |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+



   long cID = ChartID();

   

   if(ObjectFind(cID, _Name) == -1) {

   

      ObjectCreate(_Name, OBJ_LABEL, window, 0, 0);

      ObjectSet(_Name, OBJPROP_CORNER, corner);

      ObjectSet(_Name, OBJPROP_SELECTABLE, false);

      ObjectSet(_Name, OBJPROP_HIDDEN, true);

      ObjectSet(_Name, OBJPROP_XDISTANCE, x);

      ObjectSet(_Name, OBJPROP_YDISTANCE, y);

      ObjectSet(_Name, OBJPROP_BACK, false);

      ObjectSetInteger(cID, _Name, OBJPROP_ANCHOR, anchor);

      ObjectSetString(cID, _Name, OBJPROP_TOOLTIP, _LF);

   }

   

   ObjectSetText(_Name, _text, size, _font, col);

}



//+------ Mic v1.70 ------------------------------------------------------------------------------------------------------------------------------------------------+

void           PendingLabel               (string  _Name, 

                                           char    corner, 

                                           int     x, 

                                           int     y,

                                           string  _text, 

                                           char    size, 

                                           color   col = C'65,65,65', 

                                           string  _font = "Consolas",

                                           char    anchor = ANCHOR_LEFT_LOWER,

                                           int     window = 0) {



   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Creates a text field for pending order - Mic v1.70                                                                                                                              |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+



   long cID = ChartID();

   

   if(ObjectFind(cID, _Name) == -1) {

   

      ObjectCreate(_Name, OBJ_LABEL, window, 0, 0);

      ObjectSet(_Name, OBJPROP_CORNER, corner);

      ObjectSet(_Name, OBJPROP_SELECTABLE, false);

      ObjectSet(_Name, OBJPROP_HIDDEN, true);

      ObjectSet(_Name, OBJPROP_XDISTANCE, x);

      ObjectSet(_Name, OBJPROP_YDISTANCE, y);

      ObjectSet(_Name, OBJPROP_BACK, false);

      ObjectSetInteger(cID, _Name, OBJPROP_ANCHOR, anchor);

      ObjectSetString(cID, _Name, OBJPROP_TOOLTIP, _LF);



      // This is diferent for pending order label

      ObjectSetInteger(cID,_Name,OBJPROP_SELECTABLE,true); 

      ObjectSetInteger(cID,_Name,OBJPROP_SELECTED,true); 

      ObjectSetInteger(cID,_Name,OBJPROP_ZORDER,2); 

   

      ObjectSetText(_Name, _text, size, _font, col);

   }

   

}



//+------------------------------------------------------------------------------------------------------------------------------------------------------+

void        Edit                       (const string           name="Edit",              // object name 

                                        const int              x=0,                      // X coordinate 

                                        const int              y=0,                      // Y coordinate 

                                        const int              width=50,                 // width 

                                        const int              height=18,                // height 

                                        const string           text="Text",              // text 

                                        const string           font="Arial",             // font 

                                        const int              font_size=10,             // font size 

                                        const ENUM_ALIGN_MODE  align=ALIGN_CENTER,       // alignment type 

                                        const ENUM_BASE_CORNER corner=CORNER_RIGHT_UPPER, // chart corner for anchoring 

                                        const color            clr=clrWhite,             // text color 

                                        const color            back_clr=clrBlack,        // background color 

                                        const color            border_clr=clrNONE        // border color

                                       )



{

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Creates a edit field.                                                                                                                              |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   long cID = ChartID();



   if(ObjectFind(name) > -1) {

      ObjectSetString(0,name,OBJPROP_TEXT,text);

      ObjectSetInteger(0,name,OBJPROP_COLOR,clr);

   }

   else {

      EditCreate(cID, name, 0, x, y, width, height, text, font, font_size, align, corner, clr, back_clr, border_clr);

   }

}



//+------------------------------------------------------------------+ 

//| Create Edit object - Mic add func v1.65                          | 

//+------------------------------------------------------------------+ 

bool EditCreate(const long             chart_ID=0,               // chart's ID 

                const string           name="Edit",              // object name 

                const int              sub_window=0,             // subwindow index 

                const int              x=0,                      // X coordinate 

                const int              y=0,                      // Y coordinate 

                const int              width=50,                 // width 

                const int              height=18,                // height 

                const string           text="Text",              // text 

                const string           font="Arial",             // font 

                const int              font_size=10,             // font size 

                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,       // alignment type 

                const ENUM_BASE_CORNER corner=CORNER_RIGHT_UPPER, // chart corner for anchoring 

                const color            clr=clrWhite,             // text color 

                const color            back_clr=clrBlack,        // background color 

                const color            border_clr=clrNONE        // border color

               )

  { 

//--- reset the error value 

   ResetLastError(); 

//--- create edit field 

   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0)) 

     { 

      Print(__FUNCTION__, 

            ": failed to create \"Edit\" object! Error code = ",GetLastError()); 

      return(false); 

     } 

//--- set object coordinates 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 

//--- set object size 

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 

//--- set the text 

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 

//--- set text font 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 

//--- set font size 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 

//--- set the type of text alignment in the object 

   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align); 

//--- set the chart's corner, relative to which object coordinates are defined 

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 

//--- set text color 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

//--- set background color 

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 

//--- set border color 

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 



//--- enable (true) or cancel (false) read-only mode 

   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY, false); 

//--- display in the foreground (false) or background (true) 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false); 

//--- enable (true) or disable (false) the mode of moving the label by mouse 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false); 

//--- hide (true) or display (false) graphical object name in the object list 

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,true); 

//--- set the priority for receiving the event of a mouse click in the chart 

//   The default zero value is set when creating an object; the priority can be increased if necessary.

//   When objects are placed one atop another, only one of them with the highest priority will receive the CHARTEVENT_CLICK event.

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,1); 



   // This not work with edit object

   //ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_CENTER);



//--- successful execution

   return(true); 

  } 





//+------------------------------------------------------------------------------------------------------------------------------------------------------+

void           Panel                      (string  _Name, 

                                           char    corner,

                                           char    border, 

                                           int     x, 

                                           int     y, 

                                           int     w, 

                                           int     h, 

                                           color   col,

                                           int     vis = OBJ_ALL_PERIODS) {

  

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Create the panel.                                                                                                                                  |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   

   long cID = ChartID();

      

   if(ObjectFind(cID, _Name) == -1) {

      

      ObjectCreate(_Name, OBJ_RECTANGLE_LABEL, 0, 0, 0);

      ObjectSet(_Name, OBJPROP_CORNER, corner);

      ObjectSet(_Name, OBJPROP_XDISTANCE, x);

      ObjectSet(_Name, OBJPROP_YDISTANCE, y);

      ObjectSet(_Name, OBJPROP_XSIZE, w);

      ObjectSet(_Name, OBJPROP_YSIZE, h);

      ObjectSet(_Name, OBJPROP_BGCOLOR, col);

      ObjectSet(_Name, OBJPROP_COLOR, col);

      ObjectSet(_Name, OBJPROP_BORDER_TYPE, border);

      ObjectSet(_Name, OBJPROP_WIDTH, 1);

      ObjectSet(_Name, OBJPROP_SELECTABLE, false);

      ObjectSet(_Name, OBJPROP_BACK, false);

      ObjectSetString(cID, _Name, OBJPROP_TOOLTIP, _LF);

   }

   

   ObjectSet(_Name, OBJPROP_TIMEFRAMES, vis);

}

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

void           Button                     (string  _Name, 

                                           char    corner, 

                                           int     x, 

                                           int     y, 

                                           int     w, 

                                           int     h,

                                           string  _text, 

                                           int     fontsize,

                                           color   fontcol = Black,

                                           color   bkgcol = White,

                                           color   bordercol = CLR_NONE, 

                                           string  _font = "Tahoma") {



   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Create a button.                                                                                                                                   |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+



   long cID = ChartID();

   

   if(ObjectFind(cID, _Name) == -1) {



      ObjectCreate(_Name, OBJ_BUTTON, 0, 0, 0);

      ObjectSet(_Name, OBJPROP_CORNER, corner);

      ObjectSet(_Name, OBJPROP_XDISTANCE, x);

      ObjectSet(_Name, OBJPROP_YDISTANCE, y);

      ObjectSet(_Name, OBJPROP_XSIZE, w);

      ObjectSet(_Name, OBJPROP_YSIZE, h);

      ObjectSetString(cID, _Name, OBJPROP_TEXT, _text);

      ObjectSetString(cID, _Name, OBJPROP_FONT, _font);

      ObjectSetString(cID, _Name, OBJPROP_TOOLTIP, _LF);

      ObjectSetInteger(cID, _Name, OBJPROP_FONTSIZE, fontsize);

      ObjectSetInteger(cID, _Name, OBJPROP_COLOR, fontcol);

      ObjectSetInteger(cID, _Name, OBJPROP_BGCOLOR, bkgcol);

      ObjectSetInteger(cID, _Name, OBJPROP_BORDER_COLOR, bordercol);

      ObjectSetInteger(cID, _Name, OBJPROP_BACK, false);

   }

}

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

void           BmpButton                  (string  _Name, 

                                           int     corner,

                                           int     x, 

                                           int     y,

                                           int     w,

                                           int     h,

                                           string  _bmp_on,

                                           string  _bmp_off) {



   // ---------------------------------------------------------------------------------------------------------------------------------------------------+

   // Create a two-state bitmap.                                                                                                                         |

   // ---------------------------------------------------------------------------------------------------------------------------------------------------+



   long cID = ChartID();

   

   if(ObjectFind(cID, _Name) == -1) {

   

      ObjectCreate(_Name, OBJ_BITMAP_LABEL, 0, 0, 0);

      ObjectSet(_Name, OBJPROP_CORNER, corner);

      ObjectSet(_Name, OBJPROP_XDISTANCE, x);

      ObjectSet(_Name, OBJPROP_YDISTANCE, y);

      ObjectSet(_Name, OBJPROP_XSIZE, w);

      ObjectSet(_Name, OBJPROP_YSIZE, h);

      ObjectSetString(cID, _Name, OBJPROP_BMPFILE, 0, _bmp_on);

      ObjectSetString(cID, _Name, OBJPROP_BMPFILE, 1, _bmp_off);

      ObjectSetString(cID, _Name, OBJPROP_TOOLTIP, _LF);

      ObjectSetInteger(cID, _Name, OBJPROP_STATE, false);

      ObjectSetInteger(cID, _Name, OBJPROP_ZORDER, 1);

      ObjectSetInteger(cID, _Name, OBJPROP_BACK, false);

      ObjectSet(_Name, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);

   }

}

//+------------------------------------------------------------------------------------------------------------------------------------------------------+

void           Bitmap                     (string  _Name, 

                                           int     corner,

                                           int     x, 

                                           int     y,

                                           int     w,

                                           int     h,

                                           string  _bmp) {



   // -------

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

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

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

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

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

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

Стоимость полного кода
6 322,30₽ ≈ $77.27