エラー、バグ、質問 - ページ 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
}

ファイルが書き込まれ、1パスでファイル名:fname = 04a19580d36f0a749143211b57efbebc が表示されます。

のコードは少し繰り返しになりますが、テストが失敗した場合に入力パラメータでオプティマイザ構造体を埋めないようにするためです......。でも、多分書き直すと思います。いい加減なコードなので、なぜそのようにしたのか理解できないでしょう )))
 
Igor Makanu:

は、テスターエージェントからパス番号を取得することは可能でしょうか?


HH: または、ファイル名のためにテスト中の各パスから一意の識別子が必要 - 私はテスト中に興味のあるEAの設定をファイルに保存したいのですが、設定でファイル名を形成するために何かユニークなものが必要です。

パスナンバーは1024ビットとすることができます。

その行にはすでにパラメータが設定されているのに、なぜパスナンバーが必要なのでしょうか?

 
Igor Makanu:

私はファイルからテスターから読みたくない、私はすでに私が欲しかったものをやったと思う - ユニークなファイル名 - MD5入力パラメータは、このことについて。

ファイルが書き込まれ、1パスでファイル名:fname = 04a19580d36f0a749143211b57efbebc が表示されます。

のコードは少し繰り返しになりますが、テストが失敗した場合に入力パラメータでオプティマイザ構造体を埋めないようにするためです......。でも、多分書き直すと思います。いい加減なコードなので、なぜそのようにしたのか理解できないでしょう )))

入力パラメータのMD5はすでに計算されており、optファイルのパスレコードにあります。

 
Slava:

この行にすでにパラメータが設定されているのに、なぜパスナンバーが必要なのでしょうか?

EA起動時に、.setの代わりに.binファイルを自動的にロードし、オプティマイザが成功したパスを直ちにEA設定ファイルにリセットしたい。

スラバ

入力パラメータのMD5はすでに計算されており、optファイルのパスレコードにあります。

最適化のスピードのために3ヶ月近く格闘し、達成できたと思うので、逆に質問です。

の方が速い。

1.オプティマイザからMD5でopt-fileを読み込む?

2.または、私のMD5コードで計算する


特に、すべての入力パラメータを構造体の配列としてコード内部で使用するため、計算が速くなるのではないかと思います(約40個のパラメータを最適化します)。

 
Igor Makanu:

EA起動時に、.setの代わりに.binファイルを自動的にロードし、オプティマイザが成功したパスをすぐにEA設定ファイルにリセットしたい。

最適化のスピードのために3ヶ月近く格闘し、達成できたと思うので、逆に質問です。

の方が速い。

1.オプティマイザからMD5でopt-fileを読み込む?

2.または、私のMD5コードで計算する


特に、すべての入力パラメータを構造体の配列としてコード内部で使用するため、計算が速くなるのではないかと思います(約40個のパラメータを最適化します)。

MD5の方が計算が速い。

今後opt-fileを使用しない場合は、MD5を計算します。

もし使うのであれば、すでに計算済みのMD5を使う方が良いでしょう。あなたの計算は私たちの計算と一致しないかもしれません(おそらく一致しないでしょう)。

 
Slava:

MD5の方が読み取りが早い。

optファイルを今後使用するつもりがない場合は、MD5を読んでください。

もし使用するのであれば、すでに計算されているMD5を使用する方が良いでしょう。あなたの計算は私たちの計算と一致しないかもしれません(ほとんどの場合一致しないでしょう)。

ありがとうございました。

オプトファイルは使用しない

SZS: 数週間前、私はテスターから MathSrand() を初期化することを探していました。https://www.mql5.com/ru/forum/1111/page2657#comment_15165819

テスターエージェントで MD5 (ウェルまたは文字列) を含む uchar[] を取得するのは悪くないでしょう。これはユニークな値なので、MathSrand() を初期化して、ユニークなファイル名が欲しい場合は、TesterStatistics() で MD5 を与えてください。

 
Sergey Dzyublik:
MT5(build2323)で、B<void*>クラスのオブジェクトの後に同じテンプレートオブジェクトB<int>を作成できるが、その前に作成するとコンパイルエラーに なるバグ。
おそらく、テンプレートクラス生成キャッシュの働きが原因だと思われます。

投稿ありがとうございます、修正しました

 

マクロはどのように使うのですか?

ホラーです。コンパイル時のエラーです。

小さな文字。

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:
これが私たちの使い方です

そこで違うのは、括弧の有無です。