Главная > Торговые стратегии, Торговый робот > Торговые роботы и фракталы

Торговые роботы и фракталы

9 марта 2010

фрактал«Фрактальная геометрия, один из инструментов теории хаоса, используется для изучения феноменов, которые являются хаотическими только с точки зрения евклидовой геометрии и линейной математики. Фрактальный анализ произвел революцию в характере исследований, ведущихся в несметном количестве различных областей науки: метеорологии, медицине, геологии, экономике, метафизике. Эта новая перспективная стратегия обладает потенциалом глубокого воздействия на всех из нас, сильно изменив нашу жизнь. Фрактальный анализ — новая мощная парадигма. Вместе с квантовой механикой и теорией относительности, это новый научный мир, некогда приоткрывшийся Галилею.» Это цитата из, наверное, бессмертного труда Билла Вильямса «Торговый Хаос», одной из основных работ, ознакомление с которой начинают путь большинство трейдеров современного мира. Работают ли заложенные в нее принципы в современном рынке, когда большинство инструментов настолько коррелируют между нефтью, мировыми индексами и долларом, а также чувствительны к несдержанным репликам власть предержащих, мы обсуждать не будем. Но и бесполезными подобные инструменты тоже назвать нельзя. Это как презирать виолончель, лишь не умея извлекать из нее божественные мелодии. Последнему мы и будем учиться. Итак, фракталы в редакции QUIK:

Индикатор «Фракталы» включает в себя серию из нескольких последовательных свечей и имеет две разновидности:

  • «Фрактал вверх» – это серия из минимум пяти последовательных свечей, в которой перед средней свечой и за ней находятся свечи, чьи максимумы не выше, чем у средней свечи.
  • «Фрактал вниз» – это серия из минимум пяти последовательных свечей, в которой перед средней свечой и за ней находятся свечи, чьи минимумы не ниже, чем у средней свечи.
Индикатор "Фрактал" в QUIK

Индикатор "Фрактал" в QUIK

Зелеными стрелками показаны фракталы «Вверх», красными, соответственно, «Вниз». Замечу лишь, что период в настройках этого индикатора в QUIK может быть больше или равен «5».

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

Код доступен только зарегистрированным пользователям:

В итоге имеем таблицу, в которой робот пишет тип фрактала (вверх или вниз), время его позиционирования относительно интервала графика, и соответственно уровень. Остается лишь приписать этому роботу торговый модуль, и блоки логики.

Enjoy!

П.С. На картинке красная стрелка, а не мухомор :)

Евгений Торговые стратегии, Торговый робот , , , ,

  1. FAI
    29 Март 2010 в 23:53 | #1

    Что-то напутано в функции FUNC FRACTAL (NUMBER)

    1. Параметр «NUMBER» в самой функции нигде не используется.

    Непонятно само назначение функции.

    Она возвращает первое попавшееся значение «фрактала» (мин/макс) и его тип?

    Как это вообще можно использовать в роботе?

    (поскольку мин/макс определяется с задержкой)

    Евгений Reply:

    Не напутано, все работает.

    параметр NUMBER вы правы, не используется, но без доппараметров функция выдаст ошибку. При исполнении функции назначаются две переменные:FRACTALHIGH и FRACTALLOW. и после возвращения из функции именно они несут свмысловую нагрузку.

    фрактал формируется на 5-ти барах, естественно задержка будет.

  2. alegnom
    30 Март 2010 в 22:08 | #2

    Здравствуйте,

    Может вопрос не в эту тему, но по данной программе.

    Какие могут быть причины, того, что программа работает правильно(определяет фрактал)на реальном счёте (в квике версии 5.16.0.145), а на учебном счёте (в квике версии 5.15.0.69) всегда выдают максимум последней свечи?

    Это дело в различных версиях квика или в реальном(учебном счёте) или в чём-то ещё?

    Спасибо.

    Евгений Reply:

    Для начала обновите квик учебного счета. Данные фракталов не транслируются с сервера, формируются непосредственно в квике.

  3. FAI
    31 Март 2010 в 11:20 | #3

    Какую стратегию можно построить на фракталах?

    Евгений Reply:

    Ну например покупать при фрактале «вниз» и продавать при фрактале «вверх». Поищите в сети, думаю вопросы снимутся сами по себе.

    alegnom Reply:

    Наоборот. Я хорошо знаком с этой стратегией. Она очень интересная. Но одних фракталов мало. Нужно ещё использовать скользящие средние. В оригинальной теории (читайте Билла Вильямса «Торговый Хаос») их 3 штуки с разными периодами индигатор называется Аллегатор. Но можно использовать в упрощенной модели только 1 линию — которая средняя. Фракталы это часть трендовой системы — их используют чтобы ловить сильные движения рынка. Если говорить просто, то мы находим фрактал, запоминаем его и когда цена обновит максимум(минимум) фрактала, при условии что скользящая средняя будет ниже(выше) цены, мы пукупаем(продаём). Поддержкой в данном случае для нас выступает скользящая средняя. Как-то так=)

    Евгений Reply:

    Ну поэтому я и сказал «например». Главное — уметь получить фракталы из квика, а уж как применять — масса способов.

    alegnom Reply:

    С этим согласен) Спасибо вам! Давно хотел автоматизировать данную систему) И обновление учебного квика помогло, за это отдельное спасибо=)

  4. FAI
    1 Апрель 2010 в 10:10 | #4

    //Ну например покупать при фрактале «вниз» и продавать при фрактале «вверх». //

    поскольку индикатор запаздывающий (как минимум на 3 бара) — явно, что это не сработает

    Евгений Reply:

    Ну не на три бара. Фрактал уже доступен в квике на начале второго от фрактального бара. Откройте график в кивке, наложите фрактал и посмотрите.

    Но я не защищаю «стратегию», я же сказал как например использовать можно.

  5. SkAV
    15 Апрель 2010 в 06:19 | #5

    День добрый! Подскажите как можно реализовать, к примеру возник сигнал, был выставлен ордер если через 2 бара ордер не был исполнен то снимаем его? Заранее брагодарю.

    Евгений Reply:

    Задаете интервал графика и проверяете время активного ордера. Если больше — снимаете.

  6. 23 Май 2010 в 21:46 | #6

    доброго времени суток!

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

    пробовал

    IF FRACTALHIGH>0 AND FRACTALLOW>0

    I=N ' ВЫХОДИМ ИЗ ЦИКЛА

    но это неверно, ведь на одном баре не может быть одновременно двух значений...

    туплю...

    Евгений Reply:

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

    COUNTFRACTALS=0

    и в функции поиска фракталов сделать так:

    IF FRACTALHIGH>0 OR FRACTALLOW>0

    COUNTFRACTALS=COUNTFRACTALS+1

    END IF

    IF COUNTFRACTALS=2

    I=N ' ВЫХОДИМ ИЗ ЦИКЛА

    END IF

    Можно сделать хитрый и элегантный ход:

    IF FRACTALHIGH>0 AND FRACTALLOW>0

    I=N ' ВЫХОДИМ ИЗ ЦИКЛА

    END IF

    т.е. при нахождении фракталов и вверх и вниз — только тогда выходим из цикла. Единственно, надо учитывать что могут быть последовательные однонаправленные фракталы.

    managa1009 Reply:

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

    прямо сейчас попробовал — работает! выходит зря маялся сегодня весь день с ручным расчетом фракталов:(

    ну и ладно, одной затыкой меньше, большой пасиб, Евгений!

  7. 24 Май 2010 в 16:41 | #7

    Все, разобрался...

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

    Там же (sim-sochi.narod.ru/Fractals.rar) нашел пример расчета, после некоторой переделки работает.

    Евгений Reply:

    Насколько я знаю, в последней версии Квика баг с фракталами исправлен.

Необходимо войти на сайт, чтобы написать комментарий.