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 акциях. Только ради снижения одномоментной просадки. Согласен с тем, что надо писать простые алгоритмы с маленьким числом параметров, так как они меньше глючат.
  • Cristopher Robin
    27 мая 2015, 18:52
    Нахожусь на том же пути, пользуюсь той же логикой. Пока что пришел к выводу, что устойчивое смещение вероятностей можно получить только в HFT, остальное дрочь. Правда, все равно остается открытым вопрос, какие гипотезы замерять.

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

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