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 계정 완전 삭제)
기술 스택
| 구분 | 기술 |
|---|---|
| Framework | Flutter 3.11+ |
| Game Engine | Flame (캔들 차트 + 호가창 렌더링) |
| State Management | Riverpod |
| Backend | Supabase (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 설정 (직접 배포 시)
- Supabase에서 프로젝트 생성
- SQL Editor에서
supabase_schema.sql실행 - Authentication → Settings → Anonymous sign-ins 활성화
lib/core/config/supabase_config.dart에 URL과 anon key 입력- Edge Function 배포:
supabase functions deploy delete-account
디자인
- 상승: Red (
#FF4444) / 하락: Blue (#4444FF) — 한국 주식시장 표준 - 골드 액센트 (
#FFD700) - 다크 / 라이트 / AMOLED 3가지 테마 지원
라이선스
이 프로젝트는 개인 학습 및 연습 목적으로 제작되었습니다.