ライブラリ: シングルテスター・キャッシュ - ページ 3

 

2 問題

Print(SingleTesterCache.Summary.ToString())コマンド;

他のExpert Advisorなどでテストしてみましたが、間違った統計が出ます。

バリアント1

LO      0       23:58:34.935    Core 1  2020.12.29 23:59:59   bars = 0
FF      0       23:58:34.935    Core 1  2020.12.29 23:59:59   ticks = 0
JP      0       23:58:34.935    Core 1  2020.12.29 23:59:59   symbol =  
CE      0       23:58:34.935    Core 1  2020.12.29 23:59:59   initial_deposit = 0.0
EP      0       23:58:34.935    Core 1  2020.12.29 23:59:59   withdrawal = 0.0
HH      0       23:58:34.935    Core 1  2020.12.29 23:59:59   profit = 0.0
HN      0       23:58:34.935    Core 1  2020.12.29 23:59:59   grossprofit = 0.0
GG      0       23:58:34.935    Core 1  2020.12.29 23:59:59   grossloss = 0.0
RN      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxprofit = 0.0
HH      0       23:58:34.935    Core 1  2020.12.29 23:59:59   minprofit = 2.121995791459338 e-314
RO      0       23:58:34.935    Core 1  2020.12.29 23:59:59   conprofitmax = 1.22485
IK      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxconprofit = 2.659058588082234 e-312
CD      0       23:58:34.935    Core 1  2020.12.29 23:59:59   conlossmax = 6.951846319652696 e-310
CP      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxconloss = 0.0
FK      0       23:58:34.935    Core 1  2020.12.29 23:59:59   balance_min = 1.778636325028488 e-322
OM      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxdrawdown = 6.951582466168817 e-310
OS      0       23:58:34.935    Core 1  2020.12.29 23:59:59   drawdownpercent = 6.951844503800728 e-310
CH      0       23:58:34.935    Core 1  2020.12.29 23:59:59   reldrawdown = 3.458459520888726 e-323
NS      0       23:58:34.935    Core 1  2020.12.29 23:59:59   reldrawdownpercent = -nan
RI      0       23:58:34.935    Core 1  2020.12.29 23:59:59   equity_min = 4.120368567481494 e-310
NE      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxdrawdown_e = 0.0
OM      0       23:58:34.935    Core 1  2020.12.29 23:59:59   drawdownpercent_e = 0.0
PK      0       23:58:34.935    Core 1  2020.12.29 23:59:59   reldrawdown_e = 2.659058580572436 e-312
GO      0       23:58:34.935    Core 1  2020.12.29 23:59:59   reldrawdownpercnt_e = 4.450572116172598 e-308
GS      0       23:58:34.935    Core 1  2020.12.29 23:59:59   expected_payoff = 9.758620965830218 e-312
DD      0       23:58:34.935    Core 1  2020.12.29 23:59:59   profit_factor = 6.641883604895093 e-310
IG      0       23:58:34.935    Core 1  2020.12.29 23:59:59   recovery_factor = 0.0
CQ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   sharpe_ratio = 0.0
CF      0       23:58:34.935    Core 1  2020.12.29 23:59:59   margin_level = -nan
MO      0       23:58:34.935    Core 1  2020.12.29 23:59:59   custom_fitness = 1.778636325028488 e-322
RI      0       23:58:34.935    Core 1  2020.12.29 23:59:59   deals = -1533096544
GO      0       23:58:34.935    Core 1  2020.12.29 23:59:59   trades = 32759
HF      0       23:58:34.935    Core 1  2020.12.29 23:59:59   profittrades = 16383
HO      0       23:58:34.935    Core 1  2020.12.29 23:59:59   losstrades = 0
MJ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   shorttrades = -1
CM      0       23:58:34.935    Core 1  2020.12.29 23:59:59   longtrades = -1
KE      0       23:58:34.935    Core 1  2020.12.29 23:59:59   winshorttrades = -1
KQ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   winlongtrades = -1
QH      0       23:58:34.935    Core 1  2020.12.29 23:59:59   conprofitmax_trades = -1534783007
PF      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxconprofit_trades = 32759
ML      0       23:58:34.935    Core 1  2020.12.29 23:59:59   conlossmax_trades = 0
IE      0       23:58:34.935    Core 1  2020.12.29 23:59:59   maxconloss_trades = 0
HQ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   avgconwinners = 0
CI      0       23:58:34.935    Core 1  2020.12.29 23:59:59   avgconloosers = 0
QQ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   ghpr = 6.951582202014298 e-310
HD      0       23:58:34.935    Core 1  2020.12.29 23:59:59   ghprpercent = 8.082419900316952 e-320
LE      0       23:58:34.935    Core 1  2020.12.29 23:59:59   ahpr = 6.951582466171288 e-310
GP      0       23:58:34.935    Core 1  2020.12.29 23:59:59   ahprpercent = 2.470328229206233 e-323
II      0       23:58:34.935    Core 1  2020.12.29 23:59:59   zscore = 6.951582382832739 e-310
QS      0       23:58:34.935    Core 1  2020.12.29 23:59:59   zscorepercent = 0.0
PD      0       23:58:34.935    Core 1  2020.12.29 23:59:59   lrcorr = 0.0
CR      0       23:58:34.935    Core 1  2020.12.29 23:59:59   lrstderror = 3.162020133383978 e-322
GM      0       23:58:34.935    Core 1  2020.12.29 23:59:59   symbols = 391475719
RG      0       23:58:34.935    Core 1  2020.12.29 23:59:59   corr_prf_mfe = 2.659058588536774 e-312
FP      0       23:58:34.935    Core 1  2020.12.29 23:59:59   corr_prf_mae = 6.951582431904475 e-310
LJ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   corr_mfe_mae = 1.934147039389014 e-315
RJ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   mfe_a = 6.951582173927753 e-310
KS      0       23:58:34.935    Core 1  2020.12.29 23:59:59   mfe_b = 0.0
ID      0       23:58:34.935    Core 1  2020.12.29 23:59:59   mae_a = 8.538950297007383 e-300
LR      0       23:58:34.935    Core 1  2020.12.29 23:59:59   mae_b = 0.0
ND      0       23:58:34.935    Core 1  2020.12.29 23:59:59   holding_time_min = 00:00:00
PN      0       23:58:34.935    Core 1  2020.12.29 23:59:59   holding_time_max = 00:00:00
GQ      0       23:58:34.935    Core 1  2020.12.29 23:59:59   holding_time_avr = 00:00:00

選択肢 2

2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   bars = -1
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   ticks = 0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   symbol = 䆇樇翷
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   initial_deposit = 6.951844503800728 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   withdrawal = 3.458459520888726 e-323
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   profit = -nan
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   grossprofit = 9.568778329205075 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   grossloss = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxprofit = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   minprofit = 3.864959344282877 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   conprofitmax = 3.862032339566677 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxconprofit = 1.075317587769853 e-311
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   conlossmax = 9.05495701890495 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxconloss = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   balance_min = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxdrawdown = -nan
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   drawdownpercent = 1.778636325028488 e-322
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   reldrawdown = 6.951533981725193 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   reldrawdownpercent = 1.335089302104764 e-307
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   equity_min = -nan
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxdrawdown_e = -nan
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   drawdownpercent_e = 6.951533898402849 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   reldrawdown_e = 1.073729870228428 e-311
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   reldrawdownpercnt_e = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   expected_payoff = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   profit_factor = 3.864959344915281 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   recovery_factor = 9.881312916824931 e-324
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   sharpe_ratio = 3.864959351792675 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   margin_level = 9.054957018885978 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   custom_fitness = 3.864959359539624 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   deals = 1780533352
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   trades = 32759
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   profittrades = 1772945315
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   losstrades = 32759
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   shorttrades = 1780534738
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   longtrades = 32759
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   winshorttrades = 1775188141
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   winlongtrades = 32759
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   conprofitmax_trades = 16359
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxconprofit_trades = 0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   conlossmax_trades = 1780534738
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   maxconloss_trades = 32759
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   avgconwinners = 5
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   avgconloosers = 0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   ghpr = 4.940656458412465 e-324
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   ghprpercent = 3.864959353571311 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   ahpr = 9.881312916824931 e-324
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   ahprpercent = 6.951446327825149 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   zscore = 3.864959353373685 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   zscorepercent = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   lrcorr = 3.864959358946745 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   lrstderror = 2.816174181295105 e-322
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   symbols = 592434208
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   corr_prf_mfe = 6.951533946411159 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   corr_prf_mae = 0.0
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   corr_mfe_mae = 6.951533898778685 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   mfe_a = 3.864959353373685 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   mfe_b = 6.951533898682886 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   mae_a = 3.864959352978432 e-312
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   mae_b = 6.951533900420317 e-310
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   holding_time_min = 721296048 d 
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   holding_time_max = 1758699664 d 
2021.01.01 02:30:57.588 Core 1 2020.12.30 23:59:59   holding_time_avr = -22966109 d 

 
Aleksei Skrypnev:

2つの問題がある。

取引、自動取引システム、取引戦略のテストに関するフォーラム

エラー、バグ、質問

Renat Fatkhullin, 2021.01.01 00:14

証拠があるのであれば、完全に一貫性があり、技術的に再現可能な形で提供すべきです。
 
fxsaber:

おそらく、スクリプトからExpert Advisorへのコード転送が正しくないために動作しないのだと思います。

例をお送りします。

手順

1.任意のExpert Advisorを使用します。私は標準のMovin' Averagで繰り返しテストしました。

2.一番上にインクルージョンを置く:

 #include <fxsaber\SingleTesterCache\SingleTesterCache.mqh>
 #include <fxsaber\SingleTesterCache\ExpTradeSummarySingle.mqh> 
  #include <fxsaber\MultiTester\MTTester.mqh> 

3.OnDeinitに、ここから2番目のスクリプトhttps://www.mql5.com/ja/code/27611:

  uchar Bytes2[];
  
  if (MTTESTER::GetLastTstCache(Bytes2) != -1) // 1回の実行の最後のキャッシュ・レコードを読むことができる場合
  {
    const SINGLETESTERCACHE SingleTesterCache(Bytes2); // それを適切なオブジェクトに送り込む。

    SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // セットファイルを詳細とともに保存する。
    
    double Balance[];
    double Equity[];
  
      
    Print(SingleTesterCache.Header.ToString());  // シングルパスのヘッダーを出力する。
    Print(SingleTesterCache.Summary.ToString()); // Statistica.
    Print(SingleTesterCache.Inputs);             // 入力パラメータ。

3.2.私は、この形式で同じ「ようなもの」を試してみました。

 const SINGLETESTERCACHE SingleTesterCache; // Загоняем ее в соответствующий объект.
            
            double Balance[];
    double Equity[];
            
               Print(SingleTesterCache.Header.ToString());  // Вывели заголовок одиночного прохода.
  Print(SingleTesterCache.Summary.ToString()); // Статистику.
      Print(SingleTesterCache.Summary.ToString()); // Статистику.
    Print(SingleTesterCache.Inputs);             // Входные параметры. 
 
Aleksei Skrypnev:

おそらく、スクリプトからExpert Advisorへのコード転送が正しくないために機能しないのだと思います。

今すぐ例を送ります。

準備のできたファイルがあればよりよいでしょう。何を取得する必要があるのか理解できません。

 
fxsaber:

私はむしろ、ファイルを準備しておきたい。それに、何を手に入れる必要があるのか理解できない。

そうです。私は、例えば、あなたがここのmultitesterトピックに書いたように、最後のシングルランの統計情報を取得してファイルに書き込みたかったのです。https://www.mql5.com/ru/forum/318305/page23#comment_19934192。

OnDeinit EAに コードを挿入する ことなく、どこでもできるようにするためです。

実際、すべての統計が必要なわけではなく、いくつかのパラメータが必要なのです。例えば、MQLInfoString(MQL_PROGRAM_NAME),TesterStatistics(STAT_SHARPE_RATIO)。

Библиотеки: MultiTester
Библиотеки: MultiTester
  • 2020.11.26
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: MultiTester
 
Aleksei Skrypnev:

そうです。例えば、マルチテスターのトピックに書いてあったように、最後のシングルランの統計データを取り出してファイルに書き出したかったのです。https://www.mql5.com/ru/forum/318305/page23#comment_19934192

OnDeinit EAに コードを挿入するのを 避けるためです。

実際、すべての統計が必要なわけではなく、いくつかのパラメータが必要である。例えば、MQLInfoString(MQL_PROGRAM_NAME),TesterStatistics(STAT_SHARPE_RATIO)。

おそらく、配信やディスカッションから例を実行してみることができます。

 
fxsaber:

デリバリーやディスカッションの例を実行してみるのもいいだろう。

パス統計をcsvファイルに記録するような機能や類似のものはまだ見つかっていない。うーん、ライブラリの中にも適当な関数が見つからなかった。もっと探してみます。

このようなブロックを見かけましたが、そこから必要な情報を呼び出す方法がわかりませんでした。

文字列 ToString( void ) const

{

戻り値(this.Header.expert_path[] + "\n; " +")

this.Header.symbol[] + "♪n; " + "♪n

::TimeToString(this.Header.date_from, TIME_DATE) + " - " + ::TimeToString(this.Header.date_to, TIME_DATE) + "Ⅻ; " + "Ⅻ

::DoubleToString(this.Summary.TesterStatistics(STAT_PROFIT)), 0) + ", " + " + "。

::DoubleToString(this.Summary.TesterStatistics(STAT_TRADES), 0) + ", " + ::DoubleToString(this.Summary.TesterStatistics(STAT_TRADES), 0) + ", " + .

::DoubleToString(this.Summary.TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " + ::DoubleToString(this.Summary.TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " + ".

::DoubleToString(this.Summary.TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", -" + ::DoubleToString(this.Summary.TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", -" +

::DoubleToString(this.Summary.TesterStatistics(STAT_EQUITY_DD), 2));

}

 
Aleksei Skrypnev:

そのようなブロックは見かけるが、そこから必要な情報を呼び出す方法がわからない。

自分のコードを他人事のように見るたびに、まったく覚えていない。

だからヒントが出せない。

 
fxsaber:

自分のコードを他人のもののように見るたびに、愚かなことにまったく覚えていない。

だから言えないんだ。

なるほど、勉強すればするほど理解が深まるわけですね。ただ、僕が理解しているように、すべての機能が現在のバージョンのライブラリに含まれているわけではない。要は、それが可能か不可能かを理解することだ)

 
Aleksei Skrypnev:

主なことは、それが可能かどうかを理解することだ)

https://www.mql5.com/ja/code/viewcode/27611/229701/exptradesummarysingle.mqh