ProTrading (프로트레이딩)

Screenshots


실제 증권사 MTS와 동일한 환경의 모의 투자 연습 앱입니다. 가상 자금 1억원으로 한국 주식, 미국 주식, 암호화폐를 실전처럼 매매하세요.

주요 기능

멀티 마켓 실시간 시세

  • 코스피 100종목 / 코스닥 50종목 (네이버 금융 API)
  • 미국 주식 30종목 - AAPL, NVDA, TSLA 등 (Yahoo Finance API)
  • 암호화폐 50종목 - BTC, ETH, SOL 등 (CoinGecko API)
  • 3초 간격 배치 폴링 + API 실패 시 가상 시세 자동 폴백
  • 종목 검색 (네이버 자동완성 API)

캔들 차트 (Flame 엔진)

  • 60FPS 실시간 캔들스틱 차트 렌더링
  • 핀치 줌 / 좌우 스크롤
  • 현재가 점선 라인 + 가격 그리드 자동 계산
  • 양봉(빨간) / 음봉(파란) 한국 표준 색상

호가창 (Flame 엔진)

  • 매도/매수 5단계 호가 60FPS 렌더링
  • 잔량 바 보간 애니메이션 (0.5초 스무딩)
  • 0.5초마다 잔량 ±2% 미세 진동 (살아있는 시장 느낌)
  • 체결 시 해당 가격대 하이라이트 효과
  • 호가 탭 시 지정가 주문 자동 입력

체결 엔진

  • 시장가 주문: 현재가 즉시 체결
  • 지정가 주문: 현재가와 주문가 비교 → 즉시 체결 또는 미체결 대기
  • 미체결 주문 자동 체결 감시
  • 매매 수수료 0.015% / 매도 세금 0.23%
  • 주문 확인 바텀시트 (수수료, 세금, 총 결제금액 표시)

포트폴리오

  • 총 자산 / 예수금 / 수익률 실시간 표시
  • 보유 종목별 평균 매수단가, 평가손익, 수익률
  • 최근 체결 이력

관심종목

  • 종목 상세 화면에서 ★ 버튼으로 관심종목 추가/삭제
  • 관심종목 실시간 시세 표시
  • 좌로 스와이프 삭제 (취소 가능)
  • Supabase 동기화

리더보드 (정렬 필터)

  • 시총순 / 상승률 / 하락률 / 거래량 정렬
  • 상위 1~3위 골드 하이라이트

유저 랭킹

  • 총 자산 기준 전체 사용자 순위
  • 상위 3명 메달 하이라이트
  • 초기 1억 대비 수익률 표시

인증 시스템

  • 이메일/비밀번호 회원가입 + 로그인
  • 게스트 로그인 (익명)
  • 이용약관
  • 세션 유지 (자동 로그인)

설정

  • 닉네임 변경
  • 테마 변경 (다크 / 라이트 / AMOLED)
  • 글씨 크기 조절 (6단계 슬라이더)
  • 로그아웃
  • 회원탈퇴 (Edge Function으로 DB + Auth 계정 완전 삭제)

기술 스택

구분기술
FrameworkFlutter 3.11+
Game EngineFlame (캔들 차트 + 호가창 렌더링)
State ManagementRiverpod
BackendSupabase (Auth, Database, Edge Functions)
한국 주식네이버 금융 API
미국 주식Yahoo Finance API
암호화폐CoinGecko API
데이터 전략Intelligent Polling (3초) + Micro Tick (0.5초)

프로젝트 구조

lib/                              # 36 파일, 6,550줄
├── main.dart                     # 앱 진입점 (Supabase 초기화, 테마, 폰트)
├── core/
│   ├── config/                   # Supabase URL/Key
│   ├── constants/                # 상수 (초기자금, 수수료율)
│   ├── theme/                    # 다크/라이트/AMOLED 테마
│   └── utils/                    # 가격/금액 포맷터
├── models/
│   ├── stock.dart                # StockPrice, CandleData, OrderBook
│   ├── portfolio.dart            # Holding, Portfolio (PnL 계산)
│   └── trade.dart                # Order, TradeLog
├── services/
│   ├── naver_finance_service.dart # 한국 주식 시세 + 검색
│   ├── yahoo_finance_service.dart # 미국 주식 시세 + 캔들
│   ├── coingecko_service.dart     # 암호화폐 시세
│   ├── polling_service.dart       # 지능형 폴링 + 마이크로 틱
│   ├── mock_data_service.dart     # 합성 호가창 + 폴백 시세
│   ├── trading_engine.dart        # 체결 엔진 (시장가/지정가)
│   └── supabase_service.dart      # Supabase CRUD + 관심종목
├── providers/
│   ├── service_providers.dart     # 서비스 DI
│   ├── market_providers.dart      # 멀티마켓 시세 스트림
│   ├── portfolio_providers.dart   # 잔고/보유종목/주문 (Supabase 연동)
│   ├── watchlist_provider.dart    # 관심종목
│   └── settings_providers.dart    # 테마/글씨크기 (SharedPreferences)
├── widgets/
│   ├── candle_chart.dart          # Flame 캔들차트
│   ├── order_book_widget.dart     # Flame 호가창
│   └── confirm_bottom_sheet.dart  # 공통 확인 바텀시트
├── screens/
│   ├── auth/                      # 로그인, 회원가입, 약관
│   ├── home_screen.dart           # 하단 네비 (종목/관심/자산/랭킹/설정)
│   ├── stock_list_screen.dart     # 종목 리스트 (4개 마켓 탭)
│   ├── watchlist_screen.dart      # 관심종목
│   ├── trading_screen.dart        # 매매 화면 (차트+호가+주문)
│   ├── portfolio_screen.dart      # 자산 현황
│   ├── leaderboard_screen.dart    # 유저 랭킹
│   └── settings_screen.dart       # 설정
└── supabase/
    └── functions/
        └── delete-account/        # 회원탈퇴 Edge Function

시작하기

사전 요구사항

  • Flutter SDK 3.11+
  • Dart SDK 3.11+

설치 및 실행

git clone https://github.com/kimdzhekhon/Pro_trading.git
cd Pro_trading
flutter pub get
flutter run

빌드

# Android App Bundle (Play Store)
flutter build appbundle --release

# iOS (App Store)
flutter build ipa --release

# APK (직접 설치)
flutter build apk --release

Supabase 설정 (직접 배포 시)

  1. Supabase에서 프로젝트 생성
  2. SQL Editor에서 supabase_schema.sql 실행
  3. Authentication → Settings → Anonymous sign-ins 활성화
  4. lib/core/config/supabase_config.dart에 URL과 anon key 입력
  5. Edge Function 배포: supabase functions deploy delete-account

디자인

  • 상승: Red (#FF4444) / 하락: Blue (#4444FF) — 한국 주식시장 표준
  • 골드 액센트 (#FFD700)
  • 다크 / 라이트 / AMOLED 3가지 테마 지원

라이선스

이 프로젝트는 개인 학습 및 연습 목적으로 제작되었습니다.