获取图表列表
MQL 程序可以使用 ChartFirst和 ChartNext 函数获取终端中打开的图表列表(包括窗口和 图形对象)。
long ChartFirst()
long ChartNext(long chartId)
ChartFirst函数返回客户端终端中第一个图表的标识符。MetaTrader 5 维护着所有图表的内部列表,其顺序可能与屏幕显示不同,例如在窗口标签页最大化时的顺序。特别是,该列表中的顺序可能会因拖动选项卡、分离窗口和固定窗口而发生变化。加载终端后,书签的可见顺序与内部列表视图保持一致。
ChartNext函数返回具有指定 chartId 的图表之后的图表的 ID。
与其他用于操作图形的函数不同,ChartId参数中的 0 值并非指向当前图表,而是表示列表起始位置。换言之,调用 ChartNext(0)等同于调用 ChartFirst。
如果到达列表末尾,该函数返回 - 1。
ChartList1.mq5脚本会将图表列表输出到日志中。主要工作由 ChartList函数完成,该函数在OnStart 中被调用。在函数的起始部分,我们使用 ChartID 获取当前图表的标识符,然后在列表中用星号对其进行标记。最后会输出图表的总数。
void OnStart()
{
ChartList();
}
void ChartList()
{
const long me = ChartID();
long id = ChartFirst();
// long id = ChartNext(0); - analogue of calling ChartFirst()
int count = 0, used = 0;
Print("Chart List\nN, ID, *active");
// keep iterating over charts until there are none left
while(id != -1)
{
const string header = StringFormat("%d %lld %s",
count, id, (id == me ? " *" : ""));
// fields: N, id, label of the current chart
Print(header);
count++;
id = ChartNext(id);
}
Print("Total chart number: ", count);
}
|
以下显示的是一个结果示例。
Chart List
N, ID, *active
0 132358585987782873
1 132360375330772909 *
2 132544239145024745
3 132544239145024732
4 132544239145024744
Total chart number: 5
|