Alexand77
Alexand77 личный блог
27 мая 2015, 18:00

Трейдинг по правилам. Автоматизированная система выставления заявок MarketScheduler

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

  Это моя первая статья на Смартлабе, хотя я читаю ресурс с первых дней его основания, поэтому ряд пишущих здесь людей в какой-то степени оказали на меня влияние, в частности Алексей Ван, pratrader (в большей степени ранние записи в его ЖЖ) и ряд других системщиков.

  Как и большинство системщиков я стал искать «грааль» с помощью программ анализа исторических данных, начал даже с Excell, потом перешел на AmiBroker и остаюсь на нем до сегодняшнего дня. Было у меня ощущение, что системе можно доверять получив на истории хорошую эквити, к тому же если в основе системы лежат какие-либо здравые гипотезы о той или иной неэффективности рынка, а так же система не содержит пару 3-5 параметров, которых можно подогнать под любую историю.  В любом случае, я убежден, что начинать торговать такую прогнанную систему с понятным Max. DrowDown за пять лет лучше, чем тупо соваться в рынок только потому, что зачесалась левая пятка.

  В результате гигантского числа переборов разных гипотез и идей начали вырисовываться кое-какие системы. Сначала они были довольно громоздкие как минимум с тремя параметрами, которые после начала реальной торговли «почему-то» начинали давать плоскую эквити (а не горку, как на истории).  И опять нужно было начинать новые поиски.

  Перечитывая в очередной раз ЖЖ pratrader, наткнулся на идею, которая мне очень понравилась, в общих словах ее можно сформулировать следующим образом – система должна состоять из множества разных независимых алгоритмов, каждый из которых, конечно же, обладает положительным мат. ожиданием. Одновременная торговля этих алгоритмов приведет к сглаживанию суммарной эквити и диверсификации общей торговой системы.

  Таким образом, я оттестировал несколько абсолютно простых систем, с целью их объединить в одну систему. Чтобы понимать простоту системы – приведу один пример такой системы:

Инструмент: Si (фьючерс USDRUB)

Тайм-фрейм: 5 мин.

Покупаем в основную сессию, если 5мин свеча закрывается выше максимума вчерашнего дня.

Стоп: 1% от цены входа.

Закрываем позицию в 23:00 (можно и перед самым закрытием «вечерки», не принципиально).

В общем-то все. Тест на Ами с 2010 года показывает вот такой график эквити при тесте 1 контрактом:
Трейдинг по правилам. Автоматизированная система выставления заявок MarketScheduler 

  По мне так очень неплохая линия, доходность конечно при одном контракте никакая и большинство местных миллионеров не воспримут эту доходность всерьез.

  Но можно же идти дальше – запустить 10 систем с похожими эквити, но основанными на других идеях. Что в общем-то я и сделал. Признаюсь, были моменты, когда я думал что ухватил кое-кого за яица и до неприличного обогащения осталось совсем немного времени. На практике же оказалось, что не так уж и просто дождаться этого одного условия в течение торговой сессии. А если таких условий на вход с десяток? И столько же на выход (и не всегда по тейку и стопу, когда-то нужно выйти по времени – например не переносить через ночь – это же нужно не ложится спать до 23:50 каждый день, что для меня оказалось не такой уж простой задачей). Это только на первый взгляд кажется, что исполнять простые условия – просто. Неделю или две может и будет получаться, потом возникает обстоятельство непреодолимой силы, когда тебя нет у терминала и именно эта бы сделка дала половину месячной прибыли по закону подлости.

  Те, кто дочитал до этого места, наверное поняли к чему я клоню. Нужно писать робота. На это ушло у меня пара месяцев, так как я не практикующий программист, хотя у меня и профильное образование. Повспоминал основы объектно-ориентированного программирования, и прочее, разобрался с API SmartCom 3.0 своего брокера (ИТ-Инвест). В разбирательстве мне очень помог пример TestConnect, который распространяется бесплатно с дистрибутивом SmartCom в котором присутствуют все основные операции со API. Ну и так как задача идейно несложная (не HFT алгоритмы), а тупо сравнить пару чисел и выставить заявку – за некоторое время я написал то, что реализует мои системки, причем с GUI, то есть правило входа и выхода можно собрать тыкая мышкой, а не изменяя код. По сути это шедулер, отсюда и название – Marker Scheduler.

 Например, создание приведенного выше правила с покупкой Si в интерфейсе будет выглядеть так: 
Трейдинг по правилам. Автоматизированная система выставления заявок MarketScheduler 

После нажатия кнопки Apply Rule – правило попадает в список правил (в данном случае тут только одно) и дожидается своего времени открытия. После наступления событие происходит покупка Si и выставление стопа на расстоянии 1% от цены покупки.

  Если наступает правило выхода – в данном случае это либо стоп либо время 23:00 то правило завершает свою работу. Причем, если завершение наступило в результате достижения временной границы (23:00), то сделка закроется по текущей цене и стоп, который был выставлен – автоматически отменится.

  Если список правил сохранить как список по умолчанию и выставить флаг AutoTrade – то на следующий день робот повторит все правила из списка автоматически и т.д.

  В общем случае открытие производится в указанном промежутке времени (OpenTime) по логическому «И» с текущей ценой (Х) выше или ниже порогового значения. Эти значения – в выпадающем окне можно выбрать в данный момент следующие:

Value – т.е. выше или ниже определенного значения, которое нужно ввести ниже в числовое поле

OpenDay – открытие текущего дня

Open, High, Low, Close предыдущего дня.

ValueWhen – вычисляемое значение по времени. Т.е. к примеру правило открытия может звучать так: «открыться выше цены в 13:00 в промежутке времени от 14 до 15 часов» — в 13 часов вычислится значение инструмента и от него будет вестись сравнение с 14 до 15 часов.

Закрытие возможно по времени с логическим «ИЛИ» с положением цены относительно тех же констант.

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

  Так же присутствует флаг Close All at: с указанием времени. Указав здесь время и выставив флаг, программа безусловно по рынку закроет все открытые позиции и отменит все активные ордера, в том числе и те, что выставлены не по ее правилам а в ручную. Это полезно в случае если ничего не хочется переносить на ночь.

Главное окно выглядит так:
Трейдинг по правилам. Автоматизированная система выставления заявок MarketScheduler 

  Как видно, на главном окне присутствует почти вся необходимая информация о текущем положении по счету, так же будет видно какие правила уже работают, какие финишировали, а какие ждут срабатывания (в столбце статус).

  У таблиц есть контекстные меню которые позволяют выполнять операции с правилами (отменить правило, удалить правило и т.п.) или ордерами (отменить ордер вручную). Это для каких то экстренных случаев, обычно не нужно.

Так же программа содержит окно лога в котором отображаются все действия предпринимаемые программой:
Трейдинг по правилам. Автоматизированная система выставления заявок MarketScheduler

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

 
Трейдинг по правилам. Автоматизированная система выставления заявок MarketScheduler 

    Все это крутится у меня уже какое-то время на сервере под Windows, первое время конечно каждый день приходилось править разные баги, сейчас уже в основном всякие украшательства типа отчетов и т.п.

  Интересно мнение местной публики по поводу всего здесь мной написанного. Но заранее скажу, что писал я все это не для того, чтобы пытаться впарить программу или брать в ДУ – это однозначно нет, так как коммерческого потенциала по продаже копий я не вижу (в виду очень узкой специализированности софта), а ДУ не занимаюсь принципиально.  

Теоретически, я рассматриваю вариант сотрудничества с теми, у кого есть оттестированные на истории алгоритмы, которые имеют однозначные точки входа и выхода, имеют хорошую форму эквити, положительное мат. ожидание, понятные риски. На безвозмездной основе – т.е. я бесплатно сделаю робота, если посчитаю идею перспективной и рабочей с моей точки зрения. Ну и соответственно только под SmartCom 3.0, т.е. тут будет ограничение по брокеру, так как под Quik, мне кажется, подобного добра должно хватать.  

55 Комментариев
  • Сколько стоит эта штука?
    PS. Топик не читал.
  • Аккаунт Удален
    27 мая 2015, 18:08
    вот ты заморочился
    Бросай трейдинг пиши робатов и продавай их
  • SciFi
    27 мая 2015, 18:40
    У меня аналогичный путь, только я торгую пока 1 стратегию но на 9 фьючерсах и 9 акциях. Только ради снижения одномоментной просадки. Согласен с тем, что надо писать простые алгоритмы с маленьким числом параметров, так как они меньше глючат.
      • SciFi
        27 мая 2015, 20:58
        Alexand77, QPILE под QUIK
  • Cristopher Robin
    27 мая 2015, 18:52
    Нахожусь на том же пути, пользуюсь той же логикой. Пока что пришел к выводу, что устойчивое смещение вероятностей можно получить только в HFT, остальное дрочь. Правда, все равно остается открытым вопрос, какие гипотезы замерять.
  • Artemunak
    27 мая 2015, 19:30
    спасибо за статью.
    использую примерно такой-же подход, о чём писал.
    да и много кто использует и пишет ;)
    главную проблему тут вижу так: допустим мы более-менее умеем тестировать на истории и отбрасываем заведомую фигню и оставляем норм варианты.
    Но к сожалению не факт что даже они будут давать хоть какую-то доходность. Слабенькие стратегии могут месяцами быть без прибыли, и придётся переживать об их отключении… Короче не грааль, по моему опыту на простых стратежках далеко не уедешь, но вы в правильном направлении.
  • Владимир Фокс
    27 мая 2015, 19:45
    Alexand77, у меня есть приб стратегия — но пока просто в друзьях посижу у вас — там посмотрим -может и опишу (она простая)
  • SenSoR
    27 мая 2015, 19:47
    По правильному пути идете.
  • Андрей
    27 мая 2015, 19:48
    Сможете написать робота, который торгует графические паттерны?
    • sapirk
      27 мая 2015, 19:59
      Андрей, если графические паттерны возможно перевести в цифры, то можно…
      • Андрей
        27 мая 2015, 20:10
        Сергей Патрин, отбой от, пробой уровня, флаг, клин, треугольник, можно-ли робота научить торговать эти фигуры?
          • Андрей
            27 мая 2015, 20:52
            Alexand77, флаг привел в качестве примра. Я торгую некие паттерны, они довольно успешно работают. Если Вы готовы взятся за их реализацию, готов предоставить подробности в личку.
        • ves2010
          27 мая 2015, 22:43
          Андрей, можно причем элементарно… индикатор треугольника есть у мя в блогах
  • MyProfit
    27 мая 2015, 20:04
    Молодец.! Думаю подумаю над твоим предложением. Осваивай программирование ))
  • Артур Сотников
    27 мая 2015, 21:37
    Спасибо за статью, плюсанул в карму. Сам прихожу к тому, что нужно развиваться в сторону автоматизации сначала подачи торговых сигналов, а в идеале и формализации стратегии и системы до уровня робота/роботов;) В процессе и система имхо улучшится и дообточится) Образование тоже околопрофильное, навыки кодинга есть, сейчас начинаю экпериментировать в Wealth-Labe
      • Артур Сотников
        28 мая 2015, 08:26
        Alexand77, В целом наверно так и есть-у кого есть что формализовывать уже либо формализованно либо в процессе… Людей имеющих годную ТС, которую можно алгоритмизировать и одновременно ничего не смыслящих в бэк-тестах и программировании имхо исчезающе мало… А много народа торгует на чистой интуиции и ванговании, причём иногда ещё и чужой… Как это алгоритмизировать)))
  • ves2010
    27 мая 2015, 22:42
    держи бота
    убери выход в конце дня и запусти на си…
  • sheffield
    27 мая 2015, 23:56
    Позволю себе пару комментариев:

    1. стоп в 1% не хорошо, т.к. он расчетный. стоп нужно ставить исходя из ситуации на рынке
    2. систем достаточно 2 — одна для высокой волатильности, другая для низкой
  • ch5oh
    28 мая 2015, 00:08
    А можно прогу пощупать вживую?.. По скриншотам оно как-то не то… =)
  • QJGlXS3Ars
    28 мая 2015, 06:51
    Zedgraph + C# + неделя рутинной писанины и ву а ля. Высокотехнологичный софт с сакральными алгоритмами работы готов к продаже незнакомым с программированием. Околорынок живет!
      • QJGlXS3Ars
        28 мая 2015, 08:27
        Alexand77, такие статьи пишут в 2х случаях. 1 — продавать, 2 — делиться. Если вы не собираетесь делать первое, то где ссылка скачать софт? Про исходники на гитхабе тихо умолчим :)
          • QJGlXS3Ars
            28 мая 2015, 09:18
            Alexand77, нет никаких претезний, каждый зарабатывает как может. Просто уже иммунитет на всяких маркетологов. Удачи вам :)
  • Lazz
    28 мая 2015, 10:25
    Тому кто запускает подобное добро на windows-е, и не хочет беспокоиться о перебоях в поставках интернета и электричества, а также о наличии отдельно работающего компа советую посмотреть вот это

    aws.amazon.com/ru/ec2/pricing/

    Если кратко. Вы арендуете виртуальную машину с установленным виндовсом. Заходите на нее через терминал RDP (типа как удаленный помощник) устанавливаете и запускаете там все что вам нужно.
    Круглосуточная аренда на месяц обходится примерно в $15

      • Lazz
        28 мая 2015, 11:03
        Alexand77, ну так я и не конкретно вам закинул, а просто «Тому кто запускает подобное добро на windows-е...».
        Не у всех есть под рукой неограниченно и бесплатно.

        Не хочу плакаться, но я в свое время сильно намучался с попытками организовать 99.99% uptime сервер на дому.
        Просто поделился опытом. Разве сайт не для этого.
          • vito333
            28 мая 2015, 15:08
            Alexand77, вот заодно присоветуйте, вдруг что новое выяснится
  • SciFi
    29 мая 2015, 16:04
    Сделал вчера бектест описанной стратегии с небольшими изменениями. Уровень определялся как максимум / минимум за n последних свечей а не за предыдущий день. Закрытие тоже не абы как в конце дня, а по пробою уровня. Это так называемая стратегия Hi-Low. Итог — стратегия хорошая, доходность показывает примерно такую же, как моя текущая трендовая стретегия на MACD.
      • SciFi
        01 июня 2015, 12:13
        Alexand77, да, при оптимальном варианте обе стратегии дают примерно одинаковые деньги
          • waldhaber
            30 августа 2016, 04:10

            Alexand77, классно! Сейчас так смело мало кто напишет.

            Так же перечитываю в данный момент Пратрейдера, очень далёк от алго, но благодаря его жж в голове хоть как-то сложилось как и с чего начинать, если уж начинать в этой теме.

             

  • Виктор Суржиков
    30 мая 2015, 10:25
    Здравствуйте Alexand77. Есть интересная идея (по крайней мере для меня). В друзья вас добавить не могу из за низкого рейтинга. В скайпе оставил вам сообщение (Виктор Суржиков)
  • Антон Б
    27 ноября 2015, 18:50
    Классный робот.

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

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