Блог им. Replikant_mih

Первый execution: увлекательные подробности)). История о том, как я график SiU7 рисовал.

 Только сегодня и только для вас!: дочитай пост до конца — и ты услышишь увлекательную историю о рисовании графика ликвидного фьючерса.

 

Но по порядку. Вообще-то те, процессы, которыми я занимался для создания первой работающей схемы, я не очень люблю. Я больше люблю неторопливо исследовать, чем это. А собственно, что «это»?

 

Я как человек, любящий долго запрягать, когда речь зашла об алготрейдинге — долго запрягал)). Долго выбирал стек-технологий, тыкался-мыкался и остановился на некоторой связке, а именно Wealth-Lab (тестирование стратегий и всяческий рисёч) + Transaq connector (получение маркет данных, отправка ордеров) + готовый коннектор (для того, чтобы связать два предыдущих товарища между собой). Как я сказал, я долго выбирал, и когда выбрал подумал: ну всё, понеслась, запускаю и погнали алготрейдить)). Нифигаа..

 

Как оказалось парень, которого я назвал «готовый коннектор» не так прост. У меня нет его исходного кода (хотя кого я обманываю, даже если бы был, мой C# пока не так хорош, чтобы ломаться при слове delegate или чем-то подобном, что скорее всего я в коде встречу). А работать с чем-то, что не работает идеально, или вообще не очень хорошо (или даже вообще не работает), не имея возможности посмотреть внутрь, ну очень не комфортно. Развитые аналитические способности, конечно, в некоторой степени позволяют заглянуть внутрь сквозь черноту черного ящика, но это совсем не то же самое что реально видеть, как оно работает. Ну короче, коннектор не отправлял корректно заявки — часть отправлял, а часть упорно игнорил — мне такое не подходит)). Общался с разрабом — не помогло. Сам исследовал — не помогло (строил гипотезы, проверял, строил новые — проверял, конкретизировал гипотезы — проверял, факторный анализ проводил, чего только не делал, успехи были, но остались области полностью черные когда ты тупо не видишь никакой закономерности в том, почему оно вот сейчас работает, а вот сейчас не работает). После этих заглядываний через черноту черного ящика я собственно и решил форсировать апгрейдинг своего C# — никто тебе не помешает заглянуть внутрь того, что ты сам написал и сам понимаешь)).

 

Но, к слову сказать, маркет дату коннектор получал почте беспроблемно)). Посему основательно заколебавшись с ордерами… я решил реализовать эту часть самостоятельно через импорт файлов квиком (tri tro и прочие трехбуквенные обозначения) — спасибо, кстати, Sergey Pavlov, это его коммент где-то в глубинах Smart-Lab’а помог мне преодолеть предубеждения против этого способа взаимодействия. Реализовывал исполнение по-взрослому, не в смысле с серьёзной архитектурой, полным циклом разработки, серьёзным тестированием или типа того, а в смысле — полностью самостоятельно)). Скачал документацию к Квику и погнали. Покодил, поисследовал, поискал баги, попробовал руками создавать файл нужного формата. Всё, вроде должно работать. Дальше первое боевое испытани. И далее обещанная история про рисование графиков))) :

Ну наверно все испытывали некую приятную гордость от рисования графиков — и я конечно не о импортировании котировок и рисовании их в виде графика — я о рисовании графика своими деньгами — своими ударами в рынок, своими заявками — обновление хаёв, лоёв всё такое. Испытываешь при этом какую-то небольшую (иногда побольше) гордость за себя. Но это двоякая вещь, одновременно с гордостью испытываешь легкий холодок по коже)) — потому что рисование на графике часто бывает в случае когда что-то пошло не так))). Видили график инструментов, которые торговали роботы Knights Capital Group в свой самый грустный день?). Но ближе к делу. Запустил я Квик (счёт чисто под алго с 30 т.р. денег) — чтоб собственно он файлы импортировал и Велс, чтоб обрабатывал всё и генерил эти файлы. Ну и в Квике настроил заодно таблицы чтоб отслеживать заявки и состояние счета. «Поехали!» ©. Первое время думал, а куда смотреть? — поскольку я ордера отправлял не через механизмы велса или коннектора, там заявки не отображались. Но куда-то надо же было смотреть, после минут трех расхлябанного наблюдения (ну что может произойти за 3 минуты) моё внимание привлекло поле «Комиссия биржи» — а это нормально что там 650 р. Уже? Это за день то? Учитывая, я что я в заявке пуляю 1 контракт? Это с учетом, что сегодня я здесь ничего кроме этого теста не торговал? — Разум начал подсказывать, что видимо, что-то сильно пошло не так)))). Алго и системная торговля учит принимать взвешенные решения, а непропиваемый ручной опыт учит, что нехер долго думать, если видишь, что надо действовать — действуй. В общем выдернул абстрактную вилку из абстрактной розетки (ну а по факту разомкнул в связке ключевой узел, прерывающий процесс — ну короче остановил импорт файлов))) ). Что оказалось когда дым рассеялся: оказывается (и тут с одной стороны я тупо с горячей головой не всё учел, код сырой, а с другой не до конца знал, как работает коннектор (который для меня, напомню, черный ящик)) коннектор работает так: на каждой свече (а я чтоб долго не ждать тестил на минутках) прогоняет сначала всю(!) историю за некоторый период времени, а только потом анализирует от текущего бара. И делает так на каждом баре. Из общего вклада в этот маленький фэйл — вклад велса: я не знал, что велс пробегает всю историю на каждом баре, мой вклад: чёт у меня получилось что пробегая по истории у меня и сделки генерятся)). В общем за 3 минутных бара пока крутилась система стратегия пробежалась по всему графику и сгенерила 3 одинаковых пакета с таким кол-вом маркетовых ордеров, какое было кол-во сигналов на историческом графике этой стратегии)). Итого за 3 минуты Квик импортнул и исполнил 1600 трейдов по 1 контракту)), за 3 минуты). Сколько на спреде отдал — не знаю). Было это 14.07.2017, 22:53 SiU7 — по объёмам виден всплеск)) — это мои роботы спред расширяли)). Весело получилось в общем)). Такой опыт прикольно получать, именно на ранних этапах, на малых деньгах.

Ну потом, конечно, всё поправил и уже стратежка какое-то время торговала — всё норм.
Как-то так)

★6
54 комментария
еще один наивный кодер…
Активный Инвестор, я трейдер, алго- трейдер. (произносить с интонациями Джеймса Бонда).
avatar
Replikant_mih, трейдер — это просто более благозвучный синоним слова «спекулянт»… Ну, пусть вы наивный спекулянт… так они же все наивные… Если вы и не потеряете денег, то время точно зря потратите…
Активный Инвестор, можно я не буду воспринимать в серьёз ярлыки от вас?) Очень похоже, что есть вы, а всё что не вы — там всё очень плохо и очень наивно))
avatar
Replikant_mih, наивно — это вовсе не плохо… разве овечка  -это плохо? Почитайте про SPAN и ЦК и СУР биржи
Активный Инвестор, Пока понятия не имею, что это — спасибо, почитаю!
avatar
Активный Инвестор, Почитал, но не сильно уловил связь с контекстом обсуждения или поста, может развернете мысль немного?)
avatar
Replikant_mih, вам придется переиграть алгоритмы биржи и ЦК… причем они работают согласованно против ваших рисков, поскольку обмениваются риск-массивами… По сути ваша деятельность — это поиск уязвимостей алгоритма маркетоса… Как только он их закрывает, ваши алгоритмы на данном инструменте уже не будут работать…
Активный Инвестор, Аа, вон вы о чем. Ну мне это не кажется актуальным. Очень много алго-ниш, куда не ступала нога алгоритмов биржи)) ну и кто там ещё против меня выступает)).
avatar
Replikant_mih, справедливости ради, тебе до алготрейдера примерно как до джеймсбонда. Это важно осознать как можно раньше )
Zweroboi, Не, нифига, если кому-то нравится жить в дискретных бинарных классификациях алготрейдер/не алготрейдер. Мне так не нравится. Алготрейдер может быть хуже или лучше, опытней или менее, тогда ты всегда будешь в динамике, всегда прогрессировать. А не так что бы ты не делал — ты никто и когда-нибудь, возможно, станешь кем-нибудь. Или не станешь.
avatar

Replikant_mih, знаешь анекдот: встречаются два фотографа, и один другому говорит «я теперь стоматолог, я себе бормашину вчера купил»? ) Конечно можно и так, купил зеркалку — фотограф, ракетку — теннисист. И чем круче ракетка — тем круче ты теннисист ))

С технической точки зрения начинающему алготрейдеру вообще почти ничего не нужно — только файл с котировками и питон. Сиди разбирайся учись прогрессируй. В том же питоне очень просто взять и перемешать все бары случайно, сделать так много раз сохранить в разные файлы. Потом попробовать понять чем настоящие рыночные котировки отличаются от случайно перемешанных и т д. Можно это сделать в велсе?

 

Правильно SergeyJu говорит, велс и подобное давно пора похоронить, потому что толку от них ноль, а вреда много. Начнёшь копать не туда — и руки сотрёшь и время потеряешь.

 

Zweroboi, Сотрешь ли руки, или утолщишь мозоли, покая не туда — это зависит от человека ;). 

Не хочется абстрактно обсуждать тему, если предметно обсуждать, надо преводить доводы, обсуждать, прикидывать веса доводов и т.д., а так что — в воздух. По поводу примера — Я могу на Питоне (немного знаю) перемешать данные, сделать 100500 разных файлов, потом их скопом импортнуть, а в велсе уже делать что хочу с ними. 

avatar
Replikant_mih, тормозить будет велс твой, поэтому «что хочу» не получится, только «что могу» )) хотя канеш Бог в помощь
Zweroboi, ты же ж вроде Питон продвигаешь), а он интерпретируемый, а следовательно медленный.
avatar
Replikant_mih, да, точно, ты прав, убедил
Zweroboi, Ну че ты так быстро сдался)) — можно же сказать, что есть библиотеки Pandas и прочие, которые частично на C++ написаны и вообще оптимизированы, в т.ч. с точки зрения скорости, для работы с данными и т.д. и т.п.)
avatar
Replikant_mih, да много что есть, но это всё для квантов а ты алготрейдер )
1. Зря Вы вообще связались с вэлсом. 
2. Если каждую плюху Вы станете описывать подробно, на смартике появится свой Жюль Верн.
avatar
SergeyJu, 
1. Да не, в целом всё норм пока), это можно говорить «зря вы 30 лет изучали теорию струн, на самом деле этой фэйк», а зря вы начали погружение в алго-торговлю с Велса — ну нет, тут не так критично).
2. Ну мож. кому-то понравится)), или уже нравится)), каждую не буду наверно, надеюсь скоро дойду уже до уровня, когда значимые и интересные для меня — уже будут и достаточно интересными и для окружающих. Ну типа — никому не интересно, как ты заработал в сделке первый доллар, а желающих услышать как ты заработал в сделке первый миллион долларов будет гораздо больше)).
avatar
Replikant_mih, Жюль Верн издавался огромными тиражами, а прославился тем еще, что каждые полнода выпускал новый роман. 
Насчет вэлса. Рано или поздно Вы поймете, что эта громоздкая конструкция с кучей скрытых особенностей, включая баги, может быть заменена простой и удобной самописной системой тестирования.
avatar
SergeyJu, Да я понял уже про «может быть заменена»))), поэтому я и повысил приоритеты задаче «подтянуть C#»), просто даже для «простой» желательно неплохо языком владеть.
avatar
пока не так хорош, чтобы ломаться при слове delegate

делегат — это(утрированно) вроде просто ссылка на функцию?
Выбирайте языки, где функция является первоклассным объектом, и все ссылки на нее равноценны, то есть, где нет необходимости в лишней сущности для этого.
sortarray sortarray, Нет-нет, я для примера привел, т.е. я допустим прошёл определенные темы в языке, если я пишу код в пределах этих тем — я его понимаю, если я вижу код в пределах этих тем — я его понимаю, если я вижу код, где 50-90-100% кода содержит неизвестные мне конструкции и синтаксис — мне его не понять, можно конечно пытаться из контекста дергать и гуглить — но мне такой подход к обучению не очень нравится. 
avatar
Replikant_mih, Вообще, дело Ваше конечно, но по-моему, писать индивидуальные приложения на таких языках как решетка и жаба — это мазохизм. Они предназначены для корпоративной разработки, это переусложненные и неуклюжие языки, перегруженные синтаксическим сахаром, а Вам нужен язык для быстрого прототипирования, легкий, простой и выразительный(в ущерб типобезопасности и излишнему формализму).
Но это так, взгляд со стороны. Я роботов не пишу.

PS Хотя, в пользу C# то, что он становится стандартом в этой сфере, к сожалению
sortarray sortarray, мм, ну не знаю — для прототипирования — это чтоб стратежку прогнать быстро, не имея инфраструктуры готовой — тут да, какой-нить Питон — отлично зайдёт. Но если сделать тот же тестер красиво, то и писать в нем будет так же удобно и просто как на Питоне. 
avatar
sortarray sortarray, в алготрейдинге который не ХФТ стандарт питон. Ну и немножко скала. В алгохеджфондах кругом питон. Все квантопианы, клаудкванты и иже с ними, не говоря уж о датасаенсных компетишенах — питон. C# очень редко.
Вот у тслаба та же фигня… с каждым новым баром он всю историю прогоняет… Вообще, всё проще для начала. Можно торговать чисто из квиковского луа. Не нужно ничего покупать и ни на что подписываться. Решение максимально универсальное с точки зрения алго для нашего рынка. Даже у айтиинвеста есть квик) Максимум на что потратитесь это сервер арендовать виртуальный, чтобы там квик запустить со скриптом. Это очень удобно для начала. Более того, этого с лихвой достаточно, если не будете лезть в системы с предполагаемой сделкой менее 0.2% или частотой, когда задержка в секунду не страшна, а это очень широкий класс систем. Вообще, рекомендую начинать с дневок. Если уж это совсем скучно, то часы, но не чаще часовиков для начала торговли, а начало торговли это минимум первый год в алго.
avatar
Sergey Pavlov, Давно сижу на Амиброкере и не парюсь со всеми этими прогонами. Тесты очень шустрые. Алгоритмы торгуют без сбоев. Не надо каждый месяц платить жадным разработчикам. У меня развязаны руки для дальнейшего исследования рынка и поиска новых идей. Что еще надо алготрейдеру?)
avatar
SenSoR, по описанию прям так как я люблю)))
avatar
Replikant_mih, + очень легкий для освоения язык! ;)
avatar
SenSoR, вот, легкий, меня затянет, мне не нужен будет C# для написания стратегий, для поддержания инфраструктуры, он зачахнет, деградирует. И я надолго останусь там). В моей же голове уже запланировано стратегическое развитие)). Фак, опять мой перфекционизм кто-то допустил до планирования))
avatar
SenSoR, а там тоже каждая свечка все прошлые и последующие бары? И как вы его прикрутили к коннекторам. Или вы как выше сказано не попадаете в 0.2 начиная с пятиминуток?
avatar
Борис Литвинов, Нет, там другая система тестов. Подробнее можно узнать тут. Сконнектить Ами с Квиком можно разными путями. Самый универсальный можно посмотреть тут. И ами не для HFT.
avatar
SenSoR, по честному я бы квик сконктил  лишь с розеткой 320В, что бы один раз прикипел,  отмучался, отпели и забыли.  Именно КВИК тормозит и дает псевдо про уровень. Человек лишь теряет свое время, и когда прощается с ним, становится трейдером ПРО. LUA не спасет, там сервер тормоз и похороны даже самой крутой ТС в подарок, а ну выше написано от 0.2%
avatar
Sergey Pavlov, Ну, когда выбираешь стек технологий, подход, систему правил, что-то ещё, ты ориентируешься на себя, наличия времени, бабла, но это не всё — ещё очень важны внутреннии предпочтения, особенности работы мыслительных процессов, памяти в конце концов, я не особо хорошо работаю в режиме многозадачности), поэтому у меня на принципиальном уровне принято решение — не использовать варианты где надо учить несколько языков, тем более если надо учить какую-нить очень узкую вещь как LUA или MQL5. Я лучше помучаюсь и C# всё-таки буду хорошо знать через пару лет). Но когда я тут с этими ордерами серьёзно подзаколебался — я уже почти был готов предать свои принципы))), ой, ну т.е. пересмотреть.
avatar
Sergey Pavlov, так и было! но прошло, не лезть в 0.2% не получилось
avatar
Борис Литвинов, и к чему это привело в итоге? Или об итогах еще рано говорить?
avatar
Sergey Pavlov, итог уже знаю, но иду, свой терминал, свой тестер, своя бд, и всё к любому коннектору   на выбор должно быть. Остальное путь компромиссов.  



В идеале,  даже не C#. А под линуксом  0.3 — 05мск  FIX FAST PLAZA  ко локация.
avatar
Борис Литвинов, Вы один это создаете-поддерживаете?

avatar
Replikant_mih, вопрос был не в этом что делаю я. А на каком я пути, так вот я в пути! Но тот кто уже там, таких знаю, они среди нас,  даже сейчас на смарт лабе! Есть люди у которых инфраструктура по цене квартир на бирже стоит. Мне до них очень далеко!
avatar
Борис Литвинов, Аа, ну ясно, в целом, думаю, нам по пути)
avatar
Если рос. рынок, если нет HFT и не хочется «пилить» велосипед — лучше начинать с MT5.
avatar

Alexey Kulikov, Я понимаю, что человек комментит то, что в голову приходит, и я так делаю), просто я уже много раз описывал, обсасывал выбор технологий, в посте немного не про это, скорее про нелегкий путь в рамках выбранной технологии). 

По поводу MT5 и MQL5 — ну это надо учить и C# и MQL5 и переписывать системы, потому что тестер в метатрейдере мне вообще не понравился — я его пробовал.

avatar
Replikant_mih, я закомментил не просто так, а потому что это тестер и execution в одном флаконе, не пришлось бы голову ломать как скрестить ужа и ежа, к тому же бесплатный, в отличии от tslab. Если Вы какое-то отношение к программированию имеете, то С — синтаксис не проблема.
avatar
Alexey Kulikov, мне тестер не понравился, поэтому для меня эта элегантная схема превращается в два языка, две платформы и необходимость переписывать при переносе, ну или же мириться с недостатками местного тестера (тоже очень не хочется).
avatar
Replikant_mih, не нужно переписывать, из MQL можно отлично общаться с бэк-эндом на питоне например через сокеты. Я так делаю. В MQL только выставление ордеров.
Zweroboi, Чтобы мне общаться «через сокеты», чувствую, хотя бы один язык должен быть на хорошем уровне)), у меня пока таких нет, работаю в этом направлении).
avatar
это самый простой способ импортировать котировки? а проще можно?
avatar
Арсений Овсянников, Можно)), самый просто это в эксель импортировать из квика)), а вот что дальше с ними там делать)) — это второй вопрос).
avatar
Это че исповедь? как чувак ударами график рисовал!!!
avatar
zastava12, Да, про то, как стопы людям специально выносил.
avatar
При первом запуске робота на реале всегда делаю 2 проверки:
1) Никакой торговли, только сообщение в лог: время, инструмент, цена, объем и направление. Набрав несколько таких виртуальных сделок анализируешь адекватность принятых роботом решений. 
2) Торговля разрешается, но, после первой исполненной сделки — остановиться. Конечно, оператор должен все время быть у пульта, если надо отойти — выключаешь робота.
avatar

Jame Bonds, Да, согласен, так и надо, уверен, что на вскидку смогу накидать ещё крутых, действенных и безопасных правил. Просто в моём случае было как? — я очень долго возился над исполнением ордеров и настолько заколебался, настолько жажда одолела, что когда добрался до воды — захотелось тупо напиться вдоволь, а не проверять степень зараженности и есть ли хищники вокруг)))


А так конечно, когда система будет посовершенней, деньги покрупнее — уверен, что подобное у меня тоже будет.

avatar

теги блога Replikant_mih

....все тэги



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