Блог им. Alexand77
В процессе поиска собственной системы торговли я перепробовал довольно много всего, сейчас я могу сказать, что являюсь сторонником системной торговли и алготрейдинга. Одним из побочных результатов этого «увлечения» стало написание забавной программки с графическим интерфейсом, значительно облегчающей системную торговлю внутри дня, о которой я расскажу в этой статье после небольшого предисловия.
Это моя первая статья на Смартлабе, хотя я читаю ресурс с первых дней его основания, поэтому ряд пишущих здесь людей в какой-то степени оказали на меня влияние, в частности Алексей Ван, 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. Топик не читал.
Бросай трейдинг пиши робатов и продавай их
использую примерно такой-же подход, о чём писал.
да и много кто использует и пишет ;)
главную проблему тут вижу так: допустим мы более-менее умеем тестировать на истории и отбрасываем заведомую фигню и оставляем норм варианты.
Но к сожалению не факт что даже они будут давать хоть какую-то доходность. Слабенькие стратегии могут месяцами быть без прибыли, и придётся переживать об их отключении… Короче не грааль, по моему опыту на простых стратежках далеко не уедешь, но вы в правильном направлении.
Да и вижу из того, что мне предлагали — люди не могут формализовать то что торгуют и просто верят почему то, что это принесет прибыль. Хотя для этого нет ни одного аргумента.
А по итогам сегодня — никто не захотел получить от меня бесплатного робота на свою формализованную стратегию, такие вот промежуточные результаты.
убери выход в конце дня и запусти на си…
1. стоп в 1% не хорошо, т.к. он расчетный. стоп нужно ставить исходя из ситуации на рынке
2. систем достаточно 2 — одна для высокой волатильности, другая для низкой
Вот сколько за нее можно выручить по вашему экспертному мнению? В том то и дело, у меня з.п. выше и регулярнее.
Кроме того, в ней нет никаких алгоритмов по умолчанию, слово Scheduler разве не намекает на это?
Я и делюсь, условия в конце поста, мне кажется оно адекватное, без финансовой составляющей.
Ваша то претензия в чем? В том что не делюсь лично с вами? Ну кроме того что эта действительно простенькая прога вам показалась недостойной главной страницы этого ресурса?
На самом деле все же просто, пейсал для себя то чего мне не хватало, вообще я считаю что этот функционал должен быть в любом нормальном терминале от брокера просто по умолчанию, к тому же действительно это не сложный функционал, не требует переработки все терминала.
Потом на досуге дорабатывал гуи и отчеты до состояния, что теоретически кто то другой уже может воспользоваться этой прогой.
Я в кой то веки решил написать на смарт статью, ради которых мне кажется этот сайт и задумавался — поделится идеей по трейдингу и попросить поделится идеями трейдинга со мной — и вроде как делятся :).
А не разводить срач типа «Украина-Россия» или «Инвестиции vs Спекуляции». Вроде получилось, даже в топ за 24 часа попала статья.
aws.amazon.com/ru/ec2/pricing/
Если кратко. Вы арендуете виртуальную машину с установленным виндовсом. Заходите на нее через терминал RDP (типа как удаленный помощник) устанавливаете и запускаете там все что вам нужно.
Круглосуточная аренда на месяц обходится примерно в $15
Если кратко, то это все у меня под рукой неограниченно и бесплатно.
Не у всех есть под рукой неограниченно и бесплатно.
Не хочу плакаться, но я в свое время сильно намучался с попытками организовать 99.99% uptime сервер на дому.
Просто поделился опытом. Разве сайт не для этого.
А так конечно совет правильный. И в 2015 году уже есть много способов порешать этот вопрос правильно и не очень дорого.
Alexand77, классно! Сейчас так смело мало кто напишет.
Так же перечитываю в данный момент Пратрейдера, очень далёк от алго, но благодаря его жж в голове хоть как-то сложилось как и с чего начинать, если уж начинать в этой теме.