Pull to refresh
5
0
Степан М. @Symsym

DevOps

Send message

Пишем торгового бота для акций

Level of difficultyEasy
Reading time19 min
Views29K

Хочу показать вам, как легко создавать своих торговых роботов для фондового рынка. Вы сможете протестировать ваши торговые стратегии на истории цен акций/фьючерсов, вам нужно только написать алгоритм принятия решений вашей стратегии на покупку или продажу актива — т.к. весь основной каркас робота уже написан. А добавив всего 4 строчки кода, ваша протестированная стратегия на истории сможет работать в live на реальном рынке, выставляя заявки на покупку и продажу в рынок.

Читать далее
Total votes 13: ↑7 and ↓6+1
Comments26

Bitcoin: Кризис уничтожит крипту?

Reading time19 min
Views26K

После майского flash crash-а, обвалившего биткоин за сутки на 33%, а общий обвал котировки с ATH превысил 50%, цена консолидируется в диапазоне 30к$ - 41к$. Куда же будет выход после консолидации? Продолжится ли to the moon, или же это начало медвежьего рынка? Когда покупать, а когда продавать? Как именно фондовый рынок влияет на крипту? Что такое эра инстуционалов? Вниманию читателя предлагаю изучить данную статью, в которой есть ответы на все вышеуказанные вопросы.

Читать далее
Total votes 26: ↑10 and ↓16-6
Comments61

Финтех на карантине: студенты и преподаватели Тинькофф Финтеха рассказывают о переходе в онлайн

Reading time10 min
Views10K
В Тинькофф есть собственные образовательные проекты, один из которых — Тинькофф Финтех. У нас учатся аналитике, разработке и тестированию молодые специалисты из разных городов России, где есть Тинькофф Центры разработки.



С конца марта Тинькофф Образование из-за коронавируса перешло полностью на дистанционное обучение. До этого все курсы шли офлайн, в офисе Тинькофф, по три месяца, и переход произошел в самый разгар обучения. Мы спросили преподавателей и студентов, как они это пережили.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments4

Алгоритмический сюрреализм: Руководство по высокочастотному трейдингу за 900 миллионов микросекунд. Часть 1

Reading time15 min
Views11K


Примечание переводчика: В блоге ITinvest на Хабре мы много пишем о технологиях, связанными с трейдингом на современных биржах. Сегодня мы представляем вашему вниманию первую часть адаптированного перевода статьи лондонского финансиста и трейдера Бретта Скотта, в которой он подробно рассказывает о явлении высокочастотного трейдинга (HFT). Этот материал поможет лучше понять все плюсы и негативные моменты, возникающие вследствие деятельности таких высокочастотных торговцев.

Пока вы читаете это предложение, алгоритм для высокочастотного трейдинга (high-frequency trading, HFT), поддерживающий связь с фондовой биржей через трейдинговую инфраструктуру «с малыми задержками», возможно, смог бы провести 1000 сделок.

Я говорю «возможно», потому что это зависит от того, какую паузу вы делаете в местах, где расставлены запятые. Если при чтении вы предпочитаете останавливаться после каждой запятой, то вы даете алгоритму шанс выставить еще несколько сотен ордеров.

Попытаюсь прояснить ситуацию. Это значит, что расположенные в определенном месте компьютеры, которыми владеет (или которые арендует) компания, могут: 1) получить доступ к данным фондовой биржи; 2) обработать их с помощью закодированной системы последовательных операций (алгоритма) и принять решение о том, стоит ли торговать или нет; 3) отправить обратно на биржу сообщение с ордером на покупку/продажу акций компании – например, компании по производству детских игрушек; 4) подождать, пока ордер будет исполнен, и получить подтверждение; 5) повторять все эти шаги, скажем, 250 раз в секунду.

Честно говоря, это тоже не совсем точные цифры. Лишь немногие знают, насколько быстро на самом деле алгоритмические движки осуществляют торговые операции. Но даже если они совершают 50 или даже 10 сделок в секунду, это все-таки невероятно быстро.
Читать дальше →
Total votes 18: ↑12 and ↓6+6
Comments0

Любить всех человеков — лучшие доклады с TeamLeadConf за 5 минут

Reading time12 min
Views11K
Недавно мы с коллегами были на TeamLeadConf — это конференция об управлении, мотивации, найме, процессах и других штуках, полезных тимлидам.

Обычно после конференций мы делимся впечатлениями с теми, кто на конференцию не пошел. Самый популярный формат — список топовых докладов с краткими заметками, который рассылается в Слаке и по почте.

В этот раз я написала такой обзор для коллег и подумала: а почему бы не опубликовать эти заметки для всех? Так текст на Вики переродился в эту статью.


Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments2

Принцип подстановки Лисков

Reading time6 min
Views49K

Всем привет, меня зовут Константин. Я занимаюсь разработкой на Java в Tinkoff.ru и люблю SOLID. В этой статье мы сформулируем принцип подстановки Лисков, покажем его связь с принципом Открытости-Закрытости, узнаем, как правильно формировать иерархию наследования и ответим на философский вопрос о том, является ли квадрат прямоугольником.


Читать дальше →
Total votes 50: ↑40 and ↓10+30
Comments74

Сказ о том, как я автоматизировал квартиру с помощью Node-RED. Часть II

Reading time9 min
Views25K
Долгожданное продолжение поста про автоматизацию квартиры. В этой части я расскажу об освещении, мультимедиа-системе и датчиках безопасности.


Total votes 63: ↑60 and ↓3+57
Comments23

Как мигрировать большой процесс с IBM BPM на Camunda и не останавливать разработку фич

Reading time5 min
Views8.5K
image

Привет, меня зовут Денис, я работаю в Тинькофф и занимаюсь BPM-системами. В этой статье я расскажу, как мигрировать с легаси систем а-ля IBM BPM на опенсорс движок процессов Camunda на примере большого процесса. А в конце приглашу вас на четвертый митап по Camunda, который пройдет 27 февраля в Тинькофф, в Москве (м. Водный Стадион) вечером.
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments13

Разработка более быстрых приложений на Vue.js

Reading time14 min
Views24K
JavaScript — это душа современных веб-приложений. Это — главный ингредиент фронтенд-разработки. Существуют различные JavaScript-фреймворки для создания интерфейсов веб-проектов. Vue.js — это один из таких фреймворков, который можно отнести к довольно популярным решениям.

Vue.js — это прогрессивный фреймворк, предназначенный для создания пользовательских интерфейсов. Его базовая библиотека направлена, в основном, на создание видимой части интерфейсов. В проект, основанный на Vue, при необходимости легко интегрировать и другие библиотеки. Кроме того, с помощью Vue.js и с привлечением современных инструментов и вспомогательных библиотек, можно создавать сложные одностраничные приложения.



В этом материале будет описан процесс создания простого Vue.js-приложения, предназначенного для работы с заметками о неких задачах. Вот репозиторий фронтенда проекта. Вот — репозиторий его бэкенда. Мы, по ходу дела, разберём некоторые мощные возможности Vue.js и вспомогательных инструментов.
Читать дальше →
Total votes 41: ↑32 and ↓9+23
Comments11

Дружим ORDER BY с индексами

Reading time8 min
Views19K


Привет, Хабр!


Я потихоньку перевожу статьи Маркуса Винанда из блога use the index luke.


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

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments1

Повторная обработка событий, полученных из Kafka

Reading time7 min
Views25K


Привет, Хабр.


Недавно я поделился опытом о том, какие параметры мы в команде чаще всего используем для Kafka Producer и Consumer, чтобы приблизиться к гарантированной доставке. В этой статье хочу рассказать, как мы организовали повторную обработку события, полученного из Kafka, в результате временной недоступности внешней системы.


Современные приложения работают в очень сложной среде. Бизнес-логика, обернутая в современный технологический стек, работающая в Docker-образе, который управляется оркестратором вроде Kubernetes или OpenShift, и коммуницирующая с другими приложениями или enterprise-решениями через цепочку физических и виртуальных маршрутизаторов. В таком окружении всегда что-то может сломаться, поэтому повторная обработка событий в случае недоступности одной из внешних систем — важная часть наших бизнес-процессов.

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments5

Расширения в Kotlin. Опасный атавизм или полезный инструмент?

Reading time8 min
Views12K


Kotlin — еще молодой язык, но уже стремительно ворвался в нашу жизнь. Из-за этого не всегда понятно, каким образом правильно реализовать тот или иной функционал и какие best practice применять.

Особенно тяжело обстоит дело с возможностями языка, которых нет в Java. Одним из таких камней преткновения оказались расширения.

Это удобный инструмент, который делает код более читаемым, практически ничего не требуя взамен. Но в то же время знаю как минимум одного человека, который если и не считает расширения злом, то точно относится к ним скептически. Ниже я хотел бы обсудить особенности этого механизма, которые могут вызвать споры и недопонимание.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments17

Почему нужна инструментальная поддержка пагинации на ключах

Reading time5 min
Views19K

Всем привет! Я бэкэнд-разработчик, пишу микросервисы на Java + Spring. Работаю в одной из команд разработки внутренних продуктов в компании Тинькофф.



У нас в команде часто встает вопрос оптимизации запросов в СУБД. Всегда хочется еще чуть-чуть быстрее, но не всегда можно обойтись продуманно выстроенными индексами — приходится искать какие-то обходные пути. Во время одного из таких скитаний по сети в поисках разумных оптимизаций при работе с БД я нашел бесконечно полезный блог Маркуса Винанда, автора книги SQL Performance Explained. Это тот самый редкий вид блогов, в котором можно читать все статьи подряд.


Хочу перевести для вас небольшую статью Маркуса. Ее можно назвать в какой-то степени манифестом, который стремится привлечь внимание к старой, но до сих пор актуальной проблеме производительности операции offset по стандарту SQL.

Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments87

Пишем свою стратегию для виртуального скролла из Angular CDK

Reading time8 min
Views12K

Привет!


В Angular CDK в седьмой версии появился виртуальный скролл.


Он отлично работает, когда размер каждого элемента одинаков, — причем прямо «из коробки». Мы просто задаем размер в пикселях и указываем, к какому элементу нужно прокрутить контейнер, сделать ли это плавно, а также можем подписаться на индекс текущего элемента. Однако что делать, если размер элементов меняется? Для этого в CDK предусмотрен интерфейс VirtualScrollStrategy, реализовав который мы научим скролл работать с нашим списком.


В моем случае требовалось сделать календарь для мобильного представления, который можно прокручивать непрерывно, а количество недель в месяце всегда разное. Попробуем разобраться, что представляет собой стратегия виртуального скролла и напишем свою.


image

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments2

Делаем HTTP-запросы, изящно деградируем (и ни единого разрыва)

Reading time5 min
Views19K
image

Сегодня мало кто помнит, что веб-приложения могут работать без единого XHR-запроса. AJAX (Asynchronous Javascript and XML) дает классную возможность — подгружать данные без перезагрузки страницы. Эта концепция лежит в основе большинства современных SPA.

Но ничто не дается просто так, за все нужно платить. Концепция AJAX кажется предельно простой, но даже на уровне запроса данных с сервера можно встретить кучу проблем.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments7

Как организовать эффективную работу распределенной команды верстки

Reading time10 min
Views7.5K

Всем привет! Меня зовут Роман, и сегодня я поделюсь своим опытом работы в распределенной команде верстки. Расскажу о процессах, которые мы построили, и как команда из четырех человек покрывает потребности в верстке целого подразделения, состоящего из 30+ продуктов и 20+ продуктовых команд.


Как организовать эффективную работу распределенной команды верстки

Еще расскажу о том, как:


  • Контролировать работу распределенной команды;
  • Добиваться консистентности кода в разных проектах;
  • Справедливо распределять задачи;
  • Поддерживать высокое качество работы;
  • Не накапливать незавершенные задачи;
  • Проводить профилактику выгорания и развивать сотрудников.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments10

Как Kafka стала былью

Reading time5 min
Views31K


Привет, Хабр!


Я работаю в команде Tinkoff, которая занимается разработкой собственного центра нотификаций. По большей части я разрабатываю на Java с использованием Spring boot и решаю разные технические проблемы, возникающие в проекте.


Большинство наших микросервисов асинхронно взаимодействуют друг с другом через брокер сообщений. Ранее в качестве брокера мы использовали IBM MQ, который перестал справляться с нагрузкой, но при этом обладал высокими гарантиями доставки.


В качестве замены нам предложили Apache Kafka, которая обладает высоким потенциалом масштабирования, но, к сожалению, требует практически индивидуального подхода к конфигурированию для разных сценариев. Кроме того, механизм at least once delivery, работающий в Kafka по умолчанию, не позволял поддерживать необходимый уровень консистентности из коробки. Далее я поделюсь нашим опытом конфигурации Kafka, в частности расскажу, как настроить и жить с exactly once delivery.

Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments14

Как прошёл п̶е̶р̶в̶ы̶й̶ второй митап по Android от Tinkoff

Reading time3 min
Views5K
Всем привет!

Я — Александр Гузенко, ведущий разработчик в компании Тинькофф. И так сложилось, что я постоянно топлю за какую-то движуху по шарингу знаний, курирую финтех школу по андроиду и люблю ходить на конференции и митапы.

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


Total votes 20: ↑19 and ↓1+18
Comments2

Прокачиваем ваши релизы

Reading time6 min
Views4.3K


Генри Форд однажды сказал: «Лучшая машина — новая машина». Так и мы в группе компаний Тинькофф думаем про релизы софта. Инертность в процессе доставки фич и срочных фиксов рано или поздно приводит к большой технической задолженности перед заказчиком и чаще всего заканчивается стагнацией проекта в целом.


Гарантировать высокий показатель time to market, сохранив качество, — непростая задача. C моей точки зрения, нельзя сразу построить рельсы, по которым можно будет быстро и удобно доставлять изменения и спустя много месяцев после старта. Рост проекта обычно сопровождается ростом числа людей, работающих над ним, а значит, создает потенциальный источник хаоса внутри ваших релизов.


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

Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments3

Рукописи не горят: секрет долговечности свитков Мертвого моря, датируемых 250 годом до н.э

Reading time12 min
Views20K


В современных музеях и архивах древние тексты, рукописи и книги хранятся в определенных условиях, что позволяет сохранить их первозданный вид для будущих поколений. Самым ярким представителем нетленных рукописей считаются свитки Мертвого моря (Кумранские рукописи), впервые найденные еще в 1947 году и датируемые 408 годом до н. э. Некоторые из свитков сохранились лишь фрагментарно, но есть и практически не тронутые временем. И тут возникает очевидный вопрос — как же людям более 2000 лет тому назад удалось создать манускрипты, дожившие до наших дней? Именно это и решили выяснить в Массачусетском технологическом институте. Что нашли ученые в древних свитках и какие технологии использовались для их создания? Об этом мы узнаем из доклада исследователей. Поехали.
Total votes 54: ↑52 and ↓2+50
Comments7

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity