Библиотеки: MT4Orders - страница 21

 
Artyom Trishkin:

Вы как-то показывали код, который ищет на истории похожие "паттерны".

Вот он.

Вот вам и простейшая ТС с глубокой историей:

Смотрим текущую "форму-паттерн" цены за определённое время от "сейчас" до "немного в прошлое (торговый день например)", ищем все похожие паттерны цены на истории, классифицируем их по "степени совпадения", отбираем несколько наиболее совпадающих участков такой "картинки" в истории. Анализируем историю с виртуальными входами-выходами и получаем рекомендации по входам/выходам на текущее состояние. Можно даже назначить по итогам анализа исторических паттернов "вес" для каждой рекомендации.

Видимо, Вы не поняли. Имелась в виду торговая история.

Библиотеки: Кроссплатформенная библиотека оригинальных математических функций
Библиотеки: Кроссплатформенная библиотека оригинальных математических функций
  • 2017.03.27
  • www.mql5.com
Кроссплатформенная библиотека оригинальных математических функций: Автор: fxsaber...
 

ТС, в которой история всерьез бы влияла на логику - адаптивная ТС. 

На чем споткнулись? 

 
Алексей Тарабанов:

ТС, в которой история всерьез бы влияла на логику - адаптивная ТС. 

На чем споткнулись? 

Нужен пример ТС, в которой торговая история (не ценовая) существенно влияет на время бэктеста.

 
fxsaber:

На реал-тайме сказываться не должно.

У меня, к сожалению, сказывается.

Есть кнопка, нажатие на которую отображает/скрывает историю сделок. Все, конечно, отображать смысла нет, но часто нужно выбрать несколько десятков "своих" по символу, магику, или комментарию из нескольких тысяч других. Вот тогда и начинаются тормоза. Мысль — кэшировать список "своих" и обновлять его только новыми историческими сделками.

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

 
fxsaber:

Нужен пример ТС, в которой торговая история (не ценовая) существенно влияет на время бэктеста.

В качестве фантазии: построение кривой баланса по историческим сделкам и расчет лота новых сделок в зависимости от наклона кривой.

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

 
Andrey Khatimlianskii:

У меня, к сожалению, сказывается.

Есть кнопка, нажатие на которую отображает/скрывает историю сделок. Все, конечно, отображать смысла нет, но часто нужно выбрать несколько десятков "своих" по символу, магику, или комментарию из нескольких тысяч других. Вот тогда и начинаются тормоза. Мысль — кэшировать список "своих" и обновлять его только новыми историческими сделками.

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

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

Хотелось бы посмотреть этого замечательного брокера.

 
Andrey Khatimlianskii:

В качестве фантазии: построение кривой баланса по историческим сделкам и расчет лота новых сделок в зависимости от наклона кривой.

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

Думал про такое, но в том то и дело, что сразу напрашивается ВР баланса. Как это не парадоксально, но, похоже, кеширование торговой истории востребовано только для боевого применения (не Тестер).

 
fxsaber:

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

По идее, будет достаточно хранить тикет DEAL_ENTRY_IN для каждой сделки, т.к. 99% времени выполняется GetPositionDealIn (а в ней — HistorySelectByPosition).


fxsaber:

Хотелось бы посмотреть этого замечательного брокера.

PrimeXM-LiveUK

Это костыльный мост в саксо-банк.

 
Andrey Khatimlianskii:

По идее, будет достаточно хранить тикет DEAL_ENTRY_IN для каждой сделки, т.к. 99% времени выполняется GetPositionDealIn (а в ней — HistorySelectByPosition).

Давно было сделано сравнение Hash с торговой историей. Поэтому, наверное, оптимально копать в Generic-сторону.

Как мотиватор изучить этот метод - пойдет! Где-нибудь летом в спокойной обстановке...

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.08
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...
 

Обновление от fxsaber:

// 30.05.2018
//   Add: Ускорена работа с историей торговли, выбрана золотая середина реализаций между производительностью и
//        потреблением памяти - важно для VPS. Используется стандартная Generic-библиотека.
//        Если не хочется использовать Generic-библиотеку, то доступен старый режим работы с историей.
//        Для этого нужно ДО MT4Orders-библиотеки прописать строку
//
//        #define MT4ORDERS_FASTHISTORY_OFF // Выключаем быструю реализацию истории торговли - не используем Generic-библиотеку.

Работа с длинной историей теперь просто летает!

Модераторы, если есть возможность, залейте код в базу.

Файлы:
MT4orders.mqh  77 kb