文章 "MQL5 初学者: 图形对象的防破坏保护"

 

新文章 MQL5 初学者: 图形对象的防破坏保护已发布:

1. 简介

MQL5编程语言的一个优点是, 使用MQL5的标准函数, 您可以在使用MetaTrader 5交易终端时使用代码完成各种任务以及达到各种目标.

这篇文章使用简明的语言, 易懂的实例, 使用两种不同方式来实现控制面板在其图形对象被删除或者修改时的回应. 我们将会发现, 您如何确认在应用程序退出之后, 在图表上不会出现无主的对象, 这样的对象可能是某人或者程序把它们重新命名而使得程序对之失去了控制.

控制面板在对象属性被人工修改前后的实例

图 1. 控制面板在其对象属性被人工修改前后的外观实例

在本文中描述的, 构造对来自外界干扰的回应的代码, 对于其他情况也并非是多余的. 举例来说, 在图表上运行的第三方程序没有准备做清除的, 使用某些参数调用一个函数来删除对象(ObjectsDeleteAll () 或者您自己创建的函数):

  • 在同一个窗口/子窗口中删除人工或者其他程序创建的全部类型的图形对象;
  • 或者在您程序的控制面板上完全删除某种类型的对象;
  • 或者根据前缀的匹配删除您程序中的对象.
这些选项在一定条件下都是合理的, 包括程序正确运行中, 在意外或者有意删除了控制面板对象时, 或者在代码中人工修改了它们的属性时提供可以执行的操做.

本文对刚刚开始学习OnChartEvent()函数的事件处理的开发者也会有所帮助.

我想直接提醒您, 本文不包括创建"强硬"的回应代码, 就是那种对象会在未经授权的条件下修改或者删除的代码. 终端程序的主要目的是解决交易者可能遇到的问题, 所以武断地干预是不可接受的.

对于喜欢强硬行动的人, 我建议您在考虑这样做之前做一个下面的类比. 假如有个办公室的清洁工, 在用抹布擦桌子的时碰掉了桌上的电脑, 或者在某人画出漂亮的作品时弄脏了他/她的桌子或者电脑. 所以如果被毁坏财物的主人的反应是, 在大庭广众之下把电脑, 家具连同清洁工一起扔出窗外, 他的行为显然是不当的. 另外, 做出这种激进行为的人也得不到什么好处.

在继续进行对蓄意破坏对象回应的两种(从更多选择中选出的)可能的方法之前, 我相信有必要提一下在MQL5/MQL4编程语言中的一种对象保护方法.

作者:Dina Paches