如何使用指标计数以及如何在 MQL4 中将关键事件转换为代码

How to use Indicator count and how to turn key event into code in MQL4

我刚刚开始学习编码,几乎没有什么问题。有人可以告诉我如何做这件事吗;

1- 如何防止我的自定义指标在图表上重复?如果它已经在图表上并且我会再次将它放到图表上,我希望它检测到第一个并中止启动第二个。

类似这样的事情:但是工作 :)

int OnInit()  
{   
    int indicators_total = ChartIndicatorsTotal(0,0);
    for(int i = 0; ndicators_total > i; i++)
      {
        if(ChartIndicatorName(0,0,i)==IndicatorName)
        return(INIT_FAILED); (AND THEN EXIT)
      }
}

2 - 如何检测图表上是否存在多个同名指标?

3 - 如果指标“x”在图表上不存在 (=0),如何编写“if”语句来做某事?

类似这样的事情:但是工作 :)

 if(IndicatorName==0)
    {
     Print("INDI ",IndicatorName, " NOT DETECTED");
    }

4 - 有没有办法将键盘事件(F11 - 全屏)放入代码中?为了让我的自定义指标能够检测全屏何时打开,就像“图表刻度”一样 ChartGetInteger(0,CHART_SCALEFIX); ?

欢迎来到 SOF。看下面的counter。这个想法是计算图表上的指标数量。您要添加的副本将在此列表中出现一次(此副本)或多次(您正在尝试向现有副本添加新副本)。此示例适用于主图表(子窗口 = 0)。

  int OnInit()
    {
     const string indName = WindowExpertName(); // name of your indicator
     int counter=0; 
     for(int i=ChartIndicatorsTotal(0,0)-1;i>=0;i--)
       {
        //printf("%i %s: i=%d/%d, %s",__LINE__,__FILE__,i,ChartIndicatorsTotal(0,0),ChartIndicatorName(0,0,i));
        if(ChartIndicatorName(0,0,i)==indName)
           counter++;
       }
     if(counter>1)
       {
        Print("already exist!");
        return INIT_FAILED;
       }
  //--- indicator buffers mapping
     // do all other indicator preparation work here
  //---
     return(INIT_SUCCEEDED);
    }