MetaEditor。问题和解决方案。 - 页 6

 
1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

你好!在我安装了MQL5后,在编辑过程中遇到了一些显示程序文本的缺陷。当我选择光标时,文本的位置发生了变化,新的字符出现在键盘上而不是光标的位置。重新安装软件并没有帮助。我怎样才能解决这个问题呢?



 
你能告诉我是否可以在交易中使用订单簿(EA)?
 
Liric86:

1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

你好!在我安装了MQL5后,在编辑过程中遇到了一些显示程序文本的缺陷。当我选择光标时,文本的位置发生了变化,新的字符出现在键盘上而不是光标的位置。重新安装软件并没有帮助。如何解决这个问题?

你所选择的字体不是单白的。

请将您的字体设置改为Courier New,字体大小为10点。

 
todem:
你能告诉我你是否可以在交易中使用订单簿(通过EA)?

你可以,但不是在交易策略测试器中

目前,提供外汇堆栈的人很少(有处于测试模式的Alpari)。

 
调试器中缺少的是一个步骤计数器。还有一个预设的参数,在给定的步骤中进行第一次突破。
 
Urain:
调试器中缺少的是一个步骤计数器。还有一个预设的参数,在给定的步骤中进行第一次突破。

目前,中断是无条件的,但可以使用DebugBreak()绕过这一限制。
Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
Общие функции / DebugBreak - Документация по MQL5
 
mql5:
目前,中断是无条件的,但我们可以使用DebugBreak() 绕过这个限制。

所有这些都是如此,但我面临的情况是,在一个待链接的文件上有许多对一个通用类的调用。而不同的条件导致对该类不存在的数组单元的调用。程序本身包含数千个算法步骤,所以使用DebugBreak()+F11 追踪故障发生在哪一步非常困难。

当然,我以老式的方式(用指纹和逻辑猜测)摆脱了这种情况。但是这其中的代价,是许多小时的工作。主要问题不在于哪个函数出错,而在于哪个函数未能正确计算出数值,然后导致另一个函数出错。也就是说,我们不需要错误点本身,而是需要对错误点之前发生的事情的了解。

这就是为什么我们需要一个内部的分步追踪器,并且能够在新的开始后立即进入指定的步骤(已经倒回了所有以前的步骤)。

 
我指的是像这样的设计。

if(step==123124) DebugBreak();
 
mql5:

我的意思是这样的建设。

if(step==123124) DebugBreak();


是的,这也是我在谈论的问题。把它塞进5000行代码的每一行是个问题。而中间定位并不奏效,因为参照物在嵌套之间不断跳动,所以第一次粗略估计以获得更精确的定位是不可能的。

我在文件的开头描述了这种过载。

ulong cntDebugBreak=0;
void DebugBreak(ulong step)
  {
   if(step>=cntDebugBreak){cntDebugBreak++;DebugBreak();}
   else cntDebugBreak++;
  }

但如果在每个表达式之前以隐蔽的方式(在调试器中)调用它,将会非常酷。

PS纠正了代码。

 

MetaEditor 4有一个巧妙的解决方案,将帮助窗口放在工具窗口中,帮助总是在文本编辑窗口中随手可得。帮助窗口是否也可以放在MetaEditor 5中?