Подскажите пожалуйста, как с помощью этой библиотеки получить значение профита в форварде по номеру прохода внутри советника?
Все данные прохода в кеше.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Slava, 2019.04.19 15:11
//+------------------------------------------------------------------+ //| Структура для статистики торговли | //+------------------------------------------------------------------+ struct ExpTradeSummary { double initial_deposit; // начальный депозит double withdrawal; // снято средств double profit; // общая прибыль (+) double grossprofit; // общий плюс double grossloss; // общий минус double maxprofit; // максимально прибыльная сделка double minprofit; // максимально убыточная сделка double conprofitmax; // прибыль максимальной последовательности прибыльных сделок double maxconprofit; // максимальная прибыль среди последовательностей double conlossmax; // убыток максимальной последовательности убыточных сделок double maxconloss; // максимальный убыток среди последовательностей double balance_min; // минимальное значение баланса (для расчёта абсолютной просадки) double maxdrawdown; // максимальная просадка по балансу double drawdownpercent; // отношение максимальной просадки по балансу к её пику double reldrawdown; // максимальная относительная просадка по балансу в деньгах double reldrawdownpercent; // максимальная относительная просадка по балансу в процентах double equity_min; // минимальное значение equity (для расчёта абсолютной просадки по equity) double maxdrawdown_e; // максимальная просадка по equity double drawdownpercent_e; // отношение максимальной просадки по equity к её пику (+) double reldrawdown_e; // максимальная относительная просадка по equity в деньгах double reldrawdownpercnt_e; // максимальная относительная просадка по equity в процентах double expected_payoff; // матожидание выигрыша (+) double profit_factor; // показатель прибыльности (+) double recovery_factor; // фактор восстановления (+) double sharpe_ratio; // коэффициент Шарпа (+) double margin_level; // минимальный уровень маржи double custom_fitness; // пользовательский фитнесс - результат OnTester (+) int deals; // общее количество сделок int trades; // количество сделок out/inout int profittrades; // количество прибыльных int losstrades; // количество убыточных int shorttrades; // количество шортов int longtrades; // количество лонгов int winshorttrades; // количество прибыльных шортов int winlongtrades; // количество прибыльных лонгов int conprofitmax_trades; // максимальная последовательность прибыльных сделок int maxconprofit_trades; // последовательность максимальной прибыли int conlossmax_trades; // максимальная последовательность убыточных сделок int maxconloss_trades; // последовательность максимального убытка int avgconwinners; // среднее количество последовательных прибыльных сделок int avgconloosers; // среднее количество последовательных убыточных сделок };
Можете видеть, что форвард там отсутствует.
Все данные прохода в кеше.
Можете видеть, что форвард там отсутствует.
Все данные прохода в кеше.
Можете видеть, что форвард там отсутствует.
struct TestCacheHeader { UINT version; // версия кеша // wchar_t copyright[64]; // копирайт STRING64 copyright; // копирайт UINT header_size; // размер заголовка UINT record_size; // размер кешируемой записи (TestCacheRecord с буфером параметров) //--- // wchar_t expert_name[64]; // имя эксперта STRING64 expert_name; // имя эксперта // wchar_t expert_path[128]; // имя эксперта с путём от MQL5 STRING128 expert_path; // имя эксперта с путём от MQL5 // wchar_t server[64]; // источник истории (торговый сервер) STRING64 server; // источник истории (торговый сервер) // wchar_t symbol[32]; // символ тестирования STRING32 symbol; // символ тестирования UINT16 period; // период чарта INT64 date_from; // дата начала данных в настройках тестирования INT64 date_to; // конечная дата в настройках тестирования INT64 date_forward; // конечная дата соответствующего форварда int opt_mode; // режим оптимизации (0-полная оптимизация, 1-генетика, 2 или 3-форвард) int ticks_mode; // режим генерации тиков int last_criterion; // критерий оптимизации при последнем сеансе DWORD msc_min; // минимальное время выполнения в миллисекундах DWORD msc_max; // максимальное время выполнения в миллисекундах DWORD msc_avg; // среднее время выполнения в миллисекундах int common_reserve[16]; //--- // wchar_t group[80]; // имя группы + hedging/netting STRING80 group; // имя группы + hedging/netting // wchar_t trade_currency[32]; // валюта депозита STRING32 trade_currency; // валюта депозита int trade_deposit; // начальный депозит int trade_condition; // режим работы торговли (0-без задержек, -1-произвольная задержка, nnn-количество миллисекунд) int trade_leverage; // плечо int trade_hedging; // 1 - netting, 2 - hedging int trade_currency_digits; int trade_reserve[6]; //--- char hash_ex5[16]; // контрольная сумма скомпилированного эксперта UINT parameters_size; // размер буфера параметров эксперта UINT parameters_total; // количество параметров UINT opt_params_size; // размер буфера оптимизируемых параметров эксперта UINT opt_params_total; // количество оптимизируемых параметров UINT dwords_cnt; // размер номера прохода большой генетики UINT snapshot_size; // размер снапшота для тотальной оптимизации и для форварда после тотальной оптимизации UINT passes_total; // общее количество проходов оптимизации (для генетической оптимизации 0) UINT passes_passed; // количество пройденных проходов // далее следуют выставленные параметры эксперта (в т.ч. строковые) в структуре TestCacheInput //--- конец заголовка. далее следуют записи о каждом проходе
Я неверно спросил. Эта библиотека впринципе для постоптимизационной работы. Я хотел спросить: Может есть тут метод чтобы перехватить результат форварда наподобие TesterStatistics. OnTester() в форварде не вызывается.
Я хотел спросить: Может есть тут метод чтобы перехватить результат форварда наподобие TesterStatistics. OnTester() в форварде не
вызывается.
Никогда не пользовался форвардом, поэтому не могу ответить. Если GUI-кеша показывает нужные данные, то библиотека их тоже увидит.
Я неверно спросил. Эта библиотека впринципе для постоптимизационной работы. Я хотел спросить: Может есть тут метод чтобы перехватить результат форварда наподобие TesterStatistics. OnTester() в форварде не вызывается.
Форвард - обычный прогон, поэтому TesterStatistics можно вызвать из OnDeinit (раз уж вопрос был повернут в сторону OnTester; к читалке кеша это, конечно, не относится).
Форвард - обычный прогон, поэтому TesterStatistics можно вызвать из OnDeinit (раз уж вопрос был повернут в сторону OnTester; к читалке кеша это, конечно, не относится).
Форвард - не обычный прогон. Он работает в каждом агенте тестирования отдельно и слить результат можно только в файловую папку агента. Получаем число файлов по числу агентов, скопировать которые в общий файл тоже нельзя. Но тестер это как-то делает при записи общего лога и кэша. Вот бы перехватить эту запись!
Не понял мысль. Каждый прогон (и обычный, и форвард) - работает в агенте тестирования отдельно. Результаты с агентов на терминал нужно передавать через фреймы.
Не понял мысль. Каждый прогон (и обычный, и форвард) - работает в агенте тестирования отдельно. Результаты с агентов на терминал нужно передавать через фреймы.
Нет в форварде никаких фреймов. Они не создаются ни в одной функции. Только в OnInit есть признак форварда, но фрейм всё равно не записать.
У меня фреймы есть везде. Прекрасно создаются в OnTester, который вызывается и в оптимизации, и в форварде. Прекрасно получаются в OnTesterPass.
У меня фреймы есть везде. Прекрасно создаются в OnTester, который вызывается и в оптимизации, и в форварде. Прекрасно получаются в OnTesterPass.
Написал отдельный советник и прогнал на разных компах, с разной виндой. Результат тот-же: форвард не работает. С выкл. форвардом файл пишеться. Посмотрите пожалуйста этот код. Что у меня не так?
Я принимал фреймы в OnTesterPass. Прилагаю минимальный работающий тест (без файлов).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
TesterCache:
Чтение/Запись opt-файлов оптимизационных кешей MT5-тестера
Автор: fxsaber