Arrays 如何使用scrypt为mql5最小化图表列表?

Arrays 如何使用scrypt为mql5最小化图表列表?,arrays,charts,mql,mql5,metatrader5,Arrays,Charts,Mql,Mql5,Metatrader5,在码头上打开的图表很少,例如:澳元CAD、DKKSEK、澳元日元、欧元ZAR、美元捷克克朗、美元瑞士法郎 还有一系列目标图表:丹麦克塞克、欧元、美元兑瑞士法郎 如何最小化除目标图表的图表窗口之外的所有图表窗口?void loopOverCharts()//在所有图表上循环 void loopOverCharts()//loop over all the charts { long currChart,prevChart=ChartFirst(); int i=0,limit=1

在码头上打开的图表很少,例如:澳元CAD、DKKSEK、澳元日元、欧元ZAR、美元捷克克朗、美元瑞士法郎

还有一系列目标图表:丹麦克塞克、欧元、美元兑瑞士法郎

如何最小化除目标图表的图表窗口之外的所有图表窗口?

void loopOverCharts()//在所有图表上循环
void loopOverCharts()//loop over all the charts
  {
   long currChart,prevChart=ChartFirst(); 
   int i=0,limit=100; 
   processChart(prevChart);
   while(i<limit)
     { 
      currChart=ChartNext(prevChart);
      if(currChart<0) break;
      processChart(currChart);
      prevChart=currChart;
      i++;
     }
  }
void processChart(const long chartId)// process each chart
  {
   const string arrayOfSymbols[]={DKKSEK, EURZAR, USDCHF);
   //going over array of symbols to figure out whether need to minimize of not
   bool symbolToMinimize=true;
   for(int i=ArraySize(arrayOfSymbols)-1;i>=0;i--)
     {
      if(ChartSymbol(chartId)==arrayOfSymbols[i])
        {
         symbolToMinimize=false;
         break;
        }
     }
   //if do not have chart symbol in the list - minimize it
   if(symbolToMinimize)
       ChartSetInteger(chartId,CHART_IS_MINIMIZED,true);
  }
{ 长currChart,prevChart=ChartFirst(); int i=0,极限=100; 过程图(prevChart);
while(i最小化图表在MQL5中不再有效。最好的办法是迭代图表并关闭不需要的图表,同时将确实需要的图表放在顶部。下面是一个示例

#define forEachInArray(TYPE, VAR, ARRAY) TYPE VAR;int SIZE##VAR=ArraySize(ARRAY);\
   for(int I##VAR=0;(I##VAR<SIZE##VAR)&&(((VAR=ARRAY[I##VAR])==NULL)||true);I##VAR++)
#define forEachChartId(VAR) \
   for(long VAR=ChartFirst();VAR>=0;VAR=ChartNext(VAR))


#include <charts/chart.mqh>
void OnStart()
{
   string targets[] = {"EURUSD", "GBPJPY", "EURCAD"};
   forEachChartId(id) {
      if(id == ChartID())
         continue;
      chart_manage(id, targets);
   }
   chart_manage(ChartID(), targets);
}

void chart_manage(long id, string &targets[])
{
   CChart chart;
   chart.Attach(id);
   forEachInArray(string, target, targets) {
      if(chart.Symbol() == target) {
         chart.BringToTop();
         chart.Detach();
         break;
      }
   }
}
#定义数组(类型、变量、数组)类型变量;int SIZE##VAR=ArraySize(数组)\
for(int I#VAR=0;(I#VAR=0;VAR=ChartNext(VAR))
#包括
void OnStart()
{
字符串目标[]={“欧元兑美元”、“英镑兑日元”、“欧元兑加元”};
forEachChartId(id){
如果(id==ChartID())
继续;
管理图表(id、目标);
}
图表管理(ChartID(),目标);
}
无效图表管理(长id、字符串和目标[])
{
CChart图;
图表。附上(id);
ForEachArray(字符串、目标、目标){
if(chart.Symbol()==目标){
chart.bringtop();
chart.Detach();
打破
}
}
}

请记住始终关闭脚本在上一次运行的图表。

ChartSetInteger(chartId,chart\u最小化,true);
对最新版本不起任何作用,
winapi
winapi
)也不起作用:(这很遗憾。在这种情况下,除非MQ修复它