新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1418

 
Valeriy Yastremskiy:

我更喜欢布尔选项

我不太确定这句话在这里如何适用。

如果不是太麻烦的话,我可以对我的代码进行调整吗?

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
为什么,维塔利写了好的代码。他的i++在正确的地方。这个代码是如何工作的?
 
MakarFX:

你能告诉我如何使Print() 在数值变化时打印一次吗?

当什么值被改变时?

 
MakarFX:

我不太确定这在这里如何适用

如果你不介意的话,我的代码可以调整一下吗?

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol);printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

我不太确定这在这里如何适用

如果不是太麻烦的话,我的代码能不能被改正?

你没有说明在哪里以及如何调用这个结构的细节。

在这种情况下,如果你已经找到了必要的图表,而且是唯一的图表,那么就休息一下;立即休息,这样你就不会强迫终端。

你找到了图表,记住了它,就不会再调用这个结构。可能最好是在一个事件中调用它,尽管这取决于任务。

 
Aleksei Stepanenko:

当什么值发生变化时?

当活动图表窗口发生变化时,该函数会打印活动图表符号。

Vitaly Muzichenko:

你没有指定在哪里以及如何调用这个结构的细节。

在这种情况下,如果你已经找到了必要的图表,而且只有一个图表,那么就进行休息;这样,你就不会强迫终端。

你找到了图表,记住了它,就不会再调用这个结构。可能是在事件中调用它的最好方法,虽然这取决于任务。

对不起,该函数是在...

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
      string symbol01;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            symbol01=ChartSymbol(currChart);      Print(symbol01);
           } 
         currChart=ChartNext(currChart);  i++;
        }
//--- 
  }
Valeriy Yastremskiy:

不幸的是,它也不起作用。无休止地打印(

 
MakarFX:

当活动图表窗口发生变化时,该函数会打印活动图表符号。

对不起,该函数是在...

不幸的是,它也不起作用。它无限地打印(

这个怎么样?- 只有在打印时它才会发出一个信号

//+------------------------------------------------------------------+
//|                                                         0001.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
int ticks_to_close=1; // количество тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   if(!EventSetTimer(1))
      Alert("Error create timer!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   string symbol01;
   long currChart=ChartFirst();
   int i=0;
   while(currChart>=0)
     {
      if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true)
        {
         symbol01=ChartSymbol(currChart);
           {
            if(ticks_to_close>0)
              {
               ticks_to_close--;
               Print(symbol01);
              }
           }
        }
      currChart=ChartNext(currChart);
      i++;
     }
//---
  }
//+------------------------------------------------------------------+
 
SanAlex:

这个怎么样?- 只有在打印时它才会发出一个信号

错了。它在启动时打印一次。在改变时间表时不做任何事情。
 
MakarFX:

当活动图表窗口发生变化时,该函数会打印活动图表符号。

对不起,该函数是在...

不幸的是,它也不起作用。它无限地打印(

或者你最好更仔细地阅读文档?

图表_带至顶部

在所有其他图表的顶部显示图表

boolw/o


这意味着这个属性是只允许写的。而你正试图阅读它.........

另外,你没有对问题做出完整的回答

它是一个脚本或一个指标。
 
MakarFX:

当活动图表窗口发生变化时,该函数会打印活动图表符号。

对不起,该函数是在...

不幸的是,它也不起作用。它无休止地打印(

如果我不明白发生了什么事,我就把所有的东西都打印出来,有时会有帮助。而且我不明白 "冰雹 "的本质。该条件始终是真实的。

string symbol, printsimbol="";
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart);if(printsimbol!=symbol) Print(symbol," ",ChartSymbol(currChart)," ",printsimbol,
" ",currChart," ",ChartFirst()," ",ChartNext(currChart)," ",ChartGetInteger(currChart,CHART_BRING_TO_TOP,0));
printsimbol=symbol;
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
原因: