Блог им. Replikant_mih
Только сегодня и только для вас!: дочитай пост до конца — и ты услышишь увлекательную историю о рисовании графика ликвидного фьючерса.
Но по порядку. Вообще-то те, процессы, которыми я занимался для создания первой работающей схемы, я не очень люблю. Я больше люблю неторопливо исследовать, чем это. А собственно, что «это»?
Я как человек, любящий долго запрягать, когда речь зашла об алготрейдинге — долго запрягал)). Долго выбирал стек-технологий, тыкался-мыкался и остановился на некоторой связке, а именно 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 — по объёмам виден всплеск)) — это мои роботы спред расширяли)). Весело получилось в общем)). Такой опыт прикольно получать, именно на ранних этапах, на малых деньгах.
Ну потом, конечно, всё поправил и уже стратежка какое-то время торговала — всё норм.
Как-то так)
Replikant_mih, знаешь анекдот: встречаются два фотографа, и один другому говорит «я теперь стоматолог, я себе бормашину вчера купил»? ) Конечно можно и так, купил зеркалку — фотограф, ракетку — теннисист. И чем круче ракетка — тем круче ты теннисист ))
С технической точки зрения начинающему алготрейдеру вообще почти ничего не нужно — только файл с котировками и питон. Сиди разбирайся учись прогрессируй. В том же питоне очень просто взять и перемешать все бары случайно, сделать так много раз сохранить в разные файлы. Потом попробовать понять чем настоящие рыночные котировки отличаются от случайно перемешанных и т д. Можно это сделать в велсе?
Правильно SergeyJu говорит, велс и подобное давно пора похоронить, потому что толку от них ноль, а вреда много. Начнёшь копать не туда — и руки сотрёшь и время потеряешь.
Zweroboi, Сотрешь ли руки, или утолщишь мозоли, покая не туда — это зависит от человека ;).
Не хочется абстрактно обсуждать тему, если предметно обсуждать, надо преводить доводы, обсуждать, прикидывать веса доводов и т.д., а так что — в воздух. По поводу примера — Я могу на Питоне (немного знаю) перемешать данные, сделать 100500 разных файлов, потом их скопом импортнуть, а в велсе уже делать что хочу с ними.
2. Если каждую плюху Вы станете описывать подробно, на смартике появится свой Жюль Верн.
1. Да не, в целом всё норм пока), это можно говорить «зря вы 30 лет изучали теорию струн, на самом деле этой фэйк», а зря вы начали погружение в алго-торговлю с Велса — ну нет, тут не так критично).
2. Ну мож. кому-то понравится)), или уже нравится)), каждую не буду наверно, надеюсь скоро дойду уже до уровня, когда значимые и интересные для меня — уже будут и достаточно интересными и для окружающих. Ну типа — никому не интересно, как ты заработал в сделке первый доллар, а желающих услышать как ты заработал в сделке первый миллион долларов будет гораздо больше)).
Насчет вэлса. Рано или поздно Вы поймете, что эта громоздкая конструкция с кучей скрытых особенностей, включая баги, может быть заменена простой и удобной самописной системой тестирования.
делегат — это(утрированно) вроде просто ссылка на функцию?
Выбирайте языки, где функция является первоклассным объектом, и все ссылки на нее равноценны, то есть, где нет необходимости в лишней сущности для этого.
Но это так, взгляд со стороны. Я роботов не пишу.
PS Хотя, в пользу C# то, что он становится стандартом в этой сфере, к сожалению
В идеале, даже не C#. А под линуксом 0.3 — 05мск FIX FAST PLAZA ко локация.
Alexey Kulikov, Я понимаю, что человек комментит то, что в голову приходит, и я так делаю), просто я уже много раз описывал, обсасывал выбор технологий, в посте немного не про это, скорее про нелегкий путь в рамках выбранной технологии).
По поводу MT5 и MQL5 — ну это надо учить и C# и MQL5 и переписывать системы, потому что тестер в метатрейдере мне вообще не понравился — я его пробовал.
1) Никакой торговли, только сообщение в лог: время, инструмент, цена, объем и направление. Набрав несколько таких виртуальных сделок анализируешь адекватность принятых роботом решений.
2) Торговля разрешается, но, после первой исполненной сделки — остановиться. Конечно, оператор должен все время быть у пульта, если надо отойти — выключаешь робота.
Jame Bonds, Да, согласен, так и надо, уверен, что на вскидку смогу накидать ещё крутых, действенных и безопасных правил. Просто в моём случае было как? — я очень долго возился над исполнением ордеров и настолько заколебался, настолько жажда одолела, что когда добрался до воды — захотелось тупо напиться вдоволь, а не проверять степень зараженности и есть ли хищники вокруг)))
А так конечно, когда система будет посовершенней, деньги покрупнее — уверен, что подобное у меня тоже будет.