ライブラリ: マルチテスター - ページ 23

 
fxsaber:

OnTesterInitでGetSettingsを行い、そこから得られた値をParametersSetRangeを介してsinput変数に渡す。

ありがとうございます。

GetSettings()の 呼び出しを OnTesterInit() に移した ところ、テスターが設定タブに切り替わらなくなりましたが、ローカルエージェントがおかしいようです。

GetSettingsのデータはどこにも使われておらず、ただ関数を呼び出しているだけです。

void OnTesterInit()
  {
   // テスターの設定を取得する
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      // Print(Str);
     }
  }
  
 void  OnTesterDeinit()
  {
  }


 
Sunriser:

地元のエージェントがおかしいんだ。

GetSettings はローカルエージェント(ターミナルが動作しているマシン)でのみ呼び出すことができます。他のマシンでは実行できません。

これが OnTesterInit が唯一の選択肢である理由です。

 
更新された。
 

テストが1回終わるごとに、そのテストに関する情報をファイルに 書き込みたい。

レコード・ブロックはどこに挿入すればいいのでしょうか?ライブラリの中ですか?それともExpert Advisorにのみ実装されているのでしょうか?

ライブラリを使用しない通常のケースでは、ondeinitブロックに挿入しました。ここに挿入する場所はまだ見つかっていません。

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
FileWrite - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Skrypnev:

テストが1回終わるごとに、そのテストに関する情報をファイルに書き出したい

レコード・ブロックはどこに挿入すればいいのでしょうか?ライブラリの中ですか?それともExpert Advisorにのみ実装されているのでしょうか?

ライブラリを使用しない通常のケースでは、ondeinitブロックに挿入しました。ここに挿入する場所はまだ見つかっていません。

実行しているExpert Advisorのソースコードがない場合:EX5のみ、生成されたtstファイルを通して1回の実行から(MultiTester内部で)情報を引き出す必要があります。

ソースがある場合は、Expert Advisor の OnDeinit で Common ファイルにレコードを挿入します。

 
fxsaber:

実行する Expert Advisor のソースコードがなく EX5 のみである場合は、生成された tst ファイルを通して 1 回の実行から(MultiTester 内で)情報を引き出す必要があります。

ソースがある場合は、Expert Advisor の OnDeinit で Common ファイルにレコードを挿入します。

明確なようだが、実装はまだあまり明確ではない。まだよく分かっていない。)

しかし、私が理解する限り、ライブラリファイルの適切な場所に情報を記録するブロックを挿入するだけでは、このケースはそう簡単には解決しないのでは?(つまり、各パスをファイルに保存する準備ができたブロックがない)。

 
fxsaber:

実行する Expert Advisor のソースコードがなく EX5 のみである場合は、生成された tst ファイルを通して 1 回の実行から(MultiTester 内で)情報を引き出す必要があります。

ソースがある場合は、Expert Advisor の OnDeinit で Common ファイルにレコードを挿入します。

ちなみに、なぜか最後のExpert Advisorだけレコードがある。つまり、3つの同じスクリプトが次々にテストされ、3つの異なるファイルにデータを書き込むが、最後の1つだけが自分のファイルに 書き込む。

そこで、さらにExpert Advisorを複製してみたが、やはり最後のExpert Advisorにしか書き込まれない。各Expert AdvisorのOnDeinitで 標準のfilewriteを使ってファイルに書き込む 方法です。

ターミナルログによると、同じものが開かれ、最後のものに書き込まれている。
Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
FileWrite - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Skrypnev:

しかし、私が理解する限り、ライブラリファイルの適切な場所に情報記録ブロックを挿入するだけでは、このケースはそう簡単には解決しないのでは?(つまり、各パスをファイルに保存する準備ブロックがない)。

私は、最適化後にopt-fileから最適なパスを選び出すコンバインを作った。そして、それに基づいてフォワードを作成し、他の最適化ジョブを作成した。

しかし、これは本当に少数の人しかできないことだ。

 
Aleksei Skrypnev:

ところで、なぜか最後のEAだけ録画している。

よくわからない。

 
fxsaber:

私には理解できない。

ライブラリに MultiTester_Example2 というファイルがあります。

私はそれを受け取り、既存の4つのEAに、互いにコピーしただけの同じ3つのEAを追加しました。

それぞれのアドバイザーのondeinitで、例えばadvisor1はファイル1に、advisor2はファイル2に、advisor3はファイル3にレコードを 作成します。

MultiTester_Example2をチャートに投げる。行が走り、終了を示す。記録フォルダに行ってみると、file3という名前の記録ファイルしかない。

(理由はまだわかりません)。

例えばEA4を追加し、テストを実行すると、EA4.-というファイルに出力された記録が表示されます(つまり、file4とfile1,2,3,noのみ)。

つまり、最後のExpert Advisorだけが最後のファイルに書き込まれる。

(つまり、ライブラリか何かを使って OnDeinit が実行されるのは、リストから一番最後の EA で 1 回だけです。 ). (リストの各EAの最後ではありません。)

(その前に、3-4個のEAの情報を1つのファイルに書き込もうとしたのですが、ファイル内の情報も最後のEAのものだけでした。

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
FileWrite - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5