Біржовий кодінг. Фондові ринки [не forex та блокчейн]
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Всім привіт. Хотів би почати обговорення на тему «Біржовий кодінг(не FOREX)».
Цікаво почути чи багато людей котрі заходять на цей сайт займаються програмуванням в цьому напрямку, а саме:
• Розробка власних індикаторів/алгоритмів
• Розробка програмного забезпечення
• Штучний інтелект
• Торговельні боти
• Високочастотний трейдінг.
Цікаво почути які використовуєте фреймворкі для обробки даних, апі для отримання котирувань, платні чи безкоштовні. Можу поділитись своїм досвідом.
Пишу для себе різні індикатори(одразу кажу, що ніяких стохастіків та RSI я не малюю, бо це все повне дно і вам раджу з цим не зв’язуватись) загалом направленні на обробку об’єму торгів, принти та роботу з формаціями свічок.
Графіки не малюю, кожен що поважає себе постачальник біржових даних надає історію графіків одразу в барах/свічках від 1хв до року на довгу історію.
Зі свого досвіду хотів би поділитись в таких напрямках.
1. Тип та архітектура додатку
2. Провайдери даних
Загалом в моїй системі бере участь 3 додатки.
• Провайдер — Console App. Core 3.0
• Отримувач — Console App. Core 3.0
• Вивід даних після аналізу — Web: Angular 8 + WebApi Core 3.0
Провайдер — Додаток який запускай процес отримання даних від провайдерів, тобто постачальник біржових даних. В цей додаток заходять мільйони принтів з тих бірж до яких я під’єднався. Архітектура додатку класична.
Будую свій кастомний Staptup на кшталт як у вебі при створенні додатку в студії. В стартапі реєструю всі інтерфейси, вся робота іде тільки через них. І вперед => запускаю першого провайдера.
service.StartStreamActiveTickSP500();
Після запуску бачу в консоль що є контакт.
Провайдер починає надавати стрім без затримок на всі тікера які я вказав при конекті. В моєму випадку це акції NYSE, NASDAQ. Далі починає працювати RabbitMQ на даний момент без обгортки MassTransit. Хоча знаю що мастранзіт покращує роботу рабіта. RabbitMQ тут по любому потрібен, бо потрібно будувати чергу на майбутню обробку даних. З цією задачею кролик справляються чудово. Головний плюс, якщо в вас впаде отримувач даних(другий додаток) то після підняття ви все одно побачите чергу яку рабіт для вас зберіг і дані відпрацюють. Дуже зручно, бо коли потрібно відключити другий додаток та зробити якісь зміни(а перші два дотики працюють майже цілодобово) то не слід переживати що я втрачу данні. Рабіт помістить те що я отримав від платних апі в чергу і при першій змозі відправить на додаток отримувача. І взагалі з рабітом можна будувати багато інших додатків і відсилати на які хочеш адреси й вони ніяк не будуть залежить від першого додатку — провайдера де ви отримуєте данні. Максимальне розділення на відправника та отримувача — це напевно одне з головних що потрібно зробити коли працюєш з отриманням біржових даних у великій кількості. Заходить від провайдера всі зміни Level 1 та всі принти. Будую модель і відправляю на другий додаток кожну зміну. В секунду на 500 акції може буте 10к+ на відкритті NYSE. На цьому перший додаток закінчується.
Отримувач — додаток який отримує данні від першого додатку у вигляді масиву байтів.
Розпаковую та проганяю по всіх сервісах які мені потрібно. Зокрема просто вивожу в консоль просту кастому стрічку всіх принтів.
В цьому додатку хочу звернути увагу на роботу Quartz.net. Доволі зручна бібліотека для роботи з часом. Використовую її для запису в базу даних в певні інтервали часу та інших маніпуляціях. В цьому додатку така сама архітектура як і в першому. На верх дивляться тільки інтерфейси та робота через них. Я викликаю всі необхідні сервіси для аналізу інфи. Якщо хочу шукати формації то викликаю потрібний інтерфейс. Якщо хочу додати новий аналіз. Спочатку пишу код окремо. Потім відключаю другий додаток та вставляю в код і запускаю. Переживати за втрату даних не потрібно(стрім даних в першому додатку іде) бо рабіт все поміщає в чергу та при запуску отримувача я побачу всі прінти які чекали відправки. Кожний певний період записую все в базу. Використовую EF та MSSQL. Ну по суті на цьому другий додаток закінчується.
Вивід даних після аналізу — класичний додаток за шаблоном WebApi на Angular8 & Core 3.0. Про цю частина якщо чесно нема чого цікавого писати. Для зручності та швидкості реалізації інтерфейсу використовую PrimeNG. Безкоштовна та доволі велика бібліотека з багатьма корисними контролами.
Провайдери:
Зараз я використовую платну апі за 94$ від ActiveTick. Сервіс — дно. Сама послуга на 8 з 10. Дає дані на Level 1 та кожні зміни в котировках, як ви бачили на скріні принтів, будь-яка зміна з котируванням навіть просто кількість лотів одразу приходить мені в код. Також дає дані на принти, openbook, історію графіків та об’єми. Але зараз в них доступ тільки на акції та опціони. Ф’ючерси закриті.
Доволі легка документація та дуже зрозумілий приклад додатку з отриманням даних який ви отримуєте після оплати. Їхня ліба інсталюється до вас на комп і ви її можете найти в студії при підключені бібліотеки у ваш проєкт. Реалізувати для отримування даних в мене зайняло десь годину від оплати до вивода в консоль в тестовому додатку.
Хотів би від спільноти почути які ви використовуєте апі для даних. Зараз я додаткову хочу взяти ще одну апі від Intrinio. Доволі потужний ресурс з великим вибором різних апі з гарним сервісов та більш дешевший. Але на акціях в них не постачається котирування. Тільки принти. А мені котирування та левел 1 потрібен. Може хтось вже працював з ним та поділиться досвідом?
Наступне що цікавить це данні на ф’ючерси. Є з ними проблема що вони доволі дорогі. Наприклад, на отримання принтів + котирування на основні американські ф’ючерси коштує $1500 + в місяць. З затримкою на 15 хв буде в районі 1000. Ціну вони точну не дають, для кожного клієнта розраховують окремо в залежності від потреб.
Знов же хотілось почути від спільноти, хто і де бере данні на ф’ючерси з Чикаго з повним стрімом?
Ось тут є непоганий список біржових апішок rapidapi.com/...4Pxk3bsgwEOAaArfwEALw_wcB
Наступну апішку яку хочу помістити у свою колекцію це апі yahoo-Finance. В них доволі приємний формат подачі бухгалтерської статистики про компанії. Відповідно апішку їхню хочу використовувати саме для аналізу бухгалтерської звітності.
До речи хотів би звернути увагу спільноти що в Україні прийняли закон (в 2018 році) про бух. облік та перехід на систему звітності IFRS всіх підриємтв до 2025 року(якщо не помиляюсь). Сподіваюсь «слуги» не звернуть курс євроінтеграції та ми успішно приєднаємось до єдиного бух обліку світу. В США та відповідно їх апі дають звітність за системою GAAP. Я до неї звик і вона як на мене краща для фінансів ніж IFRS. Але через те, що ми в Європі то переходимо як раз на IFRS, хоча GAAP краща підлаштована для звітності в контексті такої капіталістичної махіни як США. Різниця в них не є великою. Так що раджу вже вчити, брати данні з американських ресурсів або ЄС, щось своє писати 😊.
На даний момент можу підвести ---- та надати слово спільноті. До написаних раніше питань до наших ITшників додаю настпуні
• Ваші колекції апі. Особливо цікавлять ф’ючерси
• Які мови програмування?
• Як відправляєте ордера якщо торгуєте через бота?
• Чи допомагає вам кодінг в трейдінгу(якщо торгуєте).
Прошу фанатів криптовалют оминути цю тему. Мені шкода вас якщо ви прийшли в трейдинг під час моди кріпти. Ваш світогляд про торгівлю з самого початку зламано та доведеться довго чинити. Хотілось би почути трейдерів реальних ринків. Я не фанат блокчейнів. Я їх не пишу. Хоча визнаю цю технологію як факт чогось потрібного для цієї цивілізації.
Про мене. Загалом в трейдингу вже десь 10 років. З них роботи в професійному пропі 2,5 роки. Сам вже і вів навчальні курси та відкривав проп з інвестором на криптовалюти(така його вимога була). Закінчилось майже фатально. Зрозумів що на реальних біржах без кодінгу давно вже нема чого робити. То ж навчитись професійно писати код та працювати з даними просто зобов’язан. Саме тому пішов у сферу IT і зараз працюю в одній компанії на посаді Full Stack .NET Dev. Пишу власний продукт, але це вже інша історія.
19 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів