<HELP> for explanation

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

 

Сколько стоит эта штука?
PS. Топик не читал.
Профессор Преображенский, начни с конца читать.
вот ты заморочился
Бросай трейдинг пиши робатов и продавай их
Эльвир Нагибуллин, написание софта на заказ это очень замороченная тема, заказчики замучают переделками и придирками, так как сами не знают что хотят. А если таких несколько? А если что то пойдет не так в отработке сигнала? Съедят же вместе с калом. Многие мои друзья программисты, я примерно представляю эту кухню и мне она не нравится.
У меня аналогичный путь, только я торгую пока 1 стратегию но на 9 фьючерсах и 9 акциях. Только ради снижения одномоментной просадки. Согласен с тем, что надо писать простые алгоритмы с маленьким числом параметров, так как они меньше глючат.
avatar

SciFi

SciFi, а робот на чем написан?
Alexand77, QPILE под QUIK
avatar

SciFi

Нахожусь на том же пути, пользуюсь той же логикой. Пока что пришел к выводу, что устойчивое смещение вероятностей можно получить только в HFT, остальное дрочь. Правда, все равно остается открытым вопрос, какие гипотезы замерять.
спасибо за статью.
использую примерно такой-же подход, о чём писал.
да и много кто использует и пишет ;)
главную проблему тут вижу так: допустим мы более-менее умеем тестировать на истории и отбрасываем заведомую фигню и оставляем норм варианты.
Но к сожалению не факт что даже они будут давать хоть какую-то доходность. Слабенькие стратегии могут месяцами быть без прибыли, и придётся переживать об их отключении… Короче не грааль, по моему опыту на простых стратежках далеко не уедешь, но вы в правильном направлении.
avatar

Artemunak

Artemunak, от простого к сложному. К тому же я понимаю, как должна вести себя стратегия, глядя на ее многолетний бэктест. А программа дает отчет по эквити отдельной стратегии, поэтому можно понять, когда что то пошло не так и без переживаний отключить — останется ведь еще куча других. Хуже когда поставил все на одну и понимаешь, что с ней что то не так, а ты в нее столько вбухал времени (читай оптимизации 100 параметров на истории).
Alexand77, у меня есть приб стратегия — но пока просто в друзьях посижу у вас — там посмотрим -может и опишу (она простая)
Владимир Фокс, ок не вопрос.
По правильному пути идете.
avatar

SenSoR

SenSoR, спасибо!
Сможете написать робота, который торгует графические паттерны?
avatar

Андрей

Андрей, если графические паттерны возможно перевести в цифры, то можно…
Сергей Патрин, отбой от, пробой уровня, флаг, клин, треугольник, можно-ли робота научить торговать эти фигуры?
Андрей, можно, только зачем? Почему вы считаете что «торговать» флаг это прибыльно, есть ли соответствующие бэктесты? Пробой уровня я в общем то как раз в этом посте и привел для примера, как раз в основном это и умеет делать в данной инкарнации программа, без допиливания.
Alexand77, флаг привел в качестве примра. Я торгую некие паттерны, они довольно успешно работают. Если Вы готовы взятся за их реализацию, готов предоставить подробности в личку.
Андрей, отписал в личку.
Андрей, можно причем элементарно… индикатор треугольника есть у мя в блогах
Андрей, я в посте написал — если правило на вход и на выход четко сформулировано, то можно написать.
Молодец.! Думаю подумаю над твоим предложением. Осваивай программирование ))
avatar

MyProfit

MyProfit, что значит осваивай :) Я -дцать лет назад получил диплом и в нем написано, что вроде как освоил программирование :) Просто я не зарабатываю деньги программированием, немного в смежной области тружусь, но близко.
Спасибо за статью, плюсанул в карму. Сам прихожу к тому, что нужно развиваться в сторону автоматизации сначала подачи торговых сигналов, а в идеале и формализации стратегии и системы до уровня робота/роботов;) В процессе и система имхо улучшится и дообточится) Образование тоже околопрофильное, навыки кодинга есть, сейчас начинаю экпериментировать в Wealth-Labe
Артур Сотников, да тема то не новая. Но тут главное не переусложнить все. Из своего опыта, я шел от сложных стратегий к простым, а не наоборот.
Да и вижу из того, что мне предлагали — люди не могут формализовать то что торгуют и просто верят почему то, что это принесет прибыль. Хотя для этого нет ни одного аргумента.

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

ves2010

ves2010, в смысле держи? где?
Позволю себе пару комментариев:

1. стоп в 1% не хорошо, т.к. он расчетный. стоп нужно ставить исходя из ситуации на рынке
2. систем достаточно 2 — одна для высокой волатильности, другая для низкой
avatar

sheffield

sheffield, спасибо! Но статья про программку, а не про стратегию. Все правильно, расчетные стопы не очень хорошо, но тут стратегия приведена только для примера.
А можно прогу пощупать вживую?.. По скриншотам оно как-то не то… =)
avatar

ch5oh

ch5oh, можно, условия в конце поста.
Zedgraph + C# + неделя рутинной писанины и ву а ля. Высокотехнологичный софт с сакральными алгоритмами работы готов к продаже незнакомым с программированием. Околорынок живет!
avatar

Arsen G

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

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

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

avatar

Lazz

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

Не хочу плакаться, но я в свое время сильно намучался с попытками организовать 99.99% uptime сервер на дому.
Просто поделился опытом. Разве сайт не для этого.
avatar

Lazz

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

SciFi

SciFi, а n подгонкой на истории подбиралось? По каким параметрам вы сравниваете две стратегии?
Alexand77, да, при оптимальном варианте обе стратегии дают примерно одинаковые деньги
avatar

SciFi

SciFi, т.е просто по Net Profit?

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

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

 

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

Антон Б


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UP