Блог им. vkcoda982 |Генерация торговых отчётов в IB

Не так давно мне потребовалось просмотреть все мои торговые операции в TWS за прошлые периоды. Такие отчёты могут быть полезны и для налоговых органов, например. У Interactive Brokers для этого есть удобный механизм.

1) Заходите из терминала в Account Management Home.
2) На главной странице, в секции Manage Your Account выбираете Flex Queries:
Генерация торговых отчётов в IB

3) Если до этого отчёты не создавались, будет предложено создать новый:
Генерация торговых отчётов в IB

( Читать дальше )

Блог им. vkcoda982 |IB торговля фьючерсами на биткойн

Как известно, CME и CBOE запустили торговлю фьючерсными контрактами на Bitcoin:
CME Bitcoin Futures
XBT — Cboe Bitcoin Futures

Тикер на CME — BRR, объём контракта 5 биткоинов, тик — $5 на биткоин, $25 на контракт.
Тикер на CBOE — GXBT, объём контракта 1 биткоин (the contract multiplier for the XBT futures contract is 1 bitcoin), тик — $10 на контракт.

Interactive Brokers уже начали предоставлять доступ к фьючерсным котировкам в своём терминале:
Trading Bitcoin Futures with IBKR

IB торговля фьючерсами на биткойн
IB торговля фьючерсами на биткойн

( Читать дальше )

Блог им. vkcoda982 |IB просмотр выплаченных дивидендов

В терминале TWS дивидендные отсечки можно отображать отдельной «свечой» (опция Splits and dividends). При наведении курсора на эту свечу появляется окно Dividend Editor, которое позволяет просматривать историю уже выплаченных дивидендов, а также будущие дивидендные выплаты.
IB просмотр выплаченных дивидендов
Оно показывает, что мне пришёл дивидендный payment по акциям QCOM 15 декабря. Interactive Brokers предоставляет отчёты по торговой активности на счёте, в том числе и выплату дивидендов. Для этого нужно зайти в web-версию Account Management Home, раздел Reports->Activity->Statements. Выбрать нужный счёт и дату, по которой вы хотите просмотреть отчёт.
IB просмотр выплаченных дивидендов

( Читать дальше )

Блог им. vkcoda982 |Пишу MarketScanner. 10.04.2016

По-быстрому набросал скелет отрисовщика графиков. И наконец-то я увидел воочию те данные, которые качал мой фетчер последние два месяца. Все рисуется через Direct3D, + реализовал простейшую нормализацию свечей по высоте области вывода. Свечи могут быть пустыми и закрашенными, с разными цветами. Поиск в гугле показал, что наиболее популярны красно-зелёные свечи, но встречаются и другие раскраски. Для пробы реализовал парочку.

AMZN:
Пишу MarketScanner. 10.04.2016

( Читать дальше )

Блог им. vkcoda982 |Пишу MarketScanner. 09.04.2016

Прошло уже три месяца, как я начал писать свой собственный сканер рынка. Недавно купил лицензию на Windows 10 и тестирую программу уже на этой ОС. Пишу в свободное от основной работы время — мне понравилось писать код для новой сферы деятельности, никак не связанной с основной профессией. В последнее время код уже не меняется сколь-нибудь кардинально, а это значит, что разработка фетчера подходит к логическому концу.

Фетчер данных — это консольное приложение, написанное на С++11, которое является клиентом платформы TWS и общается с ней через IB API. Предполагается, что оно может работать непрерывно, а в случае разрыва связи или закрытия — ждать восстановления соединения или перезапускаться и продолжать работу с того места, где остановилось в прошлый раз. Перезапуск осуществляется через отдельную программу-монитор, которая следит за процессом в памяти, и если необходимо, запускает его заново.

На данный момент программа успешно вытянула дневные данные по всем бумагам, торгуемым на NASDAQ, по которым у IB есть доступ. Если начинать с пустой базы данных, то предполагается что сначала вытягиваются свечи за прошедший годовой период, а в повторных циклах просто сравнивается текущая дата с последней записанной и отсутствующие свечи докачиваются. Таким образом базу данных можно содержать в актуальном состоянии.

( Читать дальше )

Блог им. vkcoda982 |Пишу MarketScanner. 28.02.2016

Продолжаю в свободное время писать сканер рынка.

В первую очередь оказалось, что ответы на запросы к TWS приходят асинхронно, поэтому линейно работать затруднительно. Это проявлялось в том, что некоторые ответы прилетали позже и терялись, т. к. я уже переходил к следующему тикеру в случае каких-либо ошибок. Поэтому я разделил программу на два потока — один из них регулярно делает запросы, а второй ждёт когда появятся ответы и записывает данные на диск. Собственно такая архитектура поддерживается API IB, т. к. при получении данных вам передаётся request id, по которому можно сориентироваться, куда записывать пришедшие данные, и этот id может быть ответом не на последний запрос, а например, на предпоследний.

Изменил вывод текста в консоль. Решил, что хорошая идея не выводить вперемешку в общий output сообщения из разных потоков, а разделить консольный вывод на две части, и привязать к каждой из них соответствующий поток. Пришлось отказаться от стандартных функций POSIX по выводу строк в консоль, и написать свой собственный класс консоли, который управляет выводом в screen buffer. Выглядит это примерно так:

( Читать дальше )

Блог им. vkcoda982 |Пишу MarketScanner. 21.02.2016

Продолжаю писать в свободное от работы время собственный market scanner.

Решено, что сканер будет состоять из двух программ, работающих независимо:
1) Database, которая будет вытягивать исторические данные через IB TWS, формировать из них базу данных.
2) Scanner + Visualizer, собственно поиск паттернов, отображение чартов, подача сигналов, выставление ордеров и т. д.
Предполагается, что работать они будут параллельно и круглосуточно, скачивая и сканируя весь рынок на предмет точек входа.
 
Торговые данные будут храниться на диске в виде XML-файлов — текстовый формат более удобен для ручной инспекции, он расширяем, может читаться разными парсерами и т. д. Для работы с XML я подключил библиотеку TinyXML: https://sourceforge.net/projects/tinyxml/

Тестовый код работает следующим образом: в XML-файле хранится список тикеров, по которым нужно получить исторические данные. Для простоты я начал с компаний из списка S&P 500. Программа идёт по списку и вытягивает исторические данные за последний год для каждого тикера. Полученные данные записываются в соответствующий XML-файл, который имеет такое же символьное сокращение как и у тикера.

( Читать дальше )

Блог им. vkcoda982 |Пишу MarketScanner

Многие пишут роботов, даже Мартыныч бросился изучать C# что бы что-нибудь этакое написать. Поскольку я программист, то решил не отставать и тоже написать — но нет, не робота, а сканер рынка. Идея простая — сканер должен вытягивать с сервера брокера исторические данные по всем торгуемым на NYSE ценным бумагам и искать по заданным алгоритмам фигуры теханализа. Наблюдая за рынком на протяжении последнего года, я заметил некоторые фигуры в действии — они действительно имеют место быть:
IBM оттолкнулась от линии поддержки

Сканер должен обрабатывать скачиваемые исторические данные, таймфрейм — недели/месяцы. Если определяется какая-либо интересная фигура TA, то программа сообщает об этом мне, а я уже дальше в ручном режиме просматриваю бумагу и принимаю решение торговать её или нет. На биржах США торгуется несколько тысяч ценных бумаг эмитентов, по задумке время от времени где-то что-то будет вырисовываться. Вручную за таким кол-вом тикеров уследить невозможно — поэтому нужен сканер.

Я работаю с InteractiveBrokers, у них есть API для всех основных платформ (Win/Mac/Unix) и языков — Java/C++/C#:
www.interactivebrokers.com/en/software/api/api.htm
Также быстро разобраться в нюансах помог сайт Richard-а Holowczak-а: 
holowczak.com/ib-api-socket-csharp-historical

А вот консольный вывод скачанных исторических данных:

Пишу MarketScanner
По сути сканер будет формировать некую базу данных, скачивая котировки в непрерывном режиме, постоянно отыскивая в их движении закономерности. Я планирую написать визуализатор для котировок, так что я мог бы просматривать свечки и линии поддержки-сопротивления без участия основного терминала.

....все тэги
UPDONW
Новый дизайн