Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5

Замена CRect и CCanvas (Стандартная библиотека - исправлено несколько ошибок) - библиотека для MetaTrader 5
- Опубликовал:
- Doerk Hilger
- Просмотров:
- 1973
- Рейтинг:
- Опубликован:
- 2015.12.03 15:30
- Обновлен:
- 2016.11.22 07:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Реальный автор:
MetaQuotes Software, Исправления и Улучшения от Doerk.
Во время попиксельной работы со стандартной библиотекой, вскоре станет заметно, что в некоторых местах не хватает пикселей. Это странное поведение в основном вызвано несколькими ошибками в классе CRect. Основная проблема здесь в том, что оригинальный класс даёт сбой при вычислении высоты и ширины прямоугольника, который влияет почти на ВСЕ производные класса CWnd, так как CWnd графически основан на CRect.
В оригинальном CRect ширина рассчитывается следующим образом:
width = x2 - x1
Это попросту неверно. При создании любого прямоугольного объекта начиная с 0,0 до 10,10, получается объект шириной в 11 пикселей, а не в 10 пикселей. Таким образом, правильный ответ
width = x2 - x1 +1
В некоторых других классах стандартной библиотеки ширина вычисляется правильно, но не всегда (то есть в CCanvas при создании и обращении к ресурсу в памяти, но не при заливке прямоугольника). В любом случае, это поведение непоследовательно и должно быть исправлено.
Теперь стало возможным сравнение двух прямоугольников при помощи обычных операторов, таких как == != >= <= > <
вместо кодирования
if (rect1.left==rect2.left && rect1.top==rect2.rect.top && rect1.right==rect2.rect.right && rect1.bottom==rect2.bottom)
нужно лишь ввести
if (rect1==rect2)
Более того, также для расширения или увеличения прямоугольника поддерживаются унарные операторы, такие как ++, --, +.
Рекомендации:
- Замените Rect.mqh этим файлом в папке Controls. Не ставьте его в другую папку, он просто не будет работать.
- Замените Canvas.mqh в папке Canvas прикрепленным файлом. Не ставьте его в другую папку, он не будет работать.
- Сделайте резервную копию этого файла и восстановите его на новых версиях MetaTrader в исходную папку.
- Если MetaQuotes решит заменить оригиналы этими файлами, думаю вы всё равно будете проинформированы.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/13936

Этот файл заменяет оригинальный файл WndContainer.mqh. Он предотвращает изменение графика при нажатии и удержании кнопки мыши внутри области контейнера.

Индикатор ColorJFatlAcceleration с возможностью изменения таймфрейма индикатора во входных параметрах.

Этот индикатор отображает состояние тренда при помощи Индикатора BSI.

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