Библиотеки: TesterCache - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Good Beer
106
Good Beer  
Stanislav Korotky:

Я принимал фреймы в OnTesterPass. Прилагаю минимальный работающий тест (без файлов).

Этот тоже не работает. Я добавил только forw_id для наклядности.

test

Одни нули.  А что такое 0xCACA?

Stanislav Korotky
22211
Stanislav Korotky  
Good Beer:

Этот тоже не работает. Я добавил только forw_id для наклядности.


Одни нули.  А что такое 0xCACA?

У меня все работает, и мой пример, и ваш (отправил в соседней ветке). 0.0 - проход оптимизации, 1.0 - форвард.

2019.09.01 16:34:26.746 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      2 0.0
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      "dummy=3"
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      0 0.0
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      "dummy=1"
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      1 0.0
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      "dummy=2"
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      3 0.0
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      "dummy=4"
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      4 0.0
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      "dummy=5"
2019.09.01 16:34:26.749 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:27.583 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:27.583 fwdfrm (GBPUSD,H1)      0 1.0
2019.09.01 16:34:27.583 fwdfrm (GBPUSD,H1)      "dummy=1"
2019.09.01 16:34:27.583 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:27.583 fwdfrm (GBPUSD,H1)      4 1.0
2019.09.01 16:34:27.583 fwdfrm (GBPUSD,H1)      "dummy=5"
2019.09.01 16:34:27.584 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:27.584 fwdfrm (GBPUSD,H1)      1 1.0
2019.09.01 16:34:27.584 fwdfrm (GBPUSD,H1)      "dummy=2"
2019.09.01 16:34:27.602 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:27.602 fwdfrm (GBPUSD,H1)      3 1.0
2019.09.01 16:34:27.602 fwdfrm (GBPUSD,H1)      "dummy=4"
2019.09.01 16:34:27.602 fwdfrm (GBPUSD,H1)      OnTesterPass
2019.09.01 16:34:27.602 fwdfrm (GBPUSD,H1)      2 1.0
2019.09.01 16:34:27.602 fwdfrm (GBPUSD,H1)      "dummy=3"

0xCACA - просто число (идентификатор), на функционал не влияет.

Aliaksandr Hryshyn
2500
Aliaksandr Hryshyn  

Не работает на последнем бета-билде на текущий момент :( .

Версия кэша 515.

Fulvio Monaco
1077
Fulvio Monaco  

Hi Fxsaber, I find this code extremely usefull. Thank you.

However, it does not work with the new update. Are you planning to update the code at some point?


Fulvio

fxsaber
14969
fxsaber  
Fulvio Monaco:

Are you planning to update the code at some point?

Планирую. По срокам не могу сказать. Очень много более важного не сделано.

fxsaber
14969
fxsaber  
Библиотека изменена под новый opt-формат (515).
// Сохраняем set-файл самого прибыльного прохода последней оптимизации.

#include <fxsaber\MultiTester\MTTester.mqh>    // https://www.mql5.com/ru/code/26132
#include <fxsaber\TesterCache\TesterCache.mqh> // https://www.mql5.com/ru/code/26223

// Возвращает номер записи с максимальной прибылью.
template <typename T>
int GetMaxProfitPos( const TESTERCACHE<T> &Cache )
{
  int Pos = 0;
  double MaxProfit = -DBL_MAX;

  for (int i = Cache.GetAmount() - 1; i >= 0; i--)
    if (Cache[i].TesterStatistics(STAT_PROFIT) > MaxProfit)
    {
      MaxProfit = Cache[i].TesterStatistics(STAT_PROFIT);

      Pos = i;
    }

  return(Pos);
}

void OnStart()
{
  uchar Bytes[];
  
  MTTESTER::GetLastOptCache(Bytes);
  
//  TESTERCACHE<TestCacheSymbolRecord> Cache;   // Оптимизация по символам
  TESTERCACHE<ExpTradeSummary> Cache;         // Стандартная оптимизация

  if (Cache.Load(Bytes)) // Прочитали оптимизационный кеш.
  {
    Print(Cache.Header.ToString()); // Вывели основные данные оптимизационного кеша.    
    
    const int Pos = GetMaxProfitPos(Cache);
    Print(Cache[Pos].ToString()); // Вывели стат. данные записи с максимальной прибылью.
    
    Cache.SaveSet(Pos); // Создали set-файл самого прибыльного прохода.
  }
}


В результате запуска появится такой set-файл.

; saved on 2019.11.13 19:40:01
; Experts\Examples\MACD\MACD Sample LImitTP.ex5
; EURUSD
; 2019.09.01 - 2019.11.13
; 479, 10, Max, 47.92, -253.60
;
InpLots=0.1
InpTakeProfit=200||10||5||500||Y
InpTrailingStop=290||30||10||300||Y
InpMACDOpenLevel=5||5||5||200||Y
InpMACDCloseLevel=180||5||5||200||Y
InpMATrendPeriod=8||1||1||200||Y
;
; Pass = 1838
; initial_deposit = 10000.0
; withdrawal = 0.0
; profit = 479.15
; grossprofit = 479.15
; grossloss = 0.0
; maxprofit = 99.8
; minprofit = 0.0
; conprofitmax = 479.15
; maxconprofit = 479.15
; conlossmax = 0.0
; maxconloss = 0.0
; balance_min = 10000.0
; maxdrawdown = 0.0
; drawdownpercent = 0.0
; reldrawdown = 0.0
; reldrawdownpercent = 0.0
; equity_min = 9997.700000000001
; maxdrawdown_e = 253.6000000000004
; drawdownpercent_e = 2.457388152985982
; reldrawdown_e = 253.6000000000004
; reldrawdownpercnt_e = 2.457388152985982
; expected_payoff = 47.91500000000001
; profit_factor = 1.797693134862316e+308
; recovery_factor = 1.889392744479493
; sharpe_ratio = 1.069726339729858
; margin_level = 1.797693134862316e+308
; custom_fitness = 0.0
; deals = 15
; trades = 10
; profittrades = 10
; losstrades = 0
; shorttrades = 6
; longtrades = 4
; winshorttrades = 6
; winlongtrades = 4
; conprofitmax_trades = 10
; maxconprofit_trades = 10
; conlossmax_trades = 0
; maxconloss_trades = 0
; avgconwinners = 10
; avgconloosers = 0
; 
; version = 515
; copyright = Copyright 2000-2019, MetaQuotes Software Corp.
; name = TesterOptCache
; header_size = 2526
; record_size = 328
; expert_name = MACD Sample LImitTP
; expert_path = Experts\Examples\MACD\MACD Sample LImitTP.ex5
; server = MetaQuotes-Beta
; symbol = EURUSD
; (ENUM_TIMEFRAMES)period = PERIOD_M1
; date_from = 2019.09.01 00:00:00
; date_to = 2019.11.13 00:00:00
; date_forward = 1970.01.01 00:00:00
; opt_mode = 1
; ticks_mode = 4
; last_criterion = 0
; msc_min = 501
; msc_max = 2342
; msc_avg = 801
; group = demo (netting)
; trade_currency = USD
; trade_deposit = 10000
; trade_condition = 0
; trade_leverage = 100
; trade_hedging = 1
; trade_currency_digits = 2
; trade_pips = 0
; parameters_size = 28
; parameters_total = 6
; opt_params_size = 40
; opt_params_total = 5
; dwords_cnt = 0
; snapshot_size = 0
; passes_total = 0
; passes_passed = 2510

Не знаю, как другие, но мне удобно, когда в сет-файле вся информация содержится. Очень быстро получается понять, что это, откуда и сколько.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий