图表描述性特性

ChartSetString/ChartGetString函数可读取和设置图表的以下字符串特性:

标识符

说明

CHART_COMMENT

图表注释文本

CHART_EXPERT_NAME

图表上运行的 EA 交易名称(只读)

CHART_SCRIPT_NAME

图表上运行的脚本名称(只读)

在图表窗口中显示消息一章中,我们曾了解过Comment函数,该函数用于在图表左上角显示文本消息。CHART_COMMENT 特性可以读取当前图表注释:ChartGetString(0, CHART_COMMENT)。还可以通过向该函数传递其他图表的标识符,访问这些图表的注释。通过使用 ChartSetString,如果知道图表的ID,则可以修改当前图表及其他图表的注释:ChartSetString(ID, CHART_COMMENT, "text")

如果有 EA 交易或/和脚本正在任意图表上运行,我们可以通过以下调用获取它们的名称:ChartGetString(ID, CHART_EXPERT_NAME)ChartGetString(ID, CHART_SCRIPT_NAME)

脚本 ChartList3.mq5ChartList2.mq5 类似,可在图表列表中补充有关EA 交易和脚本的信息。后续我们将为其添加有关指标的信息。

void ChartList()
{
   const long me = ChartID();
   long id = ChartFirst();
   int count = 0used = 0tempexperts = 0scripts = 0;
 
   Print("Chart List\nN, ID, Symbol, TF, *active");
   // keep iterating over charts until there are none left
   while(id != -1)
   {
      temp =0;// sign of MQL programs on this chart
      const string header = StringFormat("%d %lld %s %s %s",
         countidChartSymbol(id), PeriodToString(ChartPeriod(id)),
         (id == me ? " *" : ""));
      // fields: N, id, symbol, timeframe, label of the current chart
      Print(header);
      string expert = ChartGetString(idCHART_EXPERT_NAME);
      string script = ChartGetString(idCHART_SCRIPT_NAME);
      if(StringLen(expert) > 0expert = "[E] " + expert;
      if(StringLen(script) > 0script = "[S] " + script;
      if(expert != NULL || script != NULL)
      {
         Print(expert" "script);
         if(expert != NULLexperts++;
         if(script != NULLscripts++;
         temp++;
      }
      count++;
      if(temp > 0)
      {
         used++;
      }
      id = ChartNext(id);
   }
   Print("Total chart number: "count", with MQL-programs: "used);
   Print("Experts: "experts", Scripts: "scripts);
}

以下是该脚本的输出示例。

Chart List
N, ID, Symbol, TF, *active
0 132358585987782873 EURUSD M15 
1 132360375330772909 EURUSD H1  *
 [S] ChartList3
2 132544239145024745 XAUUSD H1 
3 132544239145024732 USDRUB D1 
4 132544239145024744 EURUSD H1 
Total chart number: 5, with MQL-programs: 1
Experts: 0, Scripts: 1

如图所示,当前仅有一个脚本正在执行。