//+------------------------------------------------------------------+//| ChartNext.mq5 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- переменные для идентификаторов графиковlong currChart,prevChart=ChartFirst();
int i=0,limit=100;
Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart);
while(i<limit)// у нас наверняка не больше 100 открытых графиков
{
currChart=ChartNext(prevChart); // на основании предыдущего получим новый графикif(currChart<0) break; // достигли конца списка графиковPrint(i,ChartSymbol(currChart)," ID =",currChart);
prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
i++;// не забудем увеличить счетчик
}
}
//+------------------------------------------------------------------+
为什么?
为了看到这个逻辑。
把它打印出来--结果如上所述
打印出来的文件在哪里?结果在哪里呢?我没有看到--你忘了附上打印前和打印后的资料。
在论坛中添加图片时没有显示标题
我正在填写 "标题 "一栏。图片显示出来了,但标题没有显示出来
图形在简介中的不同顺序
如果你在一个简介中的多个图形中添加一个新的图形,并把它移到中间,例如
然后在随后列出的图表中,使用了脚本的
它将被移到最后一个,尽管它是在中间。
而如果你重新加载MT,它就会像图中那样,在新的枚举过程中处于中间位置
结果是重装前和重装后的行为不同。逻辑在哪里?
我们已经添加了 "EURAUD"、"EURCAD"、"EURUSD "和 "NZDUSD",并激活了第一个图表 - "EURAUD"
"NZDUSD "被放在 "EURAUD "之后,我们激活第一个图表--"EURAUD"
重新加载后(第一个图表仍然有效 - "EURAUD")。
一切都很有意义。只有在脚本被调用之前。
你必须仔细选择活动图表。下一个图形 是从活动的图形 开始计算的。一切都很有意义。
而这背后的逻辑是什么?如果重启前有一个序列2-3-4-5,重启后又有一个2-5-3-4?
在重新加载之前,图形会按照创建的顺序 写入配置文件中,即1-2-3-4。在重新加载之前,配置文件被重写(图形运动的最后修订被写入其中,即1-4-2-3-3)。重启后,图形按照图形运动的最后修订版重新绘制(创建),即1-4-2-3-3。
因此在重启后,由于图表是按照1-4-2-3的顺序创建的,这意味着ChartNext() 将准确返回这个顺序。
在重新加载之前,图形会按照创建的顺序 写入配置文件中,即1-2-3-4。在重新加载之前,配置文件被重写(图形运动的最后修订被写入其中,即1-4-2-3-3)。重新加载后,根据图形运动的最后一次修订,即1-4-2-3-3,重新绘制(创建) 图形。
问题不在于它目前是如何实现的(可以用不同的方式实现),而在于重载前和重载后(其他条件都相同)的结果是不同的,这意味着逻辑被打破了。