Тимур Машнин

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5


Скачать книгу

(0,«Line»);

      ObjectDelete (0,«Price»);

      if (!ObjectCreate (0,«Line», OBJ_VLINE,0,time [1],close [1]))

      {

      return (false);

      }

      ObjectSetInteger (0,«Line», OBJPROP_COLOR, clrBlue);

      ObjectSetInteger (0,«Line», OBJPROP_WIDTH,1);

      ObjectSetString (0,«Line», OBJPROP_TOOLTIP, close [1]);

      if (!ObjectCreate (0,«Price», OBJ_TEXT,0,time [3],high [1]))

      {

      return (false);

      }

      ObjectSetString (0,«Price», OBJPROP_TEXT, close [1]);

      ObjectSetInteger (0,«Price», OBJPROP_COLOR, clrBlack);

      ObjectSetDouble (0,«Price», OBJPROP_ANGLE,90);

      ObjectSetString (0,«Price», OBJPROP_TOOLTIP, close [1]);

      // – - return value of prev_calculated for next call

      return (rates_total);

      }

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      void OnDeinit (const int reason) {

      ObjectsDeleteAll (0, -1, -1);

      }

      Этот код создает вертикальную линию с подписью цены закрытия предыдущего бара.

      С помощью функции ObjectSetInteger устанавливаются такие свойства графического объекта, как цвет, стиль, размер и др.

      С помощью функции ObjectSetString можно изменить имя объекта, при этом объект со старым именем будет удален и будет создан объект с новым именем, установить текст для таких объектов, как текст, кнопка, метка, поле ввода, событие, установить текст всплывающей подсказки для объекта, описание уровня для объектов, имеющих уровни, шрифт, имя BMP-файла для объекта «Графическая метка» и «Рисунок», символ для объекта «График».

      Функция TextSetFont позволяет установить тип шрифта текста, его размер, стиль и угол наклона для объектов, содержащих текст.

      Как уже было сказано, функция TextOut позволяет скомбинировать текст и изображение. Например, следующий код выводит текст в изображение, залитое одним цветом:

      uint ExtImg [10000];

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      //| Custom indicator initialization function |

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      int OnInit ()

      {

      ObjectCreate (0,«Image», OBJ_BITMAP_LABEL,0,0,0);

      ObjectSetString (0,«Image», OBJPROP_BMPFILE,»:: IMG»);

      ArrayFill (ExtImg,0,10000,0xffffff);

      TextOut («Text», 10,10,TA_LEFT|TA_TOP, ExtImg,100,100,0x000000,COLOR_FORMAT_XRGB_NOALPHA);

      ResourceCreate (»:: IMG», ExtImg,100,100,0,0,0,COLOR_FORMAT_XRGB_NOALPHA);

      ChartRedraw ();

      // – —

      return (INIT_SUCCEEDED);

      }

      Здесь ExtImg это пиксельный массив, представляющий изображение 100х100 пикселей.

      Функция ObjectCreate создает объект «Графическая метка», а функция ObjectSetString устанавливает для этого объекта файл изображения с именем::IMG. По поводу знака «::» справочник говорит следующее:

      Для использования своего ресурса в коде нужно перед именем ресурса добавлять специальный признак "::».

      Функция ArrayFill заполняет пиксельный массив пикселями белого цвета.

      Функция TextOut выводит в пиксельный массив слово «Text».

      Функция ResourceCreate создает из пиксельного массива ресурс с именем::IMG.

      В итоге на белом фоне отображается надпись «Text».

      Также можно вывести текст на готовое изображение:

      #resource "\\Images\\image.bmp»

      uint ExtImg [10000];

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      //| Custom indicator initialization function |

      //+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

      int OnInit ()

      {

      ObjectCreate (0,«Image», OBJ_BITMAP_LABEL,0,0,0);

      ObjectSetString (0,«Image», OBJPROP_BMPFILE,»:: IMG»);

      uint width=100;

      uint height=100;

      ResourceReadImage("::Images\\image.bmp», ExtImg, width, height);

      TextOut («Text», 10,10,TA_LEFT|TA_TOP, ExtImg,100,100,0xffffff, COLOR_FORMAT_XRGB_NOALPHA);

      ResourceCreate