错误、漏洞、问题 - 页 2672

 
fxsaber:

只有opt文件中的数据。格式是可用的。

我不想从文件中读取,我已经做了我想要的东西--唯一的文件名--MD5输入参数,像这样。

string getMD5(const SSaveStruct &inpstr)
{
   const uchar key[1]= {0};
   uchar data[],md5[];
   StructToCharArray(inpstr,data);
   CryptEncode(CRYPT_HASH_MD5, data, key, md5);
   string result = "";
   for(int i = 0; i < ArraySize(md5); i++)
      result += StringFormat("%02x", md5[i]);
   return(result);
}

void SaveInputParam()
{
   SSaveStruct savestruct;
   FillSaveStruct(savestruct);
   string fname = "EA_TST//" + getMD5(savestruct) + ".bin";
   int handle = FileOpen(fname,FILE_WRITE|FILE_COMMON|FILE_BIN);
   FileWriteStruct(handle,savestruct);
}

double OnTester()
{

   if(!IS_OPTIMIZATION)
   {
      SSaveStruct savestruct;
      FillSaveStruct(savestruct);
      Print("fname = " + getMD5(savestruct));
      return(AccountInfoDouble(ACCOUNT_BALANCE));
   }

#define  BADTEST() { srand((int)TimeCurrent()); return (-(rand() % 1000)); }
   if(EA_STOP || TesterStatistics(STAT_TRADES) < EA_MIN_TRADEES)  BADTEST();
   SaveInputParam();
   return(AccountInfoDouble(ACCOUNT_BALANCE));
#undef  BADTEST
}

文件被写入,在一个单一的通道中,我看到文件名:fname = 04a19580d36f0a749143211b57efbebc

代码有点重复,但为了在测试不成功的情况下不在优化器结构中填写输入参数 ....但我可能会重写,这不是很好的代码,我不明白为什么我这样做)))。
 
Igor Makanu:

是否有可能从测试员代理那里得到通行证号码?


HH:或者需要一个独特的标识符,从测试期间的每一次通过的文件名--我想把测试期间感兴趣的EA的设置保存在文件中,但需要一些独特的东西来形成一个带有设置的文件名。

通行证号码可以是1024位。

当你在那一行已经有一组参数时,为什么还需要一个通行证号码?

 
Igor Makanu:

我不想从测试器中读取文件,我想我已经做了我想要的东西--唯一的文件名--输入参数的MD5,关于这一点。

文件被写入,在一个单一的通道中,我看到文件名:fname = 04a19580d36f0a749143211b57efbebc

代码有点重复,但为了在测试不成功的情况下不在优化器结构中填写输入参数 ....但我可能会重写,这不是很好的代码,我不会明白为什么我这样做)))。

输入参数的MD5已经被计算出来,并在opt文件的通过记录中。

 
Slava:

如果你在这一行已经有一组参数,为什么还需要一个通行证号码?

我想立即将成功的优化器传递重置为EA设置文件,并在启动EA时自动加载一个.bin文件,而不是.set--这对于同时操作几个TC是必要的。

斯拉瓦

输入参数的MD5已经被计算出来了,并且在opt文件的通过记录中。

我为优化的速度奋斗了近3个月,我想我已经实现了,所以有一个反问。

这是更快的。

1.从优化器中读取带有MD5的opt-file ?

2.或用我的MD5代码进行计算


我怀疑它的计算速度更快,特别是由于所有的输入参数在代码内部都是作为一个结构数组使用的(我优化了大约40个参数)。

 
Igor Makanu:

我想立即将成功的优化器传递重置为EA设置文件,并在启动EA时自动加载一个.bin文件,而不是.set--这对于同时操作几个TC是必要的。

我为优化的速度奋斗了近3个月,我想我已经实现了,所以有一个反问。

这是更快的。

1.从优化器中读取带有MD5的opt-file ?

2.或用我的MD5代码进行计算


我怀疑它的计算速度更快,特别是由于所有的输入参数在代码内部都是作为一个结构数组使用的(我优化了大约40个参数)。

MD5的计算速度更快。

如果你将来不打算使用opt-file,计算MD5

如果你要使用它,最好使用已经计算好的MD5,因为你的计算结果可能(也可能不会)与我们的计算结果一致。

 
Slava:

MD5的读取速度更快。

如果你不打算在未来使用opt-file,请阅读MD5

如果你要使用,最好使用已经计算好的MD5,因为你的计算结果可能与我们的不一致(而且很可能不一致)。

谢谢你!

不打算使用opt-file

SZS: 几周前,我想从一个测试器中初始化MathSrand()https://www.mql5.com/ru/forum/1111/page2657#comment_15165819

在测试员代理中获得带有MD5的Uchar[](井或字符串)也不错--它是唯一的值,你可以初始化MathSrand(),这里我想要唯一的文件名,在TesterStatistics()中给出你的MD5。

 
Sergey Dzyublik:
Bug MT5(build 2323),同一个模板对象B<int>可以在B<void*>类的对象之后创建,但如果在之前创建,会发生编译错误
可能原因是在模板类生成器的缓存中。

谢谢你的帖子,已修复

 

你是如何使用宏的?

恐怖。一个编译时的错误。

小脚本。

void OnStart()
  {
   #define  m 1000;
   ulong n_yes=3*m;  //Тут всё хорошо
   ulong n_no=(3*m); //Тут ошибка: ';' - unexpected token	test2.mq5	27	18
  }
Build 2361,目前是最新的。
 
Aliaksandr Hryshyn:

你是如何使用宏的?

这就是我们的使用方法
#define  m 1000;
 
Igor Makanu:
这就是我们的使用方法

这里的区别是有括号。