bascomo
bascomo личный блог
26 июля 2023, 19:38

Как я пакетирую торговые алгоритмы

Subj

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

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

Напишу последовательность шагов ниже в виде скрипта.

  1. Создаём много разных стратегий, они же торговые алгоритмы. Если у вас меняются параметры, это один и тот же алгоритм. Я же имею ввиду, что они должны быть принципиально разные. Например: открываемся по пересечению МА, закрываемся по стохастику. Открываемся по RSI, закрываемся скользящим стопом. Открываемся по MACD, закрываемся по пересечению Close AMA и т.д.
  2. Тестируем их на разных инструментах и разных периодах. Дискретность можно выбрать месяц.
  3. Успешные запоминаем, даже если они были успешными только на одном инструменте и в одном месяце.
  4. Далее тестируем скользящим окном. Определяем дату начала, пусть 01.01.2023
  5. Определяем шаг (7 дн) и размеры окна (14 дн)
  6. Тестируем всё, что получилось в (3), на периоде в 14 дн до даты из (4), отбираем топ нужного количества по, например, прибыли (у меня сейчас так, и на графике ниже так). Например, вы выделили на инструмент депозит 1000 и хотите, чтобы у вас было 10 алгоритмов в лонг и 10 в шорт. Соответственно, отбираете 10 лучших лонг-алгоритмов по прибыли и 10 лучших шорт-алгоритмов. Понятно, что по части алгоритмов там будут гигантские просадки и вообще в выборку попадёт часть алгоритмов, которые нужно исключить, поскольку мы тут смотрим только на прибыль. Пока что на это забьём, ниже будет понятно, почему.
  7. После того, как отобрали нужное количество для лонг и шорт, с даты (4) торгуем ими на длину шага (5).
  8. В конце периода в 23:59 принудительно всё закрываем.
  9. Добавляем к дате (4) шаг (5) и повторяем с шага (6) до тех пор, пока дата не станет той, до которой хотели тестировать.
При таком подходе имеем на криптовалютных фьючерсах (плечо 10, стартовый депозит 1000, комисс 0,04%) следующий рост чистой эквити (+156% за менее чем полгода):
Как я пакетирую торговые алгоритмы

То есть, даже несмотря на тот ужас, что внутри под капотом (только по прибыли отобранные алгоритмы с большими просадками), видим уже неплохую картину роста. Если подбирать алгоритмы не только по максимальной достигнутой прибыли, но и по гладкости эквити и минимуму просадок, то этот посредственный результат увеличивается почти на порядок, примерно до 1200-1300% за полгода, а кривая становится практически прямой. Это упражнение я как раз и проделывал руками в начале июня на реальном счёте.

Если убрать плечи, то получится соответственно 15% и 120-130% за полгода.

Результаты получаются разными в зависимости от того, что мы зададим в (5). Общее правило — при увеличении длины отрезков доходность падает.

Сомневаюсь, что это будет работать или что вы достигнете сопоставимых результатов, если у вас всего несколько торговых алгоритмов, но это покажет только эксперимент.

Дополнительно отмечу, что это всё работает на минутках. Там очень, очень много шума, но и доходность несопоставима с 15 или, тем более 60 и выше таймфреймами. И в этой концепции шум, как получилось в реальной торговле, не мешает. Нужно просто его правильно отфильтровать.

Для примера приведу описание одного алгоритма:
для покупки (все три сигнала должны стать истинны)
B:AMA/Close_AboveIndicator; — Close должна быть выше AMA
B:DeepExtremumHigh_AbsSpeedFall; — Абсолютное значение скорости индикатора DeepExtremumHigh падает
B:MACDCD_DirectionDown; — значение CD индикатора MACD уменьшается — кривая движется вниз

для продажи (все три сигнала должны стать истинны)
S:DEMA_AbsSpeedGrows; — абсолютная скорость изменения DEMA растёт
S:HMA/DEMA_CrossDown; — HMA пересекла DEMA вниз
S:Stochastic%K/Stochastic%D_CrossUpContinues; — последнее пересечение медленного стохастика быстрым (не важно, сколько свечей назад) было вверх

и это указывает, что этому алгоритму разрешён только лонг
M:LongAllowed;

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

И если после прочтения стало яснее, как я это делаю, то цель поста достигнута.
64 Комментария
  • Ho_Chu
    26 июля 2023, 19:47
    не ясно, но все равно, написано красиво!!!
  • ezomm
    26 июля 2023, 20:33
    Мне твоя цель  не понятна, Но я восхищен твоей работой.Ты напомнил мне меня в 2005 г.Цель любого поста на мой взгляд — это поиск советов.Тебе советы не нужны тк ты весь в работе. Ты делаешь то, что я делал в 2005г и горько пожалел за потерянное время. У меня мнение что программисты все похожи. Они в первую очередь любят программировать, а во вторую очередь понимать законы графика. Я не призываю штудировать Ганна про силу чисел и дней календаря (часов дня). Это не обязательно.Но понять свчной анализ… язык свечей очень важно… по моему 28 летнему опыту торговли.
    В 2005 г я познакомился с прогой Нирвана.Там из 400 разных систем и алгоритмов выходил 1 сигнал лонг или шорт. Боюсь тебя обидеть, но ты изобретаешь колесо… перебирая алгоритмы, индикаторы и системы.Проги ВА уже давно есть и они размечают график в любых таймах, но дают сотни вариантов с разной вероятностью и вверх и вниз.Я отказался от любых прог и инд-в в 2010г и советую это сделать всем в пользу VSA и ВА Эллиота.
  • Тимофей Мартынов
    26 июля 2023, 20:19
    Лайк однозначно👍

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн