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

 
Yevhenii Levchenko:
报价是否存储在测试者/历史文件夹中?

没有。

\history\downloads\symbol\*.dat--引言档案。

\history\server\*.hst - 引述。

\ytester\history\*.fxt - 每次启动测试或优化时从*.hst文件生成。

关于交易、自动交易系统和策略测试的论坛

向MT4开发者提问:测试器文件

Sergey Basov, 2016.01.14 07:25

我不是MT4的开发者,但我可以根据个人经验回答。

删除它们不会影响任何事情。它们只会在下次测试或优化时再次生成。

报价被存储在*.hst文件中,测试人员从这些文件中生成*.fxt文件,而且每次都是重新生成的。


 
Sergey Basov:

没有。

\history\downloads*.dat--引言的存档。

\history\server\*.hst - 引述。

\检验员/历史*.fxt -每次运行测试 或优化时从*.hst文件中生成


这种东西在启动时给硬盘带来了很大的压力......如果测试员每次都重新生成,为什么不删除它?有什么办法可以设置吗?

 
Nauris Zukas:

你好!我想获得当前月份的开盘时间,但得到一个错误4074(ERR_NO_MEMORY_FOR_HISTORY)。同样有趣的是,如果我从6月1日开始测试,它是正确的,但从6月2日开始就会出现错误。如何解决这个月的问题?

你好!

在用另一个经纪人的报价进行测试时,我面临同样的错误4074(ERR_NO_MEMORY_FOR_HISTORY)。而且这也不是我使用的第一个第三方报价。我在其他地方没有遇到这种错误。出错的原因是什么,如何解决,也许有人已经想出了办法?

 

为什么mt5中最简单的代码与mt4的工作方式完全不同?例如,以下代码,计算mt4 muwings 的平均缓冲值。

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...在MT5中不起作用。为了使它以或多或少类似的方式工作(通过直觉方法),你需要这样做。

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

然后,前7个缓冲区显示出一些禁止性的数值。一切进一步的工作似乎都很正常。我的下巴因为这样的小事而收紧了)。

请告知如何正确解决这个问题?

 

添加了 计算之间的评论,一切都他妈的重新绘制 :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
这有什么大不了的?
 
我不知道如何用iFractal写这样的条件?如果。
第一分形_上< 第二 分形_上 然后.....
而下分形的情况也一样
 
Vladimir Baskakov:
我不知道如何用iFractal写这样的条件?如果。
第一分形_上< 第二分形_上 然后.....
和下分形的情况一样

周末。愚弄...

 
Vladimir Baskakov:
我不知道如何用iFractal写这样的条件?如果。
第一分形_上< 第二分形_上 然后.....
和下分形的情况一样

了准备,这就是你寻找分形的方法。

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

你需要调用2次来找到第一个分形和随后的Up,大致是这样的。

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

添加了计算之间的评论,一切都他妈的重新绘制 :D

有什么诀窍?

ArraySetAsSeries(true)用于指标缓冲区。

 
Igor Makanu:

从现成的,这就是你寻找分形的方法。

你需要调用你2次,找到第一个分形和下一个Up,像这样。

谢谢,它起作用了,只是满足了一个条件。

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

而我需要

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

而且由于某种原因,我不能用它开仓。

原因: