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

 
Maxim Kuznetsov #:

if (ChartID()!=0) {

    // Graphical chart presents
    // draws on it

}

你能解释一下吗?

 
Andrey Dik #:

你能解释一下吗?

安德鲁,这个主题不对。你需要在另一个主题中找出答案。

 
Artyom Trishkin #:

安德鲁,这个主题不对。你应该在另一个主题中了解这些事情。

我们在讨论 mql5 的特殊性,所以这个主题是对的。
 
Andrey Dik #:

有人有什么想法吗?

也许可以试试这个?

 // --- если обычное тестирование без оптимизации и визуализации
bool IsUsualTester = (MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_OPTIMIZATION) && !MQLInfoInteger(MQL_VISUAL_MODE));

 // --- если не тестирование и не оптимизация, значит видимый график
bool IsVisibleChart = (!IsUsualTester && !MQLInfoInteger(MQL_OPTIMIZATION));
 
Andrey Dik #:

有人有什么想法吗?

Andrei,请查看文章(第 2 节:MQL5 中的模式),也许会有帮助 ))).

Программируем режимы работы советника с помощью ООП
Программируем режимы работы советника с помощью ООП
  • www.mql5.com
В статье рассматривается идея мультирежимного программирования торговых роботов на MQL5. Используется объектно-ориентированный подход для реализации каждого из режимов. Приводится пример иерархии режимных классов и пример классов для тестирования. Предполагается, что мультирежимное программирование торговых роботов полностью учитывает особенности каждого режима работы MQL5-советника. Для идентификации режимов создаются функции и перечисление.
 
Andrey Dik #:

你能解释一下吗?

有些人可能觉得这不是正确的分支,但其实很简单:

如果 ChartID 给出了合理的值 - 这意味着在图形用户界面中有它的位置,并且它可以在其中工作,你可以在其中绘图,所以要么在 VISUAL_TESTER 中工作,要么就在终端中工作。

如果 ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) 返回无效句柄,那么我们就在测试器中。(也可能是 MQ VPS - 我没接触过,不知道)。

 
Maxim Kuznetsov #:

对有些人来说,这可能是个错误的思路,但其实很简单:

如果 ChartID 给出的结果是合理的--这就意味着在图形用户界面中有它的位置,而且它可以在其中工作,您可以绘制,所以要么使用 VISUAL_TESTER,要么就在终端中工作。

如果 ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) 返回无效句柄,那么我们就在测试器中。(也可能是 MQ VPS - 我没接触过,不知道)。

测试仪也有一个图表,尽管是虚拟的,所以这是一个死胡同。

 
Andrey Dik #:

测试仪也有一个图表,虽然是虚拟的,但这是一条死路

我在那个主题中回答了你(问题是一样的)。

 
Andrey Dik #:

有人有什么想法吗?

//true если работа на чарте или в визуальном тестировании, в остальных случаях false
bool CheckMode ()
{
  if(MQLInfoInteger(MQL_DEBUG)        ||
     MQLInfoInteger(MQL_PROFILER)     ||
    (MQLInfoInteger(MQL_TESTER) && ! MQLInfoInteger(MQL_VISUAL_MODE)) ||
     MQLInfoInteger(MQL_OPTIMIZATION) ||
     MQLInfoInteger(MQL_FRAME_MODE)) return false;

  return true;
}
 
Artyom Trishkin #:

我在那个主题中回答了你(同样的问题)。

好吧,你有所有权利。删除离题的地方......有什么问题吗?