Stanislav Gribanov
Stanislav Gribanov личный блог
10 июня 2024, 10:06

Перевод книги "Хакер фондового рынка". Доминирующий цикл

Перевод книги "Хакер фондового рынка". Доминирующий цикл
Ранее:
1. Предисловие.
2. Торговля деньгами.
3. Биржевая цена.
4. Золотоискатели и ломбарды.
5. Тики, бары, свечи.
6. Как работают торговые системы?
7. Технический анализ — смысл и бессмыслица.
8. Трехчасовой курс программирования.
9. Первый урок: Переменные.
10. Разновидность калькулятора.
11. Второй час: Функции. 
12. Функции с возвращаемым значением.
13. Третий час: ветвление.
14. Циклы.
15. Следуйте за тенденцией.
16. Торговля с помощью фильтра низких частот.
17. Покупка и продажа.
18. Тестирование стратегии.
19. Распределение прибыли.
20. Индекс подлости.
21. Измерение результативности.
22. Метод Монте-Карло.
23. Против тенденции.
24. Визуализация сигналов

Доминирующий цикл

Алиса извлекла циклический торговый сигнал из кривой цен с помощью полосового фильтра. Это, очевидно, работает, когда кривая имеет соответствующий цикл, но не так хорошо, когда цены ведут себя по-другому. Логично было бы снова использовать MMI в качестве фильтра, но с обратным знаком — не торговать в трендовых ситуациях и торговать, когда рынок не показывает тренда. К сожалению, это не сработает. Это связано с тем, что циклическое поведение, которое хочет использовать Алиса, не связано с наличием или отсутствием долгосрочной тенденции.

У Алисы есть другая идея. Полосовой фильтр настроен на цикл примерно в одну неделю (30 баров). Поэтому необходимо проверить, действительно ли кривая цен имеет такой цикл, и подавить торговые сигналы, если это не так. Для этого Алиса использует функцию DominantPeriod для введения дополнительного торгового условия (сценарий Alice2b.c):

var Cycle = DominantPeriod(Price,10);
if(between(Cycle,20,40)) {
  if(crossUnder(Signal,-Threshold))
    reverseLong(1);
  else if(crossOver(Signal,Threshold))
    reverseShort(1);
}

DominantPeriod определяет основной цикл кривой и возвращает соответствующее количество баров. На следующем графике вы можете увидеть, как эта функция реагирует на сигнал с переменной частотой:

 Перевод книги "Хакер фондового рынка". Доминирующий цикл

Рис. 26 — Тестовая кривая и ее доминирующий цикл

Выше показана кривая цен, смоделированная тестовым сигналом. Он снова имеет уменьшающуюся частоту и, соответственно, увеличивающийся период от 10 до 60 тактов. Ниже показано возвращаемое значение функции DominantPeriod, которой подается эта кривая. Он возвращает значение между 10 и 60, что практически соответствует текущему периоду сигнала. Вы можете создать такие тестовые кривые с помощью скрипта Zorro «Filter.c».

Алиса применяет функцию DominantPeriod к серии Price с параметром фильтра 10, чтобы функция распознавала и очень короткие циклы. Результат сохраняется в переменной Cycle.

var Cycle = DominantPeriod(Price,10);

Теперь эта переменная содержит доминирующий цикл кривой цен. С помощью функции between Алиса проверяет, лежит ли этот цикл между 20 и 40 барами, т.е. может ли он быть отфильтрован полосовым фильтром, установленным на 30 баров:

if(between(Cycle,20,40)) {

  ...

Фильтрация по доминирующему циклу удваивает результат с примерно 40% до 80% годовой доходности.

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

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

Продолжение следует...
6 Комментариев
  • Василий Федорович
    10 июня 2024, 10:55
    «Алиса извлекла циклический торговый сигнал из кривой цен с помощью полосового фильтра» — как можно вытащить циклический сигнал из не циклического источника? его же там нет.
    «Это, очевидно, работает, когда кривая имеет соответствующий цикл, но не так хорошо, когда цены ведут себя по-другому» — по другому, это как?
    Вы когда нибудь видели случайный сигнал?





    а апериодический сигнал вы когда-нибудь видели?

  • Eugene Bright
    10 июня 2024, 10:56
    Интересно написано, красиво!
    цикл примерно в одну неделю (30 баров)

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

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

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