В процессе поиска собственной системы торговли я перепробовал довольно много всего, сейчас я могу сказать, что являюсь сторонником системной торговли и алготрейдинга. Одним из побочных результатов этого «увлечения» стало написание забавной программки с графическим интерфейсом, значительно облегчающей системную торговлю внутри дня, о которой я расскажу в этой статье после небольшого предисловия.
Это моя первая статья на Смартлабе, хотя я читаю ресурс с первых дней его основания, поэтому ряд пишущих здесь людей в какой-то степени оказали на меня влияние, в частности Алексей Ван, pratrader (в большей степени ранние записи в его ЖЖ) и ряд других системщиков.
Как и большинство системщиков я стал искать «грааль» с помощью программ анализа исторических данных, начал даже с Excell, потом перешел на AmiBroker и остаюсь на нем до сегодняшнего дня. Было у меня ощущение, что системе можно доверять получив на истории хорошую эквити, к тому же если в основе системы лежат какие-либо здравые гипотезы о той или иной неэффективности рынка, а так же система не содержит пару 3-5 параметров, которых можно подогнать под любую историю. В любом случае, я убежден, что начинать торговать такую прогнанную систему с понятным Max. DrowDown за пять лет лучше, чем тупо соваться в рынок только потому, что зачесалась левая пятка.
В результате гигантского числа переборов разных гипотез и идей начали вырисовываться кое-какие системы. Сначала они были довольно громоздкие как минимум с тремя параметрами, которые после начала реальной торговли «почему-то» начинали давать плоскую эквити (а не горку, как на истории). И опять нужно было начинать новые поиски.
Перечитывая в очередной раз ЖЖ pratrader, наткнулся на идею, которая мне очень понравилась, в общих словах ее можно сформулировать следующим образом – система должна состоять из множества разных независимых алгоритмов, каждый из которых, конечно же, обладает положительным мат. ожиданием. Одновременная торговля этих алгоритмов приведет к сглаживанию суммарной эквити и диверсификации общей торговой системы.
Таким образом, я оттестировал несколько абсолютно простых систем, с целью их объединить в одну систему. Чтобы понимать простоту системы – приведу один пример такой системы:
Инструмент: Si (фьючерс USDRUB)
Тайм-фрейм: 5 мин.
Покупаем в основную сессию, если 5мин свеча закрывается выше максимума вчерашнего дня.
Стоп: 1% от цены входа.
Закрываем позицию в 23:00 (можно и перед самым закрытием «вечерки», не принципиально).
В общем-то все. Тест на Ами с 2010 года показывает вот такой график эквити при тесте 1 контрактом:
По мне так очень неплохая линия, доходность конечно при одном контракте никакая и большинство местных миллионеров не воспримут эту доходность всерьез.
Но можно же идти дальше – запустить 10 систем с похожими эквити, но основанными на других идеях. Что в общем-то я и сделал. Признаюсь, были моменты, когда я думал что ухватил кое-кого за яица и до неприличного обогащения осталось совсем немного времени. На практике же оказалось, что не так уж и просто дождаться этого одного условия в течение торговой сессии. А если таких условий на вход с десяток? И столько же на выход (и не всегда по тейку и стопу, когда-то нужно выйти по времени – например не переносить через ночь – это же нужно не ложится спать до 23:50 каждый день, что для меня оказалось не такой уж простой задачей). Это только на первый взгляд кажется, что исполнять простые условия – просто. Неделю или две может и будет получаться, потом возникает обстоятельство непреодолимой силы, когда тебя нет у терминала и именно эта бы сделка дала половину месячной прибыли по закону подлости.
Те, кто дочитал до этого места, наверное поняли к чему я клоню. Нужно писать робота. На это ушло у меня пара месяцев, так как я не практикующий программист, хотя у меня и профильное образование. Повспоминал основы объектно-ориентированного программирования, и прочее, разобрался с API SmartCom 3.0 своего брокера (ИТ-Инвест). В разбирательстве мне очень помог пример TestConnect, который распространяется бесплатно с дистрибутивом SmartCom в котором присутствуют все основные операции со API. Ну и так как задача идейно несложная (не HFT алгоритмы), а тупо сравнить пару чисел и выставить заявку – за некоторое время я написал то, что реализует мои системки, причем с GUI, то есть правило входа и выхода можно собрать тыкая мышкой, а не изменяя код. По сути это шедулер, отсюда и название – Marker Scheduler.
Например, создание приведенного выше правила с покупкой Si в интерфейсе будет выглядеть так:
После нажатия кнопки 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: с указанием времени. Указав здесь время и выставив флаг, программа безусловно по рынку закроет все открытые позиции и отменит все активные ордера, в том числе и те, что выставлены не по ее правилам а в ручную. Это полезно в случае если ничего не хочется переносить на ночь.
Как видно, на главном окне присутствует почти вся необходимая информация о текущем положении по счету, так же будет видно какие правила уже работают, какие финишировали, а какие ждут срабатывания (в столбце статус).
У таблиц есть контекстные меню которые позволяют выполнять операции с правилами (отменить правило, удалить правило и т.п.) или ордерами (отменить ордер вручную). Это для каких то экстренных случаев, обычно не нужно.
Так же программа содержит окно лога в котором отображаются все действия предпринимаемые программой:

Так же уже позже я дописал модуль отчетов, в котором можно применить фильтры и посмотреть эквити отдельно взятых стратегий, так и общую эквити:
Все это крутится у меня уже какое-то время на сервере под Windows, первое время конечно каждый день приходилось править разные баги, сейчас уже в основном всякие украшательства типа отчетов и т.п.
Интересно мнение местной публики по поводу всего здесь мной написанного. Но заранее скажу, что писал я все это не для того, чтобы пытаться впарить программу или брать в ДУ – это однозначно нет, так как коммерческого потенциала по продаже копий я не вижу (в виду очень узкой специализированности софта), а ДУ не занимаюсь принципиально.
Теоретически, я рассматриваю вариант сотрудничества с теми, у кого есть оттестированные на истории алгоритмы, которые имеют однозначные точки входа и выхода, имеют хорошую форму эквити, положительное мат. ожидание, понятные риски. На безвозмездной основе – т.е. я бесплатно сделаю робота, если посчитаю идею перспективной и рабочей с моей точки зрения. Ну и соответственно только под SmartCom 3.0, т.е. тут будет ограничение по брокеру, так как под Quik, мне кажется, подобного добра должно хватать.
PS. Топик не читал.
Бросай трейдинг пиши робатов и продавай их