Download MetaTrader 5

Watch how to download trading robots for free

Interesting script?
So post a link to it -
let others appraise it

You liked the script? Try it in the MetaTrader 5 terminal

2015.10.05 13:13
CRect and CCanvas replacement (Standard Library - several bugs fixed)

CRect and CCanvas replacement (Standard Library - several bugs fixed) - library for MetaTrader 5

| English Русский 中文 Español Deutsch 日本語 Português

Published by:
Doerk Hilger
Views:
983
Rating:
votes: 18
\MQL5\Include\Controls\
rect.mqh (12.53 KB)view
\MQL5\Include\Canvas\
canvas.mqh (82.83 KB)view

Real author:

MetaQuotes Software, Bugfixes & Enhancements by Doerk.

Description of the bug (fixes):

When you start to work on a pixel basis with the standard library, you'll soon figure out, that sometimes a pixel here and there is missing. This weird behavior is caused mainly by several bugs in the CRect class. The main problem here is, that the original class is failing by calculating the height and the width of a rectangle, which influences almost ALL classes which derive from CWnd, because CWnd is graphically based on CRect.

In the original CRect, the width is calculated as following:

width = x2 - x1

This is simply wrong. When you create any rectangular object starting from 0,0 until 10,10, then the width of the object is 11 pixels, not 10 pixels. Therefore, the right answer is

width = x2 - x1 +1

In some other classes of the standard library it's calculated right, sometimes, but also not always (i.e. in CCanvas when creating and addressing the resource in memory, but not when filling a rectangle). Anyway, it's an inconsistent behavior and should be corrected.

Description of enhancements:

It's now possible to compare two rectangles by using normal operators like == != >= <= > <

instead of coding

if (rect1.left==rect2.left && rect1.top==rect2.rect.top && rect1.right==rect2.rect.right && rect1.bottom==rect2.bottom)

you type now just

if (rect1==rect2)

Furhtermore, unary operators like ++, --, + are supported as well and expand or inflate a rectangle.

Recommendations:

  • Replace the Rect.mqh by this file in the Controls folder. Don't put it into another folder, it simply won't work.
  • Replace the Canvas.mqh by the attached file in the Canvas folder. Don't put it into another folder, it won't work.
  • Make a backup of this file and restore it on new releases of MetaTrader into the original folder.
  • If MetaQuotes decides to replace the originals by these files, I think you'll be informed anyway.
Accelerator Oscillator (AC) Accelerator Oscillator (AC)

The Acceleration/Deceleration Indicator (AC) measures acceleration and deceleration of the current driving force.

Average Directional Movement Index (ADX) Average Directional Movement Index (ADX)

The Average Directional Movement Index Indicator (ADX) helps to determine if there is a price trend.

LinesProfitLoss LinesProfitLoss

Calculates profit (loss) of the current orders on the symbol.

FFC - Forex Factory Calendar FFC - Forex Factory Calendar

Modified version of FF Calendar Indicator with new features.