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

 

你好,请不要太责备我,我只是在学习这门语言和一般的OOP。

你能告诉我为什么当我试图把分配给ExtATRBuffer[i]=.... 的整个公式相乘时当我乘以1时,图表上显示的是实际值,当我乘以小数点后的0.5时,一些数值在零线上下波动。

我应该怎样做才能避免错误?

我需要得到实际的APR值乘以一个可变的常数 ...

感谢所有回复的人!!!。

//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,limit;
//--- check for bars count
   if(rates_total<=ExtPeriodATR)
      return(0); // not enough bars for calculation
//--- preliminary calculations
   if(prev_calculated==0)
     {
      ExtTRBuffer[0]=0.0;
      ExtATRBuffer[0]=0.0;
      //--- filling out the array of True Range values for each period
      for(i=1;i<rates_total && !IsStopped();i++)
         ExtTRBuffer[i]=MathMax(high[i],close[i-1])-MathMin(low[i],close[i-1]);
      //--- first AtrPeriod values of the indicator are not calculated
      double firstValue=0.0;
      for(i=1;i<=ExtPeriodATR;i++)
        {
         ExtATRBuffer[i]=0.0;
         firstValue+=ExtTRBuffer[i];
        }
      //--- calculating the first value of the indicator
      firstValue/=ExtPeriodATR;
      ExtATRBuffer[ExtPeriodATR]=firstValue;
      limit=ExtPeriodATR+1;
     }
   else limit=prev_calculated-1;
//--- the main loop of calculations
   for(i=limit;i<rates_total && !IsStopped();i++)
     {
      ExtTRBuffer[i]=MathMax(high[i],close[i-1])-MathMin(low[i],close[i-1]);
      ExtATRBuffer[i]=ExtATRBuffer[i-1]+(ExtTRBuffer[i]-ExtTRBuffer[i-ExtPeriodATR])/ExtPeriodATR;

   // ExtATRBuffer[i]=(ExtATRBuffer[i-1]+(ExtTRBuffer[i]-ExtTRBuffer[i-ExtPeriodATR])/ExtPeriodA)*4;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
谢谢大家!帮助理解:测试错误:2019.12.04 14:14:40.097 TestGenerator:不匹配的数据错误(2019.01.21 23:30的高值0.71570没有从最低时间段达到,高价0.71560不匹配。)
 
Ilzadjan Akhmedov:
谢谢大家!帮助理解:测试错误:2019.12.04 14:14:40.097 TestGenerator:不匹配的数据错误(2019.01.21 23:30的高值0.71570没有从最低时间段达到,高价0.71560不匹配。)

加载被测仪器的历史记录(F2)。

 
Artyom Trishkin:

加载被测仪器的历史记录(F2)。

谢谢您的关注!已加载,但现在的摘要是:2019.12.04 16: 00: 20.408 TestGenerator: 不一致的数据错误(2016.03.30 23: 45时超过了体积限制409)。

附加的文件:
 
Ilzadjan Akhmedov:

谢谢您的关注!已下载,但现在的摘要是:2019.12.04 16: 00: 20.408 TestGenerator: 不一致的数据错误(2016.03.30 23: 45时超过了体积限制409)。

对于每个时间段,下载历史记录。

 
Artyom Trishkin:

对于每个时间段,下载历史记录。

这个600美元的顾问,再次做了测试,没有交易。把它交给你,如果你解决了问题,请发送设置

附加的文件:
 
Artyom Trishkin:

尝试使用FileOpen()打开一个不存在的文件...

我读过这方面的文章。唯一的线索可能在于这句话:"要打开的文件的 名称,可能包含子文件夹。如果该文件被打开用于写入,如果没有指定的子文件夹,将被创建。" 但即使在这里说了一些子文件夹,也许它是指在这个目录中的这些子文件夹中,文件将被创建,因为它不是正常写入的。你可以正常写入,如果没有文件,将被创建。我又不是科学家,不可能猜出所有的细节。我甚至仍然不明白许多功能是如何工作的,因为没有功能代码或适当的描述。你知道,他们扔给你一块骨头,而你自己明白它是否可以食用。

 
你好,请帮助我解决这个问题。我连接了信号,一个月一切正常,在月底我的交易没有正确复制到供应商的信号中,现在手数不被尊重。手数可能是什么问题,为什么信号不能正常工作,我在哪里可以看到应该点击什么?
 
Seric29:

我读过这方面的文章。唯一的线索可能在于这句话:"要打开的文件的 名称,可能包含子文件夹。如果该文件被打开用于写入,如果没有指定的子文件夹,将被创建。" 但即使在这里说了一些子文件夹,也许它是指在这个目录中的这些子文件夹中,文件将被创建,因为它不是正常写入的。你可以正常写入,如果没有文件,将被创建。我又不是科学家,不可能猜出所有的细节。我甚至仍然不明白许多功能是如何工作的,因为没有功能代码或适当的描述。 你知道,你抛出某种骨头,你就会明白它是否可以食用。

你如何在早晨迎接太阳?你研究过所有的天文学吗?

标准函数并不是为了弄清其内部工作原理。他们是为了使用它们。而描述是在文档中。

我告诉你使用FileOpen()来创建一个新文件。但是没有......,你必须做一个十页的合唱,而不是仅仅 "拿去用"。嗯,有时你可以对那些帮助你的人说 "谢谢"。

 

你好。

难道没有人要对《图片报》的帖子 说些什么吗?

也许把它放在一个新的主题里是有意义的,这样会有更多人看到它?如果是这样,就请版主把它贴出来...或者自己创造一个?

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2019.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...