Приложение с графиками: как улучшить показатели бизнес процессов
Мобильные приложения для просмотра и взаимодействия с графиками стали популярным инструментом для представления статистики и описания бизнес-процессов. Именно таким примером и является приложение с графиками Stock Alerts, созданное нашей командой.
Для мониторинга и оценки рынка в нём задействуются линейные и столбчатые диаграммы, японские свечи и т.д. Для технического анализа применяется построение линий уровня, каналов и флагов.
Нашей команде представилась возможность разработать графики и функционал трейдера в приложении Stock Alerts. В процессе его разработки мы выявили необходимость решения ряда нетривиальных задач. В целом все они связаны с улучшением процесса рисования фигур на графиках и их кастомизацией.
Особенности приложения
Данное приложение с графиками обладает следующими возможностями:
- отображение разных типов графиков: японские свечи, гистограммы, линейные графики;
- динамические и адаптивные шкалы;
- автоматическое масштабирование графиков в соответствии с минимумами и максимумами на отображаемом интервале;
- отображение параметров графика в реальном времени;
- удобное рисование фигур технического анализа с помощью жестов;
- а также возможность детального отображения выбранных участков графика с помощью инструмента “лупа”.
Технологии приложения
Основой для iOS платформы послужила библиотека SwiftCharts, концепция которой заключается в использовании многослойной структуры: осей, направляющих, разделителей, точек и фигур.
Для построения фигур используется объект, содержащий тип фигуры (прямая, отрезок, ломаная и т.д.), массив основных (обычно начало и конец изображения) и дополнительных точек. Для того, чтобы разработать этот модуль, потребовалось создать несколько кастомизированных решений.
Построение фигур для технического анализа
Чтобы построить фигуру, требуется определение исследуемых параметров в каждом показателе на данный момент. Однако время неравномерно из-за специфики работы фондовой и валютной биржи. Это обусловлено разницей в часовых поясах, из-за чего торги начинаются по-разному, а также промежутками из-за выходных дней.
В результате мы разработали функцию, определяющую значение точки с учётом временного интервала (для каждого пикселя на границах рассматриваемого отрезка) и его масштаба. Она сопоставляет координаты View, с которой вы взаимодействуете, и координаты графиков.
Рисование с помощью TouchPad
Если рисовать с помощью тачпада, то можно столкнуться с трудностью обеспечения точности расположения фигур. По этой причине был реализован механизм сглаживания перемещения вершин и прилипания к рисункам.
В частности, при действии Drag скорость движения рассчитывается в зависимости от характеристик последнего смещения и быстроты передвижения тачпада. Это приводит к рассинхронизации между ним и маркером, которая позволяет точнее определять нужное положение. Для упрощения мы разработали систему соединения с опорными краями, например, свеч. Если новый показатель расположен близко к ним, то происходит автоматическое корректирование позиции индекса.
Инструмент «Лупа»
При реализации инструмента «Лупа» следует учитывать следующий момент. Как правило, часть экрана, к которому прикасается пользователь, закрывается рукой, поэтому нужно выбрать оптимальную позицию для показа интересующей информации.
Подводя итоги, отметим: разработка приложения потребовала написания множества базовых функций, поскольку существующие библиотеки не предоставляют весь необходимый инструментарий. А собственные стратегии обеспечивают крайне гибкую кастомизацию, позволяющую создавать проекты по всем пожеланиям заказчика.