mql5语言的特点、微妙之处以及技巧 - 页 168

 
Slava:

当你收到一条关于内存泄漏的信息时,这意味着没有明确的命令来释放该内存。

当程序终止时(也就是你收到这些信息的时候),无论如何都会释放所有的内存,包括泄露的内存。

我可能把 "泄漏 "一词用得太宽泛了。问题是,一个资源被挂在内存中,如果对象被删除,其名称甚至无法识别。如果你知道它的名字,除了在创建资源的程序中,你不能在任何地方删除它。


现在,为Market写一个脚本非常容易,它将暂停(不一定是有预谋的)VPS上的终端,用资源填充所有的内存,这些资源在脚本执行后不会被删除。

 

一些交易服务器可以同时容纳一个以上的账户类型。例如,ECN和标准。在这种情况下,符号可能没有前缀,也就是说,名称是一样的。

在这种情况下,条形图历史(包括图表上的买入/卖出/最后一笔的当前值)和tick历史 总是只与一个账户类型相对应。

而市场观察的数据对应的是与之相连的那个。


正因为如此,我们很容易观察到,市场观察与图表和tick历史完全不一致。

 

有几次我遇到了意外的(手动)改变战斗议员所站的图表符号的情况。

对符号变化的保护。

int OnInit()
{
  static const string Symb = _Symbol;  
  const bool Res = (_Symbol != Symb);
  
  if (Res)
    Alert("Symbol is change!");
  
  return(Res); // Защита от смены символа.
}
 
当启动一个EA时,你往往需要决定从什么时候开始获得价格历史。为了避免每次都要手动输入,我是这样做的。
#define  WEEK (7 * 24 * 3600)
input datetime temp = __DATE__ - WEEK;

相应地,我在编纂前一周就把故事拿出来。这很方便。

 
fxsaber:
当启动一个EA时,你往往需要决定从什么时候开始获得价格历史。为了避免每次都要手动输入,我是这样做的。

相应地,我在编纂前一周就把故事拿出来。很方便。

为什么要过分依赖优化器?这样更好。

#define WEEK 604800

 

紧急中断功能,似乎工作正常

#define  EXIT (STD_CExit(__LINE__,__FUNCTION__)).Exit

class STD_CExit{
   string function;
   int line;
public:
   STD_CExit(int _line,string _func):line(_line),function(_func){}
   void Exit(string reason=NULL);
};
//--------------------------------------------------------------------------
void STD_CExit::Exit(string reason=NULL){
   Alert(StringFormat("Abort in line %i, function %s.\nReason: %s.",line,function,reason==NULL||reason==""?"Unknow":reason));
   int a=0;
   int b=1/a;}

void OnStart()
{
   Test();
}

void Test(){
   EXIT("Some reason");
}
 
Vladimir Simakov:

紧急中断功能,似乎运作良好

这是正确的事情--我很高兴看到它发生......我们与@Victhttps://www.mql5.com/ru/forum/318246/page10#comment_12651569 一起做了这件事。

但这。

- 不退出http://www.delphibasics.ru/Exit.php

- 不中止 http://www.delphibasics.ru/Abort.php

它是Halt http://www.delphibasics.ru/Halt.php

UPD: 非常需要这样一个脚本

void OnTick()
{
   if(!getData()) EXIT("No data");
}
bool getData()
{
   return(false);
}
 
Igor Makanu:

这件事是需要的--我很高兴看到它发生......,这里是我们与@Victhttps://www.mql5.com/ru/forum/318246/page10#comment_12651569 解决的问题。

但这。

- 不退出http://www.delphibasics.ru/Exit.php

- 不中止 http://www.delphibasics.ru/Abort.php

它是Halt http://www.delphibasics.ru/Halt.php

UPD: 非常需要这样一个脚本

现在还没有办法解决这个问题((())。
 
Vladimir Simakov:
这一次还没有成功()。

也就是说,它正是我所需要的!

如果开发人员将退出/终止作为标准,那么就有可能正确地终止数据处理,例如,如果TF没有准备好--OHLC数据,它对处理发送到服务器的订单 也是有用的。如果能在任何地方中断代码,并在下一个tick之前退出,而不需要无休止的return()来退出OnTick(),那就很方便了。

 
Igor Makanu:

我看不出我为什么需要它!

如果开发人员将退出/终止作为标准,那么就有可能正确地终止数据处理,例如,如果TF没有准备好--OHLC数据,它对处理发送到服务器的订单也是有用的。如果能在任何地方中断代码,并在下一个tick之前退出,而不需要无休止的return()来退出OnTick(),那就很方便了。

嗯,不能,还没有......