Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

IncGUI_BitPic - библиотека для MetaTrader 5

Просмотров:
3242
Рейтинг:
(29)
Опубликован:
2012.09.05 08:12
Обновлен:
2012.09.05 08:14
\MQL5\Include\ \MQL5\Experts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Включаемый файл IncGUI_BitPic.mqh с классом графического элемента управления CBitPic для пиксельного рисования (рис. 1).

 
Рис. 1. Пример рисования классом CBitPic.

Возможно рисование точек разного размера - DrawDot(), линий по координатам - DrawLine(), линий по углу - DrawLineByAngle(), стрелок - DrawArrow(), различных фигур: прямоугольников - DrawRectangle(), треугольников - DrawTriangle(), окружностей, эллипсов, колец, секторов - DrawCircle(). Эллипс может быть повернут на заданный угол (так же и кольцо эллипса, сектор эллипса). Фигуры могут рисоваться с заливкой или только контур. Возможна печать текста - TypeText() (несколько вариантов шрифта и размера). Созданное изображение можно сохранить в файл bmp - SavePicture(), а также загрузить из файла готовое bmp изображение - LoadPicture() (файл должен быть без сжатия, 24 или 32 бита).

Для использования элемента управления необходимо подключить файл IncGUI_BitPic.mqh:

#include <IncGUI_BitPic.mqh>

Затем, объявить класс, например, с именем p:

CBitPic p;

Класс создан с использованием принципов изложенных в статьях:

Соответственно, принцип его применение аналогичен принципам использования элементов управления описанных в статьях: в первую очередь вызывается метод инициализации Init(), для включения видимости используется метод Show(), для скрытия и удаления по завершению работы метод Hide() и т.д. 

В отличие от класса cIntBMP рисование выполняется несколько иначе, в cIntBMP цвет рисования указывался в функциях рисования фигур, здесь же рисование выполняется в следующем порядке: указывается цвет фона - SetBGColor(), выполняется очистка - Clear(), перед рисованием задается толщина рисования - SetDrawWidth(), цвет рисования SetDrawColor(), заливки - SetFillColor(), указывается нужна ли заливка - SetFilled(), или рисование выполняется только контуром, после этого вызываются функции рисования. Разумеется, по мере необходимости можно менят цвет рисования, заливки и пр. После рисования необходимо вызывать метод Redraw(). 

В следующей таблице приведены все методы класса:

Метод
Назначение и параметры
void Clear()Очистка.
void DrawArrow(
   int aX1,
   int aY1,
   int aX2,
   int aY2,
   bool aBoth=false
)
Рисование стрелки. aX1, aY1 - координаты начала, aX2, aY2 - координаты конца, aBoth - стрелки на обеих концах. 
void DrawCircle(
   int aX,
   int aY,
   int aR,
   double aR2K=0,
   double aFromAngle=0,
   double aToAngle=0,
   double aRatio=1,
   double aRotateAngle=0
)
Рисование окружности, кольца, эллипса, сектора. aX, aY - координаты центра; aR2K - радиус внутренней окружности (от 0 до 1); aFromAngle, aToAngle - начальный и конечный углы сектора; aRatio - коэфициент сжатия (положительное число, меньше 1 - сжатие по вертикали, больше 1 - расширение по вертикали); aRotateAngle - угол поворота. 
void DrawDot(
   int aX,
   int aY
)
Рисование точки. aX, aY - координаты. 
void DrawLine(
   int aX1,
   int aY1,
   int aX2,
   int aY2
)
Рисование линии. aX1, aY1 - координаты начала, aX2, aY2 - координаты конца. 
void DrawLineByAngle(
   int aX1,
   int aY1,
   double aAngle,
   int aLength
)
Рисование линии по углу. aX1, aY1 - координаты начала, aAngle - угол, aLength - длина. 
void DrawRectangle(
   int aX1,
   int aY1,
   int aX2,
   int aY2
)
Рисование прямоугольника. aX1, aY1 - координаты левого верхнего угла, aX2, aY2 - координаты правого нижнего угла. 
void DrawTriangle(
   int aX1,
   int aY1,
   int aX2,
   int aY2,
   int aX3,
   int aY3
)
Рисование треугольника. aX1, aY1, aX2, aY2, aX3, aY3 - координаты вершин. 
int Event(
   const int id,
   const long & lparam,
   const double & dparam,
   const string & sparam
)
Обработчик событий. Вызывается из функции OnChartEvent() эксперта. 
int EventX()Координата Х последнего клика на граф. объекте.
int EventY()Координата Y последнего клика на граф. объекте.
void Fill(
   int aX,
   int aY
)
Заливка области одного цвета цветом заливки. aX, aY - координаты. 
void GetData(
   uint & aData[]
)
Получение массива данных изображения. aData - массив в котором возвращаются данные. 
color GetPixel(
   int aX,
   int aY
)
Получение цвета пикселя по заданным координатам. aX, aY - координаты. 
int Height()Получение высоты граф. объекта.
void Hide()Удаление граф. объекта с графика.
void Init(
   string aName="CBitPic",
   int aWidth=300,
   int aHeight=200
)
Инициализация. aName - имя графического объекта, aWidth - ширина, aHeight - высота.
int Left()Получение координаты левого края граф. объекта.
bool LoadPicture(
   string aFileName,
   bool aFileCommon=false
Загрузка изображения из bmp файла. aFileName - имя файла, aFileCommon - файл находится в общей папке MQL5/Files или в папке MQL5/Files терминала. Допускаются файлы без сжатия, 24-ех и 32-ух битные. 
void Redraw()Перерисовка граф. объекта.
void Refresh()Обновление (удаление и создание).
bool SavePicture(
   string aFileName,
   bool aFileCommon=false
)
Сохранение изображения в bmp файле. aFileName - имя файла, aFileCommon - сохранять в общей папке MQL5/Files или в папке MQL5/Files терминала. 
void SetBGColor(
   uchar aR=0,
   uchar aG=0,
   uchar aB=255
)
Установка цвета фона. aR, aG, aB - значение компонентов цвета. 
void SetBGColor(
   color aColor=clrBlue
)
Установка цвета фона. aColor - цвет.После установки цвета необходимо вызывать метод Clear().
void SetData(
   uint & aData[]
)
Установка массива данных изображения. aData - массив данных.
void SetDrawColor(
   uchar aR=255,
   uchar aG=255,
   uchar aB=0)
Установка цвет рисования. aR, aG, aB - значение компонентов цвета. 
void SetDrawColor(
   color aColor=clrYellow
)
Установка цвет рисования. aColor - цвет. 
void SetDrawWidth(
   int aWidth
)
Установка толщины рисования. aWidth - толщина от 1 до 5. 
void SetFillColor(
   uchar aR=255,
   uchar aG=0,
   uchar aB=0
)
Установка цвета заливки. aR, aG, aB - значение компонентов цвета. 
void SetFillColor(
   color aColor=clrRed
)
Установка цвета заливки. aColor - цвет. 
void SetFilled(
   bool aFilled=true
)
Установка режима заливки. aFilled - с заливкой/без заливки. 
void SetFont(
   int aType=3
)
Установка шрифта. aType - тип (0-6). 0 - Small Fonts 6, 1 - Small Fonts 7, 2 - Small Fonts 8, 3 - Arial 8, 4 - Arial Narrow 8, 5 - Arial Black 8, 6 - Courier New 8. 
void SetPos(
   int aLeft,
   int aTop
)
Установка координат левого верхнего угла граф. объекта. aLeft - расстояние от левого края, aTop - от верхнего края.
void SetPosLeft(
   int aLeft
)
Установка координаты левого края граф. объекта. aLeft - расстояние от левого края.
void SetPosTop(
   int aTop
)
Установка координаты верхнего края граф. объекта. aTop - расстояние от верхнего края.
void SetSize(
   int aWidth,
   int aHeight
Установка размера. aWidth - ширина, aHeight -высота.
void SetSubWindow(
   int aNumber
)
Установка подокна по номеру. aNumber - номер подокна. 
void SetSubWindow(
   string aName
)
Установка подокна по имени. aName - имя подокна. 
void SetTag(
   string aValue
)
Установка тэга. aValue - текст. 
void Show()Включение видимости граф. объекта.
void Show(
   int aLeft,
   int aTop
)
Включение видимости граф. объекта на указанной позиции. aLeft - расстояние от левого края, aTop - от верхнего края. 
string Tag()Получение тэга.
int Top()Получение координаты верхнего края граф. объекта.
void TypeText(
   int aX,
   int aY,
   string aText,
   int aDirection=0,
   int aAlign=0
)
Печать текста. aX, aY - координаты, aText - текст, aDirection - направление (0 - слева направо, 1 - сверху вниз, 2 - справа налево перевернутый, 3 - снизу вверх), aAlignе - выравнивание (0 - по началу текста, 1 - по концу текста). 
bool Visible()Получение видимости граф. объекта. 
int Width()Получение ширины граф. объекта.


В эксперте eBitPicTest.mq5 пример использования класса CBitPic, эксперт рисует на графике изображение как на рис. 1 и сохраняет его в файл с именем CBitPic.bmp (должен появиться в папке MQL5/Files папки данных терминала). Если на изображении щелкнуть мышкой, в комментарии графика отобразятся координаты точки, ее цвет, и в этом же месте будет нарисована "снежинка" (как в правом верхнем углу на рис. 1).

ColorRVI_HTF ColorRVI_HTF

Классический вариант индикатора RVI (Relative Vigor Index), который можно располагать, зафиксировав таймфрейм индикатора на значении, отличающемся от таймфрейма графика, и выполненный в виде облака

Индекс новых максимумов-новых минимумов Индекс новых максимумов-новых минимумов

Индекс новых максимумов-новых минимумов вычисляется как разность между числом валютных пар, показавших максимум за период, и числом валютных пар, показавших минимум за период.

ColorXATR ColorXATR

Сглаженный ATR, показывает цветом растёт или слабеет тренд.

MultiLineMovingAverage MultiLineMovingAverage

Индикатор MultiLineMovingAverage показывает в рабочем окне графика уровни шести средних линий с разных таймфреймов.