Блог им. Alexand77

Трейдинг по правилам. Автоматизированная система выставления заявок 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, мне кажется, подобного добра должно хватать.  

★35
55 комментариев
Сколько стоит эта штука?
PS. Топик не читал.
Профессор Преображенский, начни с конца читать.
avatar
вот ты заморочился
Бросай трейдинг пиши робатов и продавай их
Эльвир Нагибуллин, написание софта на заказ это очень замороченная тема, заказчики замучают переделками и придирками, так как сами не знают что хотят. А если таких несколько? А если что то пойдет не так в отработке сигнала? Съедят же вместе с калом. Многие мои друзья программисты, я примерно представляю эту кухню и мне она не нравится.
avatar
У меня аналогичный путь, только я торгую пока 1 стратегию но на 9 фьючерсах и 9 акциях. Только ради снижения одномоментной просадки. Согласен с тем, что надо писать простые алгоритмы с маленьким числом параметров, так как они меньше глючат.
avatar
SciFi, а робот на чем написан?
avatar
Alexand77, QPILE под QUIK
avatar
Нахожусь на том же пути, пользуюсь той же логикой. Пока что пришел к выводу, что устойчивое смещение вероятностей можно получить только в HFT, остальное дрочь. Правда, все равно остается открытым вопрос, какие гипотезы замерять.
спасибо за статью.
использую примерно такой-же подход, о чём писал.
да и много кто использует и пишет ;)
главную проблему тут вижу так: допустим мы более-менее умеем тестировать на истории и отбрасываем заведомую фигню и оставляем норм варианты.
Но к сожалению не факт что даже они будут давать хоть какую-то доходность. Слабенькие стратегии могут месяцами быть без прибыли, и придётся переживать об их отключении… Короче не грааль, по моему опыту на простых стратежках далеко не уедешь, но вы в правильном направлении.
avatar
Artemunak, от простого к сложному. К тому же я понимаю, как должна вести себя стратегия, глядя на ее многолетний бэктест. А программа дает отчет по эквити отдельной стратегии, поэтому можно понять, когда что то пошло не так и без переживаний отключить — останется ведь еще куча других. Хуже когда поставил все на одну и понимаешь, что с ней что то не так, а ты в нее столько вбухал времени (читай оптимизации 100 параметров на истории).
avatar
Alexand77, у меня есть приб стратегия — но пока просто в друзьях посижу у вас — там посмотрим -может и опишу (она простая)
Владимир Фокс, ок не вопрос.
avatar
По правильному пути идете.
avatar
SenSoR, спасибо!
avatar
Сможете написать робота, который торгует графические паттерны?
avatar
Андрей, если графические паттерны возможно перевести в цифры, то можно…
avatar
Сергей Патрин, отбой от, пробой уровня, флаг, клин, треугольник, можно-ли робота научить торговать эти фигуры?
avatar
Андрей, можно, только зачем? Почему вы считаете что «торговать» флаг это прибыльно, есть ли соответствующие бэктесты? Пробой уровня я в общем то как раз в этом посте и привел для примера, как раз в основном это и умеет делать в данной инкарнации программа, без допиливания.
avatar
Alexand77, флаг привел в качестве примра. Я торгую некие паттерны, они довольно успешно работают. Если Вы готовы взятся за их реализацию, готов предоставить подробности в личку.
avatar
Андрей, отписал в личку.
avatar
Андрей, можно причем элементарно… индикатор треугольника есть у мя в блогах
avatar
Андрей, я в посте написал — если правило на вход и на выход четко сформулировано, то можно написать.
avatar
Молодец.! Думаю подумаю над твоим предложением. Осваивай программирование ))
avatar
MyProfit, что значит осваивай :) Я -дцать лет назад получил диплом и в нем написано, что вроде как освоил программирование :) Просто я не зарабатываю деньги программированием, немного в смежной области тружусь, но близко.
avatar
Спасибо за статью, плюсанул в карму. Сам прихожу к тому, что нужно развиваться в сторону автоматизации сначала подачи торговых сигналов, а в идеале и формализации стратегии и системы до уровня робота/роботов;) В процессе и система имхо улучшится и дообточится) Образование тоже околопрофильное, навыки кодинга есть, сейчас начинаю экпериментировать в Wealth-Labe
Артур Сотников, да тема то не новая. Но тут главное не переусложнить все. Из своего опыта, я шел от сложных стратегий к простым, а не наоборот.
Да и вижу из того, что мне предлагали — люди не могут формализовать то что торгуют и просто верят почему то, что это принесет прибыль. Хотя для этого нет ни одного аргумента.

А по итогам сегодня — никто не захотел получить от меня бесплатного робота на свою формализованную стратегию, такие вот промежуточные результаты.
avatar
Alexand77, В целом наверно так и есть-у кого есть что формализовывать уже либо формализованно либо в процессе… Людей имеющих годную ТС, которую можно алгоритмизировать и одновременно ничего не смыслящих в бэк-тестах и программировании имхо исчезающе мало… А много народа торгует на чистой интуиции и ванговании, причём иногда ещё и чужой… Как это алгоритмизировать)))
Артур Сотников, не нужно это алгоритмизировать! :) Нужно стараться забрать у них деньги с помощью алгоритмов :)
avatar
Alexand77, а ну так то да)))
держи бота
убери выход в конце дня и запусти на си…
avatar
ves2010, в смысле держи? где?
avatar
Позволю себе пару комментариев:

1. стоп в 1% не хорошо, т.к. он расчетный. стоп нужно ставить исходя из ситуации на рынке
2. систем достаточно 2 — одна для высокой волатильности, другая для низкой
avatar
sheffield, спасибо! Но статья про программку, а не про стратегию. Все правильно, расчетные стопы не очень хорошо, но тут стратегия приведена только для примера.
avatar
А можно прогу пощупать вживую?.. По скриншотам оно как-то не то… =)
avatar
ch5oh, можно, условия в конце поста.
avatar
Zedgraph + C# + неделя рутинной писанины и ву а ля. Высокотехнологичный софт с сакральными алгоритмами работы готов к продаже незнакомым с программированием. Околорынок живет!
avatar
Arsen G, если бы вы дочитали пост до конца, то поняли что не для продажи, не хочу вашу поляну топтать — за это не беспокойтесь, ваши программные шедевры наверняка гениальны.
Вот сколько за нее можно выручить по вашему экспертному мнению? В том то и дело, у меня з.п. выше и регулярнее.
Кроме того, в ней нет никаких алгоритмов по умолчанию, слово Scheduler разве не намекает на это?
avatar
Alexand77, такие статьи пишут в 2х случаях. 1 — продавать, 2 — делиться. Если вы не собираетесь делать первое, то где ссылка скачать софт? Про исходники на гитхабе тихо умолчим :)
avatar
Arsen G, а как же третий вариант «похвастаться»? :)
Я и делюсь, условия в конце поста, мне кажется оно адекватное, без финансовой составляющей.
Ваша то претензия в чем? В том что не делюсь лично с вами? Ну кроме того что эта действительно простенькая прога вам показалась недостойной главной страницы этого ресурса?
avatar
Alexand77, нет никаких претезний, каждый зарабатывает как может. Просто уже иммунитет на всяких маркетологов. Удачи вам :)
avatar
Arsen G, завидуете маркетологам? :) я тоже.
На самом деле все же просто, пейсал для себя то чего мне не хватало, вообще я считаю что этот функционал должен быть в любом нормальном терминале от брокера просто по умолчанию, к тому же действительно это не сложный функционал, не требует переработки все терминала.
Потом на досуге дорабатывал гуи и отчеты до состояния, что теоретически кто то другой уже может воспользоваться этой прогой.
Я в кой то веки решил написать на смарт статью, ради которых мне кажется этот сайт и задумавался — поделится идеей по трейдингу и попросить поделится идеями трейдинга со мной — и вроде как делятся :).
А не разводить срач типа «Украина-Россия» или «Инвестиции vs Спекуляции». Вроде получилось, даже в топ за 24 часа попала статья.
avatar
Тому кто запускает подобное добро на windows-е, и не хочет беспокоиться о перебоях в поставках интернета и электричества, а также о наличии отдельно работающего компа советую посмотреть вот это

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

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

avatar
Lazz, ради бога не учите меня жить, я как раз в этой области и специалист, а не в написании программок и трейдинге :)
Если кратко, то это все у меня под рукой неограниченно и бесплатно.
avatar
Alexand77, ну так я и не конкретно вам закинул, а просто «Тому кто запускает подобное добро на windows-е...».
Не у всех есть под рукой неограниченно и бесплатно.

Не хочу плакаться, но я в свое время сильно намучался с попытками организовать 99.99% uptime сервер на дому.
Просто поделился опытом. Разве сайт не для этого.
avatar
Lazz, ну я просто подумал, что я и есть «тот кто запускает подобное добро», а я ведь не он!:) А так у меня нет проблем с мощностями, серверами, администрированием (ну так исторически сложилось), то я как то это считал само собой разумеющимся.
А так конечно совет правильный. И в 2015 году уже есть много способов порешать этот вопрос правильно и не очень дорого.
avatar
Alexand77, вот заодно присоветуйте, вдруг что новое выяснится
avatar
vito333, облачные сервисы типа Амазон, colocation, VDS/VPS
avatar
Сделал вчера бектест описанной стратегии с небольшими изменениями. Уровень определялся как максимум / минимум за n последних свечей а не за предыдущий день. Закрытие тоже не абы как в конце дня, а по пробою уровня. Это так называемая стратегия Hi-Low. Итог — стратегия хорошая, доходность показывает примерно такую же, как моя текущая трендовая стретегия на MACD.
avatar
SciFi, а n подгонкой на истории подбиралось? По каким параметрам вы сравниваете две стратегии?
avatar
Alexand77, да, при оптимальном варианте обе стратегии дают примерно одинаковые деньги
avatar
SciFi, т.е просто по Net Profit?
avatar

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

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

 

avatar
Здравствуйте Alexand77. Есть интересная идея (по крайней мере для меня). В друзья вас добавить не могу из за низкого рейтинга. В скайпе оставил вам сообщение (Виктор Суржиков)
Классный робот.
avatar

теги блога Alexand77

....все тэги



UPDONW
Новый дизайн