Skip to content

About

Flutter mobile app for tracking Yahoo Finance quotes, viewing custom charts with indicators, and receiving background price alerts. Includes offline support and portfolio management.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

YahooTracker 📈

Мобильное приложение для Android, позволяющее отслеживать котировки акций и индексов с Yahoo Finance, строить графики с техническими индикаторами и получать уведомления при достижении ценой заданных пороговых значений. Проект разработан как учебный pet-project полного цикла. Цель — продемонстрировать навыки работы с локальными базами данных, интеграцией внешних API, фоновыми процессами и построением пользовательского интерфейса без использования сторонних библиотек графиков (кастомная отрисовка).

Свечной график
Интерактивный график с техническими индикаторами

✨ Основные возможности

Свечной график

1. Мониторинг котировок

  • Просмотр текущих цен, изменения за день (%) и истории движения цены.
  • Поддержка различных временных интервалов свечей (минутные, часовые, дневные).
  • Автоматическое обновление данных каждые 60 секунд при активном экране.
  • Офлайн-режим: Если интернет отсутствует, приложение отображает последние сохраненные данные из локальной базы.

2. Интерактивные графики (Custom Rendering)

  • Собственный виджет отрисовки свечных графиков (Candlestick Chart).
  • Поддержка жестов:
    • Масштабирование (pinch-to-zoom)
    • Панорамирование (swipe)
    • Выбор свечи для просмотра деталей (Open, High, Low, Close, Volume)
  • Наложение технических индикаторов:
    • SMA (Simple Moving Average)
    • EMA (Exponential Moving Average)
    • RSI (Relative Strength Index)
    • Bollinger Bands
    • MACD
  • Визуализация сигналов:
    • Пересечение линий
    • Выход из зон перекупленности/перепроданности

3. Система уведомлений (Alerts)

  • Пользователь может установить условия: «Уведомить, если цена акции X станет выше Y» или «ниже Z».
  • Фоновая проверка условий даже когда приложение закрыто.
  • Защита от спама: повторные уведомления по одному правилу отправляются не чаще одного раза в 20 минут.
  • Высокий приоритет уведомлений через нативный канал Android.

4. Управление портфелем

  • Группировка тикеров по папкам (например, «Технологии», «Избранное»).
  • Цветовое кодирование тикеров для быстрого визуального поиска.
  • Drag-and-drop сортировка групп и элементов внутри них.
  • Быстрое добавление и удаление активов.
Портфолио

🏗 Архитектура и Технологии

Приложение построено по паттерну MVVM-like (Model-View-ViewModel/Service) с разделением ответственности:

  • Client Framework: Flutter 3.x + Dart 3.x
  • State Management: Provider / StatefulWidget logic (в зависимости от сложности экрана)
  • Networking: dio (HTTP client) с кастомными интерцепторами для обработки ошибок и ретраев.
  • Local Database: sqflite (SQLite wrapper for Flutter). Схема БД включает таблицы для кэша свечей, котировок, правил алертов, групп и связей "многие-ко-многим". Реализована система миграций (версии схемы 1–5) для безопасного обновления структуры БД без потери данных пользователя.
  • Background Tasks: workmanager plugin. Используется двухуровневая стратегия: периодические задачи (страховочные) и цепочки одноразовых задач (основные) для балансировки между энергопотреблением и скоростью реакции.
  • Native Integration: MethodChannel для взаимодействия с системными настройками Android (автозапуск, оптимизация батареи) на устройствах производителей с агрессивной экономией энергии (Xiaomi, Huawei и др.).

🗂️ Структура проекта (упрощенно)

  lib/
  ├── main.dart              # Точка входа, инициализация сервисов
  ├── data/                  # Слой доступа к данным
  │   ├── local_db.dart      # Работа с SQLite
  │   ├── yahoo_provider.dart # HTTP-клиент для Yahoo Finance
  │   └── indicators.dart    # Чистые функции расчета индикаторов
  ├── models/                # Классы моделей данных (DTO)
  ├── screens/               # Экраны приложения (UI)
  ├── services/              # Бизнес-логика (алерты, онбординг)
  └── widgets/               # Переиспользуемые компоненты (график, списки)

🛡 Обработка рисков и ограничений

Так как проект использует неофициальные источники данных и работает в фоне, были приняты следующие меры:

1. Нестабильность API Yahoo:

  • Реализованы повторные попытки запросов (retry) с экспоненциальной задержкой.
  • Эмуляция браузерных заголовков (User-Agent) для снижения вероятности блокировки.
  • Graceful degradation: если расширенные данные недоступны, приложение продолжает работать с базовыми котировками.

2. Фоновые процессы на Android:

  • Проблема: многие оболочки Android убивают фоновые службы для экономии заряда.
  • Решение: при первом запуске предлагается пользователю включить автозапуск и исключить приложение из оптимизации батареи. Логика определения производителя устройства реализована через device_info_plus.

3. Целостность данных:

  • Все записи в БД имеют уникальные ключи (UNIQUE(ticker, timestamp) для свечей), что предотвращает дублирование при сбоях сети во время синхронизации.

About

Flutter mobile app for tracking Yahoo Finance quotes, viewing custom charts with indicators, and receiving background price alerts. Includes offline support and portfolio management.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors