- 发布者:
- Doerk Hilger
- 显示:
- 1435
- 等级:
- 已发布:
- 2015.12.15 09:41
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
真实作者:
MetaQuotes 软件公司, 由 Doerk 修复缺陷及强化。
当您利用标准库以像素为基础开始工作时, 您将会很快发觉, 有时候这里或那里的像素丢失了。这种怪异的行为主要是由 CRect 类的几个缺陷引起的。主要问题在于, 原始类在计算长方形的高度和宽度时失误, 其会影响几乎所有的 CWnd 衍生类, 因为 CWnd 图形是基于 CRect。
原始的 CRect, 宽度计算如下:
宽度 = x2 - x1
这是完全错误的。当您从 0,0 到 10,10 常见任意长方形对象时, 对象宽度是 11 像素, 而非 10 像素。所以, 正确答案是
宽度 = 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)
此外, 也支持一元操作符像是 ++, --, +, 扩展或放大一个长方形。
推荐:
- 在 Controls 文件夹里用此文件替换 Rect.mqh。不要把它放到其它文件夹里, 那样的话它完全不能工作。
- 在 Canvas 文件夹里用附件文件替换 Canvas.mqh。不要把它放到其它文件夹里, 那样的话它完全不能工作。
- 为此文件备份, 并在 MetaTrader 的新版本里恢复到原文件夹。
- 如果 MetaQuotes 决定用这些文件来代替原件, 我想无论如何您会得到通知。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/13936

这个文件替换 WndContainer.mqh 的原始文件。当您在一个容器区域内单击并按住鼠标时, 它可以防止图表受到影响。

此 Exp_FrAMACandle 自动交易程序是基于 FrAMACandle 指标蜡烛条的颜色变化。