请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
程序库

CRect 和 CCanvas 替换 (标准库 - 已修复若干缺陷) - MetaTrader 5程序库

发布者:
Doerk Hilger
显示:
1324
等级:
(24)
已发布:
2015.12.15 09:41
已更新:
2016.11.22 07:33
\MQL5\Include\Controls\
rect.mqh (12.53 KB) 预览
\MQL5\Include\Canvas\
canvas.mqh (82.83 KB) 预览
需要基于此代码的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

CWndContainer 替换 CWndContainer 替换

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

Exp_FrAMACandle Exp_FrAMACandle

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

情绪 情绪

这是一款市场情绪指标。它显示市场情绪 — 多头或空头。

BSI 趋势指标 BSI 趋势指标

此指标显示来自 BSI 指标的趋势条件。