English 中文 Español Deutsch 日本語 Português
Выцарапываем профит до последнего пипса

Выцарапываем профит до последнего пипса

MetaTrader 5Тестер | 25 июля 2019, 14:45
19 728 330
fxsaber
fxsaber

Введение

Эта статья об одном из возможных подходов к алготрейдингу. Для подтверждения описываемого подхода прямо перед публикацией статьи был создан сигнал/мониторинг торговли на реальном счете. Прямого отношения к торговым платформам MetaQuotes не имеет и ориентирована на широкие массы читателей. Если какой-то термин не понятен, пользуйтесь поиском. Здесь  решается задача получения профитной ТС (торговая система или по-другому робот).

Где копать?

Такая задача ставится каждым трейдером. Делалось это миллионы раз. Можно пойти по проторенным путям и сразу переключиться на другую статью. Но логично поискать клад там, где он, если и искался, то не толпою.

Земля

Большинство разговоров на тему создания Торговых Систем связано с использованием исторических ценовых баров и различных индикаторов на них. Это то самое истоптанное поле, которое мы трогать не будем. Бары — это совсем искусственная сущность, поэтому возьмем что-то ближе к прото-информации — ценовые тики. Данный подход даст нам некоторое информационное преимущество перед толпой в своих глазах.

Лопата

Задача получения профита довольно тяжела, поэтому бытует мнение, что решать ее нужно сложными интеллектуальными методами. Машинное обучение, эконометрические математические модели и т.д. У них есть один существенный минус — долгое время создания и проверки (из-за вычислительной сложности). Поэтому пойдем противоположным путем — очень простые и быстрые идеи. Это позволит искать рыночные закономерности не где-то в одном месте, а очень обширно.

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

Экскаватор для археологических раскопок

Если владеете каким-нибудь математическим пакетом, у вас есть свои разработки, которые удовлетворяют этим требованиям — отлично. Если нет, возьмем Тестер из платформы  MetaTrader 5 и раскочегарим его.

В эту штуку встроено грандиозное количество тиков разных брокеров, но еще она и умеет работать со сторонними тикам. Хранит в своей базе данных результаты расчетов и сносно визуализирует различные параметры. А также обладает своим многопоточным оптимизатором на основе простого перебора и генетики по пользовательскому критерию.

Торговый алгоритм

И нам нужна простая и быстрая идея в виде алгоритма торговли. Это может быть все, что угодно. Главное, чтобы было быстро.  Для этого желательно избегать внутри алгоритма циклов. Получили новый тик, что-то очень быстро сделали, вышли.

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

MQL5

Торговый алгоритм создается в виде советника на языке MQL5. Мы отказались от баров и индикаторов. Поэтому остаются только тики и работа с ордерами (и их историей). Целесообразно такие советники писать на MQL4,  а потом конвертировать одной строкой в MQL5 через торговую библиотеку MT4Orders.

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

Это сразу делает код кроссплатформенным (работать будет в  MetaTrader 4/5) и открывает двери к использованию некоторых полезных библиотек. Торговый алгоритм нужно писать быстрым и для Тестера — минимум проверок.

Источник

Откуда же взять ценовую инфомацию для исследований? Существует множество источников тиков. И логично сначала определиться среди них.

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

Кастомные тики

Загнать в тестер MetaTrader 5 тики возможно через кастомные символы. Это все довольно громоздко для быстрого понимания, поэтому просто воспользуемся уже готовым скриптом ThirdPartyTicks, который создает такие символы на основе данных из выбранного архива котировок.

Окно запуска ThirdPartyTicks для скачивания всего архива котировок.


Топливная присадка

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

Дело в том, что далеко не все тики нужны. Раз мы знаем свой торговый алгоритм, то есть понимание, какие тики не ведут к торговым изменениям. Т.е. можно определиться с тиками-пустышками и убрать их из истории. Такая фильтрация довольно эффективна:

Total Ticks (EURAUD.rann) = 61354152 (2134296 ticks/sec.), Reserve = 80023750
Recording...
After Filter (MinPips = 5) Ticks = 7820486 (12.75%)

По записи в логе видно, что удалось уменьшить количество тиков почти на порядок.

MetaTrader 5 тестер очень скрупулезный (бывает полезно), от этого совершает массу вычислительных движений, которые в предложенном исследовании лишние (а иногда и ошибочные). Чтобы этого избежать требуется разбираться в его тонкостях, что, конечно, делать здесь не будем. На эту тему есть обсуждение в одной из веток форума.

Напишем, что нужно для торгового алгоритма на MQL5, чтобы не обмануться:

  • Открытие/закрытие торговых позиций только через лимитные ордера.
  • Неттинг-логика. Соответственно, в MetaTrader 5 должен быть открыт неттинг-счет.
  • Торговля 1 лотом — Прибыль в пипсах.
  • Запуск на сервере, где нет комиссий для кастомных символов в Тестере.
  • Кастомный символ сделать "биржевым".

Одиночный результат запуска должен быть примерно таким


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

Финт

Поведение рынка зависит от времени суток. Поэтому применим библиотеку BestInterval, прописав всего две строки в исходник советника:

#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#include <fxsaber\BestInterval\BestInterval.mqh> // Вычисление лучшего интервала торговли

Это даст дополнительные входные параметры в советнике

Входные параметры BestInterval

Будем оптимизировать по BestInterval-критерию, равный наибольшему профиту, который показывает советник при торговле только в определенное время суток.

Экскаватор

Итак, торговый алгоритм подготовлен. Фильтрованные кастомные тики также готовы. Осталось как-то натравить одно на другое через MetaTrader 5 тестер. Здесь приходит на помощь MultiTester-решение. Оно будет автоматически брать каждый кастомный символ и проводить оптимизацию торгового советника на нем.

Входные параметры для запуска Оптимизации по всем кастомным символам из Обзора рынка.


Интервал оптимизации

Делать оптимизацию на всей истории бессмысленно, т.к. не будет никакой возможности понять — найдена закономерность или это просто подгонка. Поскольку все делается из расчета числовой молотилки, то и рассчитывать будем на большое количество торговых сделок.

Чем больше сделок, тем проще говорить о значимости каких-то статистических показателей. Чем меньше время жизни средней сделки, тем ниже риски. В общем, много сделок — это хорошо. Хоть и не обосновано толком.

Ну а раз желательна высокая частота сделок, то можно выбрать небольшой интервал. На нем все равно накопится приличное количество сделок.

Интервал для оптимизации.

Это чуть менее четырех последних месяцев.

Поехали!


Артефакты

На 81 символе (все данные из источника архива) все расчеты произвелись за 10 часов, часть которых было потрачено на сон автора. Поэтому удобно по ночам запускать. Поскольку  MetaTrader 5 тестер многоядерный, то это 10 часов дополнительного обогрева помещения.

Залезаем в базу данных MetaTrader 5 тестера, видим оптимизационные кеши.

Оптимизационные кеши


Открыв любую запись из этой базы получаем соответствующие результаты оптимизации по выбранному символу.

Были вручную перебраны все (81) варианты. Этот процесс может быть автоматизирован, но не реализован на данный момент, поэтому час времени все же было потрачено. Остановлюсь только на одном символе, как на примере. Для всех символов было сделано то же самое.

Результат оптимизации по одному символу.


Видим результат оптимизации по одному символу, отсортированный по BestInterval-критерию. Чем хороши кастомные символы — нет ограничения на отрицательный баланс. Т.е. размер баланса никак не влияет на торговлю. И с этим можно не заморачиваться.

Желательно большое количество сделок, поэтому выбираем одну из записей в красном столбце и запускаем одиночное тестирование. Его график торговли выглядит так

График круглосуточной торговли.


Это круглосуточная торговля. В конце лога одиночного прогона видим такую запись

BestInterval Action(true - single pass & MT4-style & Virtual is required) = false

Profit = -2392.00 = -2392.00 + 0.00 (0.00%) - Amount of Delete Intervals = 0 (2019.04.01 - 2019.07.20)
00:00:00 - 23:59:59 : Profit = -2392.00 (100.00%), Total = 2612 (70.64%), PF = 0.94, Mean = -0.92, DD = 3840.00, RF = -0.62
SUMMARY: 00:00:00 - 23:59:59 : Profit = -2392.00 (100.00%), Total = 2612 (70.64%), PF = 0.94, Mean = -0.92, DD = 3840.00, RF = -0.62

Profit = 4035.00 = -2392.00 + 6427.00 (-268.69%) - Amount of Delete Intervals = 1 (2019.04.01 - 2019.07.20), 20:00 - 08:00, CountHours = 11
00:00:00 - 07:58:54 : Profit = 1074.00 (26.62%), Total = 349 (76.22%), PF = 1.21, Mean = 3.08, DD = 709.00, RF = 1.51
19:41:38 - 23:59:59 : Profit = 2961.00 (73.38%), Total = 348 (76.44%), PF = 1.94, Mean = 8.51, DD = 358.00, RF = 8.27
SUMMARY: 00:00:00 - 23:59:59 : Profit = 4035.00 (100.00%), Total = 697 (76.33%), PF = 1.49, Mean = 5.79, DD = 484.00, RF = 8.34
BestInterval is saved in "TesterEA"-file in common(MT5)/base(MT4) folder.

final balance - InitBalance (10000.00) + Profit (-2392.00) without BestInterval.
OnTester - Profit (4035.00) with BestInterval.
final balance 7608.00 USD
OnTester result 4035

Из нее следует, что был бы профит 4035 пипсов, торгуй ТС с 20-ти часов вечера до 8-ми утра. Чтобы посмотреть, как выглядит эта торговля, идем во входные параметры и указываем, что нужно активировать BestInterval

Активация BestInterval.


И обязательно выводим MetaTrader 5 тестер из режима Оптимизации. Здесь в  MetaTrader 5 тестере с этим неудобно, к сожалению.

Отключение Оптимизации для активации BestInterval.


Запускаем и наблюдаем результат применения BestInterval

Результат применения BestInterval.


В логах одиночного прохода убеждаемся, что все отработано четко

BestInterval Action(true - single pass & MT4-style & Virtual is required) = true
Calculation time activated intervals is 2019.07.23 16:27:25 - TesterEA (common folder) 00:13:14 ago.

Amount of Delete Intervals = 1 (2019.04.01 - 2019.07.20), 20:00 - 08:00, CountHours = 11
00:00:00 - 07:58:54 : Profit = 1074.00 (26.62%), Total = 349 (76.22%), PF = 1.21, Mean = 3.08, DD = 709.00, RF = 1.51
19:41:38 - 23:59:59 : Profit = 2961.00 (73.38%), Total = 348 (76.44%), PF = 1.94, Mean = 8.51, DD = 358.00, RF = 8.27
SUMMARY: 00:00:00 - 23:59:59 : Profit = 4035.00 (100.00%), Total = 697 (76.33%), PF = 1.49, Mean = 5.79

final balance - InitBalance (10000.00) + Profit (4035.00) with BestInterval.
OnTester - Virtual InitBalance (10000.00) + Profit (-2403.00) without BestInterval. Profit is calculated with TickValue=1 and w/o Commission+Swap.
final balance 14035.00 USD
OnTester result 7597

Вроде, почти красиво. Сделок много, график довольно ровный. Не хочется расстраиваться, но обязательно нужно запустить на всей истории (и обломаться).

Проверка результата Оптимизации на всей истории.

И мы все время будем получать отвратительный график, говорящий, что у нас математическая подгонка параметров под хороший результат на оптимизируемом интервале. Но она не работает на других участках. Т.е. если запустим в торговлю такое, будет слив.

Форвард

MetaTrader 5 тестер позволяет делать форвард-тестирование. Мое мнение, что такое тестирование является самообманом. Поэтому надо брать только пару-тройку хороших результатов и гнать на всей истории. Ни один не получился — в корзину его. Форвард же прогоняет гораздо больше вариантов, что является уже одним из видов подгонки.

Золото

Так все-таки все время будет отвратительный график или есть надежда? Да, наш вариант при увеличении на всей истории дал такой результат.

Один из результатов прогона на всей истории.

Красным показан оптимизируемый интервал. Хорошо видно, что на периоде в разы больше оптимизируемого интервала наблюдается неплохая стабильность.


Вытравливание драгоценностей

Собственно, теперь понятно, с каким символом нужно продолжить работать — это EURCHF. Отчет прогона, показанного выше:

Отчет результата прогона на всей истории.

Выделено матожидание в пипсах. Это важнейший параметр! Дело в том, что комиссия на EURCHF ~ 4.40 pips. Значит, в данном случае надо будет подарить две трети профита торговой площадке. Это слишком.

Поэтому убираем BestInterval, внося во входные параметры возможность регулирования времени торгов. Начинаем оптимизировать с момента окончания наибольшей просадки — она помечена зеленым на графике выше. Если много параметров, делаем несколько раз генетику.

Чтобы при поиске закономерностей во время оптимизации не было сильных искажений убираем несистемный выброс.

Несистемный выброс.

Для этого в исходнике просто пишем подобное

const bool TradeTime = (TimeCurrent() < D'2018.02.10') || (TimeCurrent() >= D'2018.02.12');

В общем, в результате удалось добиться увеличения мат. ожидания в два раза на нефильтрованном символе.

Мартин/Сетка

Конечно, попробовал применить различные ухищрения в виде сеток ордеров и т.д. Сначала обрадовался, что матожидание растет на десятки процентов. Но не мог себе объяснить причину. В итоге оказалось, что  MetaTrader 5 тестер некорректно его вычисляет на неттинг-счетах. Точнее, он вкладывает в это понятие не совсем то, что ожидаешь. Поэтому написал то, что нужно

// Расчет мат. ожидания. На хедже совпадет с классическим.
double OnTester()
{
  double Res = 0;
  
  if (HistorySelect(0, INT_MAX))
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
      Res += HistoryDealGetDouble(HistoryDealGetTicket(i), DEAL_VOLUME);
  
  Res /= 2;
  
  if (Res)
    Res = TesterStatistics(STAT_PROFIT) / Res;
  
  return(Res);
}

и результат полностью подтвердил теорию, что сетка не может улучшить хорошо оптимизируемую ТС. Это короткий, но очень емкий вывод.

Монетизация

Требуется определиться, где торговать найденное. Просматриваем торговые условия брокеров (включая ценовую историю) и особенно интересуемся реализацией лимитных ордеров. Некоторые брокеры лимитные ордера исполняют через маркеты, допуская отрицательные проскальзывания. А кто-то запрещает частичные исполнения лимитных ордеров. От таких держимся подальше, ведь мы и так бьемся за каждый пипс (смотри название статьи). Недопустимо разгильдяйское отношение к торговым условиям.

Обращу внимание, что не требуется искать только среди MetaTrader 4/5 брокеров. Нужно поискать везде. Торговая платформа вторична. Да, возможно, это не совсем корректно говорить на ресурсе  MetaTrader 4/5, но это так. Первична ТС, будем объективны.

Ну а много сделок, потому что торговля такая.

Пример участка торговли.


Подходящую торговую площадку найти удалось. Исходные лимитные ордера будут максимально быстро добираться до поставщика ликвидности, что повысит вероятность исполнения. К тому же бонусом могут быть положительные проскальзывания. А для нас каждый пипс в матожидании важен. Это позволит отбить часть расходов на комиссии.

Реальная торговля

Эта честь выпала на платформу MetaTrader 4. Так что кроссплатформенность оказалось очень кстати еще раз.

Чтобы добиться максимального совпадение реала с результатами тестера, потребовалось организовать следующую схему работы.

  • При запуске советника подхватывается тиковая история по текущее состояние с помощью библиотеки HistoryTicks.
  • На этой тиковой истории автоматически прогоняется советник в виртуальном окружении через подключение библиотеки Virtual.
  • В браузере видим всю истории торгов до текущего момента с настройками советника, что выставил. Это позволяет сразу минимизировать вероятность ошибки задания входных параметров. Если видишь слив — значит, допущена ошибка.
  • На каждом тике советник продолжает торговать в виртуальном окружении. Если выключил советник, то после запуска он будет торговать так, как будто и не выключался.
  • Постоянно не идельное реальное окружение синхронизируется с виртуальным окружением, где исполнение идеальное.

Все эти ухищрения потребовались из-за борьбы за величину мат. ожидания. Но такую схему применял бы для почти любой ТС. Конечно, можно не заморачиваться. Однако, имел возможность наблюдать, во что это иногда оборачивается на реальных торгах. Поэтому схема выработана не на пустом месте.

Диверсификация

Отбирать только один вариант входных параметров было бы слишком самонадеянно. Неизвестно, какой из вариантов оптимизации хорош в будущем, а какой — нет.

Поэтому на скорую руку было выбрано восемь приглянувшихся вариантов, между ними поделен поровну баланс счета. И запущены одновременно (восемь чартов, на каждом по советнику со своим MagicNumber). Внешне это выглядит, как сетка. Но к сеточным ТС, конечно, не имеет отношения. Это восемь независимых ТС.

Дележка пирога

Запустили, допустим. А дальше что? Тут несколько путей. От ДУ (доверительное управление) и ПАММов до сервисов копирования Сигналов.

Поскольку речь идет про выцарапывание профита, то ставить на Сигналы имеет смысл только с целью PR.  Подписчики не смогут заработать, потому что будут получать отрицательные проскальзывания при копировании. Что повлечет к уменьшению для них матожидания до отрицательных величин. Т.е. слив подписчиков высоковероятен при подобной торговле.

Засветка метода торговли имеет шанс на реинжениринг ТС или основных принципов. Это еще один из вариантов получить выгоду из общедоступной системы.

Ну и, наконец, можно просто со стороны посмотреть, как в очередной раз якобы неплохая ТС слилась. Это неизбежно.

Мемуары

На пути исследователя в области алготоровли попадаются различные истории, шишки и т.д. Вспоминается всякое. Про EURDKK недавно говорилось вскользь, но в канву данного изложения хорошо зайдет такой случай.

Результат ТС, оптимизированной на красном интервале.

Это картинка результата ТС, оптимизированной на выделенном красном интервале. Мне точно не воспроизвести, как тогда было. Но помню, что картинка левее интервала оптимизации была гораздо приятнее - прямая линия. Почти грааль, который был поставлен на реал и зарабатывал ровно так, как в Тестере. Когда после НГ начался планомерный слив, хватило ума или опыта выключить торговлю. Потеря составила около 10% от заработанного до этого. Что повлекло слом — неясно.

В этой истории важно, что даже граальность приводит к сливам. Но не это главное, почему вспомнилась история.

Главное — это символ NOKSEK! Многие из читателей этот символ исследовали или хотя бы смотрели на него? Почему?


Заключение

В статье есть некоторая философская борьба: числовая молототилка против классического интеллектуального подхода. Что выбрать — решайте сами.

Некоторые приемы и рассуждения, возможно, будут полезными.

Статья продемонстрировала вероятность правоты интересного утверждения: если у Вас есть на руках профитная ТС, то вполне вероятно, что Вы никогда об этом не узнаете. Наверное, выкидывали хорошие ТС в помойку не единожды. Здесь показано, что проверка ТС — это не запуск ее на одном/двух символах.

Видна и важность ограничения торговли по времени суток. И что нежелательно что-то Монте-Карлить. Ведь это может убить вывод о профитности ТС.

Универсальные системы маловероятны и не нужны для извлечения профита. Борьба за каждый пипс имеет место быть.

Ну и, конечно, MetaTrader 5 Тестер. Местами он великолепен! Местами огорчает, но без него точно проделать такое исследование и более-менее доступно изложить его не получилось бы. Спасибо разработчикам! И ждем улучшений.

Что не вошло

Устал писать, поэтому не все попало:

  • Другие символы.
  • Умение MetaTrader 5 вычислять проскальзывания.
  • Наглядно показать, как отбивается комиссия за счет положительных проскальзываний лимитников.
  • Показать, что тейкпрофит в MetaTrader 5 в текущем виде не годится для использования.
  • Как влияют свопы на результат.
  • Что оба мая (2018 и 2019) EURCHF ТС сливает почти под копирку. Т.е. по календарю выключают закономерность, а потом включают.
  • Как можно создавать критерии оценки годности ТС через автооптимизатор.
  • Создание смешанных символов.
  • Важность полного перебора перед генетикой.
  • Если символ перевернуть, то это никак не должно повлиять на закономерности, а значит и на ТС.
  • Важность интерпретации того, что показывает Тестер.
  • Спред  или локальные экстремумы.

Последние комментарии | Перейти к обсуждению на форуме трейдеров (330)
fxsaber
fxsaber | 18 янв. 2021 в 14:57
Maxim Dmitrievsky
Maxim Dmitrievsky | 18 янв. 2021 в 15:26
fxsaber:

.

а сделки можно посмотреть по обоим? потому что иначе не догадаться почему так

даже если бары не используем, а условно, машку на тиках - то все равно разброс значений разный ведь
fxsaber
fxsaber | 18 янв. 2021 в 15:43
Maxim Dmitrievsky:

а сделки можно посмотреть по обоим? потому что иначе не догадаться почему так

Не готов пока предоставить.

даже если бары не используем, а условно, машку на тиках - то все равно разброс значений разный ведь

Конечно.

Vitaly Muzichenko
Vitaly Muzichenko | 18 янв. 2021 в 19:36
fxsaber:

.

Разные типы счетов, на первом скрине STP, а на втором ECN ?

fxsaber
fxsaber | 18 янв. 2021 в 19:57
Vitaly Muzichenko:

Разные типы счетов, на первом скрине STP, а на втором ECN ?

В данном случае все с комиссией. Просто разные фиды (и маркапы, возможно).

Библиотека для простого и быстрого создания программ для MetaTrader (Часть XVII): Интерактивность объектов библиотеки Библиотека для простого и быстрого создания программ для MetaTrader (Часть XVII): Интерактивность объектов библиотеки
Сегодня доведём до логического завершения функционал базового объекта всех объектов библиотеки, который позволит любому объекту библиотеки, созданному на его основе, интерактивно взаимодействовать с пользователем. Например, можно установить максимально приемлемый размер спреда для открытия позиции и значение уровня цены, при пересечении которого нам будет послано событие от объекта-символа в программу о сигнале по размеру спреда и пересечению ценой контролируемого уровня.
Исследования технических фигур Меррилла Исследования технических фигур Меррилла
В этой мы статье рассмотрим модель технических фигур Меррилла и попробуем выяснить, насколько актуальны эти технические паттерны сегодня. Для этого мы создадим инструмент для их тестирования и применим данную модель к различным типам данных, такие как цена закрытия, ее максимумы и минимумы, индикаторы осцилляторного типа.
Новый подход к интерпретации классической и обратной дивергенции. Часть 2 Новый подход к интерпретации классической и обратной дивергенции. Часть 2
В этой статье мы в критическом ключе рассмотрим классическую дивергенцию и проанализируем эффективность различных индикаторов. А также предложим варианты фильтрации для повышения точности анализа и продолжим рассматривать нестандартные решения. Как результат, создадим нетипичный инструмент для решения поставленной задачи.
Библиотека для простого и быстрого создания программ для MetaTrader (Часть XVI): События коллекции символов Библиотека для простого и быстрого создания программ для MetaTrader (Часть XVI): События коллекции символов
В статье создадим новый базовый класс для всех объектов библиотеки, который добавит событийный функционал всем своим наследникам, и создадим класс отслеживания событий коллекции символов на основе нового базового класса. А также изменим классы аккаунта и событий аккаунта для работы под новым функционалом базового объекта.