Обсуждение статьи "Брутфорс-подход к поиску закономерностей (Часть VI): Циклическая оптимизация"
формулы 2
Давайте разберемся, что внутри данной формулы:
- N — количество полностью открытых и закрытых торговых позиций на протяжении всего бэктеста или участка торговли.
- B(i) — значение линии баланса после соответствующей закрытой позиции "i".
- L(i) — прямая, проведенная из нуля в самую последнюю точку баланса (финальный баланс).
Вроде, это почти Шарп:
//--- вычислим логарифмы приращений из массива эквити for(int i = 1; i < m_bars_counter; i++) { //--- добавляем только если эквити изменилось if(m_equities[i] != prev_equity) { log_return = MathLog(m_equities[i] / prev_equity); // логарифм приращения aver += log_return; // средний логарифм приращений AddReturn(log_return); // заполняем массив логарифмов от приращений counter++; // счетчик доходностей } prev_equity = m_equities[i]; } //--- если значений не хватает для расчета коэффициента Шарпа, вернем 0 if(counter <= 1) return(0); //--- среднее значение логарифма приращения aver /= counter; //--- вычислим стандартное отклонение for(int i = 0; i < counter; i++) std += (m_returns[i] - aver) * (m_returns[i] - aver); std /= counter; std = MathSqrt(std); //--- коэффициент Шарпа на текущем таймфрейме double sharpe = aver / std;
- www.mql5.com
Что-то схожее есть но только на первый взгляд. Все упускают модель роста баланса. Если наклон роста баланса постоянно падает (вторая производная кривой баланса отрицательная) то такая модель не предпочтительная так как в скором времени она может вообще уйти в минуса. Весь смысл в том чтобы отбирать те кривые которые и графически выглядят наиболее перспективно.
Что-то схожее есть но только на первый взгляд. Все упускают модель роста баланса. Если наклон роста баланса постоянно падает (вторая производная кривой баланса отрицательная) то такая модель не предпочтительная так как в скором времени она может вообще уйти в минуса. Весь смысл в том чтобы отбирать те кривые которые и графически выглядят наиболее перспективно.
Алгоритм Шарпа для нисходящих кривых выдаст отрицательное значение. Привел только для аналогии, смысла Шарп обсуждать нет...
Примеры из своего опыта.
- критерий "красивая кривая" - не проходит OOS.
- критерий "некрасивая кривая" - проходит OOS, при этом кривая сама по себе получилась красивой.
- Нулевая комиссия - не проходит OOS.
- Задана комиссия - проходит OOS.
Т.е. получается, что когда оптимизация идет на красоту, то подгоночная составляющая высока. Когда же что-то стОящее находится, то оно выглядит красиво.
Поэтому сам красоту не ищу критериями. Больше упираю на количество сделок и алгоритм ядра ТС. Цель - получить красоту без критерия красоты. Как правило, такой вариант проходит OOS.
ЗЫ Вариант с комиссией интереснее (но, как правило, наоборот: меньше комиссия - больше вероятность нахождения закономерности). В нем фактически идет уменьшение количества сделок (стат. значимости), но увеличение вероятности удачного поиска.
Алгоритм Шарпа для нисходящих кривых выдаст отрицательное значение. Привел только для аналогии, смысла Шарп обсуждать нет...
Примеры из своего опыта.
- критерий "красивая кривая" - не проходит OOS.
- критерий "некрасивая кривая" - проходит OOS, при этом кривая сама по себе получилась красивой.
- Нулевая комиссия - не проходит OOS.
- Задана комиссия - проходит OOS.
Т.е. получается, что когда оптимизация идет на красоту, то подгоночная составляющая высока. Когда же что-то стОящее находится, то оно выглядит красиво.
Поэтому сам красоту не ищу критериями. Больше упираю на количество сделок и алгоритм ядра ТС. Цель - получить красоту без критерия красоты. Как правило, такой вариант проходит OOS.
ЗЫ Вариант с комиссией интереснее (но, как правило, наоборот: меньше комиссия - больше вероятность нахождения закономерности). В нем фактически идет уменьшение количества сделок (стат. значимости), но увеличение вероятности удачного поиска.
Ну понятно что там еще есть ограничители. Я например так действую:
- Выставляю минимально требуемое мат ожидание в пунктах (как раз с учетом спреда, туда же комиссию пихаю и своп, примерно)
- Выставляю минимально требуемое количество трейдов, которое мне нужно с учетом длины рассматриваемого участка
- Настраиваю фактор соответствия кривым
Ну понятно что там еще есть ограничители. Я например так действую:
- Выставляю минимально требуемое мат ожидание в пунктах (как раз с учетом спреда, туда же комиссию пихаю и своп, примерно)
Не делаю так. Рыночные закономерности не зависят от торговых условий брокера. Склоняюсь к такому.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Машинное обучение в трейдинге: теория, модели, практика и алготорговля
fxsaber, 2023.08.19 11:10
Брокера для исторических данных выбирать по наибольшей потенциальной прибыли. Например, потенциалка у EURUSD_Broker1 выше, чем у EURUSD_Broker2. Тогда берете EURUSD_Broker1.
Скальпируются и мажоры и кроссы. Но далеко не все. Просто на каждом пообучать и посмотреть результаты. Так и делаю, грубо говоря.
Т.е. искать логично там, где выше концентрация "золота в породе".
- Выставляю минимально требуемое количество трейдов, которое мне нужно с учетом длины рассматриваемого участка
- Настраиваю фактор соответствия кривым
Привязку ТС к спреду не понимаю.
- Например, можно обучить ТС, чтобы выдавал PF>2.5. При должном количестве сделок это почти автоматом выдаст красивую кривую
С остальным я согласен.
- Привязку ТС к спреду не понимаю
Интересно было бы увидеть множество кривых, отобранных таким способом (критерий MaxBalance "не по красивости").
Это был шестой результат в соответствующем opt-файле. Первые пять выглядят хуже.
Делаю малое количество проходов ГА, чтобы наборы входных параметров не были близки между собой.
У меня сложилось впечатление, что есть некие подходы к построению ТС, когда критерий MaxBalance с ограничением по количеству сделок снизу всегда на Sample дает красивую кривую. При этом такую ТС можно считать, как что-то рациональное, даже если на OOS полный слив. Но вот специально искать красоту по Шарпу, R^2 или критерием в данной статье видится сомнительным. Возможно, не прав.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Брутфорс-подход к поиску закономерностей (Часть VI): Циклическая оптимизация:
В этой статье я покажу первую часть доработок, которые позволили мне не только замкнуть всю цепочку автоматизации для торговли в MetaTrader 4 и 5, но и сделать что-то гораздо интереснее. Отныне данное решение позволяет мне полностью автоматизировать как процесс создания советников, так и процесс оптимизации, а также минимизировать трудозатраты на поиск эффективных торговых конфигураций.
Самым главным элементом во всей идее является система взаимодействия между терминалом и моей программой. Фактически, она является циклическим оптимизатором с расширенными оптимизационными критериями, самому важному из которых я посветил весь предыдущий раздел. Для того, чтобы вся система функционировала, сперва необходим источник котировок, коим и выступает один из терминалов MetaTrader 5. Как я уже показывал в предыдущей статье, котировки записываются в файл с удобным мне форматом. Это делается с помощью советника, который функционирует довольно странно на первый взгляд:
Я посчитал довольно интересным и полезным опытом применение своей уникальной схемы функционирования советников. Здесь представлена лишь демонстрация на примере тех задач, которые нужно было решать именно мне, но это все можно применять и для торговых советников:
Автор: Evgeniy Ilin