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
    Классный робот.

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

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