Replikant_mih
Replikant_mih личный блог
19 июля 2017, 10:36

Первый 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 — по объёмам виден всплеск)) — это мои роботы спред расширяли)). Весело получилось в общем)). Такой опыт прикольно получать, именно на ранних этапах, на малых деньгах.

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

54 Комментария
  • Активный Инвестор
    19 июля 2017, 10:48
    еще один наивный кодер…
      • Активный Инвестор
        19 июля 2017, 10:54
        Replikant_mih, трейдер — это просто более благозвучный синоним слова «спекулянт»… Ну, пусть вы наивный спекулянт… так они же все наивные… Если вы и не потеряете денег, то время точно зря потратите…
          • Активный Инвестор
            19 июля 2017, 11:11
            Replikant_mih, наивно — это вовсе не плохо… разве овечка  -это плохо? Почитайте про SPAN и ЦК и СУР биржи
              • Активный Инвестор
                19 июля 2017, 12:24
                Replikant_mih, вам придется переиграть алгоритмы биржи и ЦК… причем они работают согласованно против ваших рисков, поскольку обмениваются риск-массивами… По сути ваша деятельность — это поиск уязвимостей алгоритма маркетоса… Как только он их закрывает, ваши алгоритмы на данном инструменте уже не будут работать…
      • Пафос Респектыч
        19 июля 2017, 13:01
        Replikant_mih, справедливости ради, тебе до алготрейдера примерно как до джеймсбонда. Это важно осознать как можно раньше )
          • Пафос Респектыч
            19 июля 2017, 14:15

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

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

             

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

             

              • Пафос Респектыч
                19 июля 2017, 14:47
                Replikant_mih, тормозить будет велс твой, поэтому «что хочу» не получится, только «что могу» )) хотя канеш Бог в помощь
                  • Пафос Респектыч
                    19 июля 2017, 15:29
                    Replikant_mih, да, точно, ты прав, убедил
                      • Пафос Респектыч
                        19 июля 2017, 16:12
                        Replikant_mih, да много что есть, но это всё для квантов а ты алготрейдер )
  • SergeyJu
    19 июля 2017, 10:53
    1. Зря Вы вообще связались с вэлсом. 
    2. Если каждую плюху Вы станете описывать подробно, на смартике появится свой Жюль Верн.
      • SergeyJu
        19 июля 2017, 11:08
        Replikant_mih, Жюль Верн издавался огромными тиражами, а прославился тем еще, что каждые полнода выпускал новый роман. 
        Насчет вэлса. Рано или поздно Вы поймете, что эта громоздкая конструкция с кучей скрытых особенностей, включая баги, может быть заменена простой и удобной самописной системой тестирования.
  • sortarray sortarray
    19 июля 2017, 11:06
    пока не так хорош, чтобы ломаться при слове delegate

    делегат — это(утрированно) вроде просто ссылка на функцию?
    Выбирайте языки, где функция является первоклассным объектом, и все ссылки на нее равноценны, то есть, где нет необходимости в лишней сущности для этого.
      • sortarray sortarray
        19 июля 2017, 11:57
        Replikant_mih, Вообще, дело Ваше конечно, но по-моему, писать индивидуальные приложения на таких языках как решетка и жаба — это мазохизм. Они предназначены для корпоративной разработки, это переусложненные и неуклюжие языки, перегруженные синтаксическим сахаром, а Вам нужен язык для быстрого прототипирования, легкий, простой и выразительный(в ущерб типобезопасности и излишнему формализму).
        Но это так, взгляд со стороны. Я роботов не пишу.

        PS Хотя, в пользу C# то, что он становится стандартом в этой сфере, к сожалению
        • Пафос Респектыч
          19 июля 2017, 14:26
          sortarray sortarray, в алготрейдинге который не ХФТ стандарт питон. Ну и немножко скала. В алгохеджфондах кругом питон. Все квантопианы, клаудкванты и иже с ними, не говоря уж о датасаенсных компетишенах — питон. C# очень редко.
  • Sergey Pavlov
    19 июля 2017, 11:10
    Вот у тслаба та же фигня… с каждым новым баром он всю историю прогоняет… Вообще, всё проще для начала. Можно торговать чисто из квиковского луа. Не нужно ничего покупать и ни на что подписываться. Решение максимально универсальное с точки зрения алго для нашего рынка. Даже у айтиинвеста есть квик) Максимум на что потратитесь это сервер арендовать виртуальный, чтобы там квик запустить со скриптом. Это очень удобно для начала. Более того, этого с лихвой достаточно, если не будете лезть в системы с предполагаемой сделкой менее 0.2% или частотой, когда задержка в секунду не страшна, а это очень широкий класс систем. Вообще, рекомендую начинать с дневок. Если уж это совсем скучно, то часы, но не чаще часовиков для начала торговли, а начало торговли это минимум первый год в алго.
    • SenSoR
      19 июля 2017, 11:21
      Sergey Pavlov, Давно сижу на Амиброкере и не парюсь со всеми этими прогонами. Тесты очень шустрые. Алгоритмы торгуют без сбоев. Не надо каждый месяц платить жадным разработчикам. У меня развязаны руки для дальнейшего исследования рынка и поиска новых идей. Что еще надо алготрейдеру?)
        • SenSoR
          19 июля 2017, 11:44
          Replikant_mih, + очень легкий для освоения язык! ;)
          • Boris Litvinov
            19 июля 2017, 14:05
            SenSoR, а там тоже каждая свечка все прошлые и последующие бары? И как вы его прикрутили к коннекторам. Или вы как выше сказано не попадаете в 0.2 начиная с пятиминуток?
            • SenSoR
              19 июля 2017, 15:59
              Борис Литвинов, Нет, там другая система тестов. Подробнее можно узнать тут. Сконнектить Ами с Квиком можно разными путями. Самый универсальный можно посмотреть тут. И ами не для HFT.
              • Boris Litvinov
                19 июля 2017, 18:51
                SenSoR, по честному я бы квик сконктил  лишь с розеткой 320В, что бы один раз прикипел,  отмучался, отпели и забыли.  Именно КВИК тормозит и дает псевдо про уровень. Человек лишь теряет свое время, и когда прощается с ним, становится трейдером ПРО. LUA не спасет, там сервер тормоз и похороны даже самой крутой ТС в подарок, а ну выше написано от 0.2%
    • Boris Litvinov
      19 июля 2017, 14:01
      Sergey Pavlov, так и было! но прошло, не лезть в 0.2% не получилось
      • Sergey Pavlov
        19 июля 2017, 14:10
        Борис Литвинов, и к чему это привело в итоге? Или об итогах еще рано говорить?
        • Boris Litvinov
          19 июля 2017, 14:19
          Sergey Pavlov, итог уже знаю, но иду, свой терминал, свой тестер, своя бд, и всё к любому коннектору   на выбор должно быть. Остальное путь компромиссов.  



          В идеале,  даже не C#. А под линуксом  0.3 — 05мск  FIX FAST PLAZA  ко локация.
            • Boris Litvinov
              19 июля 2017, 14:41
              Replikant_mih, вопрос был не в этом что делаю я. А на каком я пути, так вот я в пути! Но тот кто уже там, таких знаю, они среди нас,  даже сейчас на смарт лабе! Есть люди у которых инфраструктура по цене квартир на бирже стоит. Мне до них очень далеко!
  • akuloff
    19 июля 2017, 11:58
    Если рос. рынок, если нет HFT и не хочется «пилить» велосипед — лучше начинать с MT5.
      • akuloff
        19 июля 2017, 12:35
        Replikant_mih, я закомментил не просто так, а потому что это тестер и execution в одном флаконе, не пришлось бы голову ломать как скрестить ужа и ежа, к тому же бесплатный, в отличии от tslab. Если Вы какое-то отношение к программированию имеете, то С — синтаксис не проблема.
          • Пафос Респектыч
            19 июля 2017, 14:31
            Replikant_mih, не нужно переписывать, из MQL можно отлично общаться с бэк-эндом на питоне например через сокеты. Я так делаю. В MQL только выставление ордеров.
  • Фима
    19 июля 2017, 12:44
    это самый простой способ импортировать котировки? а проще можно?
  • zastava12
    19 июля 2017, 12:57
    Это че исповедь? как чувак ударами график рисовал!!!
  • Jame Bonds
    19 июля 2017, 13:35
    При первом запуске робота на реале всегда делаю 2 проверки:
    1) Никакой торговли, только сообщение в лог: время, инструмент, цена, объем и направление. Набрав несколько таких виртуальных сделок анализируешь адекватность принятых роботом решений. 
    2) Торговля разрешается, но, после первой исполненной сделки — остановиться. Конечно, оператор должен все время быть у пульта, если надо отойти — выключаешь робота.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн