// --- если обычное тестирование без оптимизации и визуализацииbool IsUsualTester = (MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_OPTIMIZATION) && !MQLInfoInteger(MQL_VISUAL_MODE));
// --- если не тестирование и не оптимизация, значит видимый графикbool IsVisibleChart = (!IsUsualTester && !MQLInfoInteger(MQL_OPTIMIZATION));
В статье рассматривается идея мультирежимного программирования торговых роботов на MQL5. Используется объектно-ориентированный подход для реализации каждого из режимов. Приводится пример иерархии режимных классов и пример классов для тестирования. Предполагается, что мультирежимное программирование торговых роботов полностью учитывает особенности каждого режима работы MQL5-советника. Для идентификации режимов создаются функции и перечисление.
//true если работа на чарте или в визуальном тестировании, в остальных случаях falsebool CheckMode ()
{
if(MQLInfoInteger(MQL_DEBUG) ||
MQLInfoInteger(MQL_PROFILER) ||
(MQLInfoInteger(MQL_TESTER) && ! MQLInfoInteger(MQL_VISUAL_MODE)) ||
MQLInfoInteger(MQL_OPTIMIZATION) ||
MQLInfoInteger(MQL_FRAME_MODE)) returnfalse;
returntrue;
}
if (ChartID()!=0) {
// Graphical chart presents
// draws on it
}
你能解释一下吗?
你能解释一下吗?
安德鲁,这个主题不对。你需要在另一个主题中找出答案。
安德鲁,这个主题不对。你应该在另一个主题中了解这些事情。
有人有什么想法吗?
也许可以试试这个?
有人有什么想法吗?
Andrei,请查看文章(第 2 节:MQL5 中的模式),也许会有帮助 ))).
你能解释一下吗?
有些人可能觉得这不是正确的分支,但其实很简单:
如果 ChartID 给出了合理的值 - 这意味着在图形用户界面中有它的位置,并且它可以在其中工作,你可以在其中绘图,所以要么在 VISUAL_TESTER 中工作,要么就在终端中工作。
如果 ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) 返回无效句柄,那么我们就在测试器中。(也可能是 MQ VPS - 我没接触过,不知道)。
对有些人来说,这可能是个错误的思路,但其实很简单:
如果 ChartID 给出的结果是合理的--这就意味着在图形用户界面中有它的位置,而且它可以在其中工作,您可以绘制,所以要么使用 VISUAL_TESTER,要么就在终端中工作。
如果 ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) 返回无效句柄,那么我们就在测试器中。(也可能是 MQ VPS - 我没接触过,不知道)。
测试仪也有一个图表,尽管是虚拟的,所以这是一个死胡同。
测试仪也有一个图表,虽然是虚拟的,但这是一条死路
我在那个主题中回答了你(问题是一样的)。
有人有什么想法吗?
我在那个主题中回答了你(同样的问题)。
好吧,你有所有权利。删除离题的地方......有什么问题吗?