错误、漏洞、问题 - 页 2750

 
fxsaber:

对不起,我表述得不好。

我最困惑的是你最初强调的是字符串,尽管它是关于功能的。

如果是用函数缓存做的测试,就会更清楚了

 
Sergey Dzyublik:

作为问题的一个可能的解决方案,开发人员建议引入一个预定义的变量。

而且,为什么在一个时间间隔内连续两次调用会得到相同的结果?

void f()
{
   MqlTick tick1, tick2; 
   SymbolInfoTick(Symbol(),tick1); //1
   /*вычисления*/
   SymbolInfoTick(Symbol(),tick2); //2
}
const MqlTick _Tick;
void f()
{
   MqlTick tick1, tick2; 
   tick1 = _Tick; //1
   /*вычисления*/
   tick2 = _Tick; //2
}
 
A100:

而且,为什么在一个时间间隔内连续两次调用会得到相同的结果?

他们不应该这样做。但对于一个本土人物的测试来说,这很好。
 
A100:

而且,为什么在一个时间间隔内连续两次调用会得到相同的结果?

因为我们只是在谈论没有使用睡眠 的Tester - 99%的EA。

我不能对任意测试器的延迟说什么,因为我从未见过这种模式有什么用。

 
fxsaber:

对于测试者的任意延迟,我不能说什么,因为我从未见过这种模式有什么用。

我只用它来调试处理订单的功能

看看测试者的图表会有多大的斜率变化,也就是说,使用市场订单的交易逻辑会有多大的 "滞后性",这是相当方便的。

 
Sergey Dzyublik:

ME调试器的一个缺陷(build 2370)--在触发断点不是按(F5)继续执行代码,而是实际上再次触发 同一断点而不执行任何代码

回放步骤:
1) 手动设置
两行的断点 " arr.Add()";
2) 开始调试(F5);
3) 使用PCM在新标签中打开<Generic\ArrayList.mqh>嵌套文件。
4) 在函数 "bool CArrayList::Add(T item)" 中找到 "if(m_size==ArraySize(m_items)) "一行,手动设置断点
5) 在 "
ArrayList.mqh "标签中,继续执行代码(F5)。

这将
触发之前 相同的断点,而没有任何实际的代码执行

谢谢你的留言。

纠正的是

 
fxsaber:

因为我们只是在谈论没有使用睡眠 的测试器--99%的EA。

我不能对任意测试器的延迟说什么,因为我从未见过这种模式有什么用。

在不从根本上改变任何东西的情况下,更容易做出(事实上也是如此)那个录音。

SymbolInfoTick( NULL, tick ); //1

将意味着

SymbolInfoTick( Symbol(), tick ); //2

至少不存在复制字符串的问题

 
A100:

在不从根本上改变任何东西的情况下,更容易使(事实上也是如此),进入

将意味着

至少复制线的问题已经不存在了

It's not what he's asking for. He needs the fastest access to MqlTick structure on every tick.

这是一种悖论,可以访问_Symbol ....。但你没有机会接触到

const MqlTick _Tick; // Текущий _Symbol-тик.

尽管MQL语言被定位为开发交易策略的语言....。我不知道如果你不知道当前勾股的价格,还有什么样的TS。

 
Igor Makanu:

最后它还要求一些东西,它需要在每个tick上以最快的速度访问MqlTick结构。

而且有什么问题呢?

SymbolInfoTick( NULL, tick ); //1

不够好吗?告诉我瓶颈在哪里?如果它也很慢,那么开发者有办法内联/优化这样的调用--不需要任何根本性的改变。

 
A100:

有什么不喜欢的

不够好吗?如果它也很慢,那么开发者就有办法内联/优化这样的调用。

是的,它很慢,至少在测试器中是这样,我在测试器中这样写道:https://www.mql5.com/ru/forum/1111/page2749#comment_16487642

在有大量优化器通过的情况下,有一个增益


我不知道如何解释,我不知道如何解释基本的东西......

你是如何编写EA的?- 你用程序式或OOP式编译一个库,每个功能都可以完全转移到另一个项目中,为了确保这一点,你写了Bid,Ask到处都是 - 我的例子。然后你从空白处组装出一个交易策略。开发人员现在提供的是--到处写SymbolInfoDouble()。