A full-featured cryptocurrency tracking and portfolio management application built with Python and Tkinter.
- Real-time price tracking for 1000+ cryptocurrencies
- Search functionality for any cryptocurrency
- Market data including price, volume, market cap, and 24h changes
- Customizable watchlist
- Interactive price charts with technical indicators
- Moving averages (MA20, MA50)
- Bollinger Bands
- RSI (Relative Strength Index)
- MACD (Moving Average Convergence Divergence)
- Volume analysis
- Multiple timeframes (1h, 24h, 7d, 30d, 90d, 1y)
- Track cryptocurrency holdings
- Buy/sell transaction recording
- Real-time portfolio valuation
- Profit/loss calculations
- Portfolio performance metrics
- Diversification analysis
- Tax reporting (realized gains/losses)
- Set price alerts for any cryptocurrency
- Multiple alert conditions (above, below, crosses above/below)
- Desktop notifications
- Email notifications (configurable)
- Background monitoring
- Portfolio correlation analysis
- Volatility calculations
- Risk assessment
- Performance comparisons
- Market dominance tracking
- Import/export portfolio data
- Backup and restore functionality
- CSV export for external analysis
- Persistent data storage
- Python 3.7 or higher
- pip (Python package installer)
-
Clone or download the project files:
# Create a new directory mkdir crypto-price-checker cd crypto-price-checker
-
Save all the Python files in the project directory:
main.py(main application)crypto_api.py(API handler)crypto_charts.py(chart generation)crypto_portfolio.py(portfolio management)crypto_alerts.py(price alerts)crypto_utils.py(utility functions)
-
Install required packages:
pip install -r requirements.txt
Or install manually:
pip install requests pandas numpy matplotlib seaborn scipy plyer python-dateutil
-
Run the application:
python main.py
-
Launch the application:
python main.py
-
Market Overview Tab:
- View top cryptocurrencies by market cap
- Search for specific cryptocurrencies
- Add coins to your watchlist
- Monitor real-time price changes
-
Portfolio Tab:
- Add your cryptocurrency transactions
- Track your holdings and performance
- View detailed profit/loss calculations
- Export portfolio data
-
Charts Tab:
- Generate technical analysis charts
- Select different timeframes
- Analyze price trends with indicators
- Save charts as images
-
Alerts Tab:
- Create price alerts for your holdings
- Set up email notifications
- Monitor alert status
- Manage active alerts
-
Settings Tab:
- Configure auto-refresh intervals
- Set up email notifications
- Export/import data
- Test API connections
- Go to the Portfolio tab
- Enter the cryptocurrency symbol (e.g., BTC, ETH)
- Enter the amount you bought/sold
- Enter the price at which you bought/sold
- Click "Add" to record the transaction
- The portfolio automatically calculates your current holdings
- View real-time profit/loss for each position
- See overall portfolio performance and allocation
- Go to the Alerts tab
- Enter the cryptocurrency symbol
- Choose condition (Above/Below)
- Set target price
- Click "Create Alert"
- Go to Settings tab
- Configure SMTP settings for your email provider
- Test the connection
- Enable email notifications when creating alerts
- Go to Charts tab
- Enter cryptocurrency symbol
- Select timeframe
- Click "Generate Chart"
- Moving Averages: Show trend direction
- Bollinger Bands: Indicate volatility and potential reversal points
- RSI: Shows overbought (>70) and oversold (<30) conditions
- MACD: Indicates momentum changes
To enable email notifications for price alerts:
-
Gmail Setup:
- Enable 2-factor authentication
- Generate an app-specific password
- Use smtp.gmail.com, port 587
-
Other Email Providers:
- Yahoo: smtp.mail.yahoo.com, port 587
- Outlook: smtp-mail.outlook.com, port 587
- Custom SMTP: Configure with your provider's settings
The application uses the free CoinGecko API by default. No API key required for basic functionality.
Rate Limits:
- Free tier: 100 calls/minute
- The application includes automatic rate limiting
crypto-price-checker/
├── main.py # Main application entry point
├── crypto_api.py # CoinGecko API handler
├── crypto_charts.py # Chart generation and technical analysis
├── crypto_portfolio.py # Portfolio management
├── crypto_alerts.py # Price alerts system
├── crypto_utils.py # Utility functions
├── requirements.txt # Python dependencies
├── README.md # This file
├── crypto_settings.json # Application settings (auto-generated)
├── crypto_portfolio.json # Portfolio data (auto-generated)
└── crypto_alerts.json # Alerts data (auto-generated)
- MA20: 20-period moving average (short-term trend)
- MA50: 50-period moving average (medium-term trend)
- Golden Cross: MA20 crosses above MA50 (bullish signal)
- Death Cross: MA20 crosses below MA50 (bearish signal)
- Upper Band: MA20 + (2 × Standard Deviation)
- Lower Band: MA20 - (2 × Standard Deviation)
- Price touching upper band: Potentially overbought
- Price touching lower band: Potentially oversold
- Range: 0-100
- Above 70: Overbought condition
- Below 30: Oversold condition
- 50: Neutral momentum
- MACD Line: 12-period EMA - 26-period EMA
- Signal Line: 9-period EMA of MACD
- Histogram: MACD - Signal Line
- Crossovers indicate momentum changes
- Volatility: Annualized standard deviation of returns
- Sharpe Ratio: Risk-adjusted return measure
- Maximum Drawdown: Largest peak-to-trough decline
- Diversification Score: Based on Herfindahl Index
- Total Return: Overall gain/loss percentage
- CAGR: Compound Annual Growth Rate
- Beta: Correlation with market (if applicable)
- Alpha: Excess return vs benchmark
- JSON: Complete portfolio/alerts backup
- CSV: Transaction history and holdings
- Excel: (Future enhancement)
- Portfolio transactions
- Current holdings
- Alert configurations
- Performance reports
- Check internet connection
- Verify firewall settings
- Try refreshing after a few minutes (rate limit)
- Cryptocurrency symbol might be incorrect
- Try searching for the full name instead of symbol
- Some newer cryptocurrencies might not be available
- Ensure matplotlib is properly installed
- Check if sufficient price data is available
- Try a different timeframe
- Verify SMTP settings
- Check email provider's security settings
- Test connection in Settings tab
- Enable selective refresh for watchlist items
- Increase refresh interval in settings
- Consider using fewer technical indicators
- Reduce auto-refresh frequency
- Limit watchlist size
- Use longer timeframes for charts
- Extend
crypto_charts.py - Add calculation method
- Update chart plotting functions
- Modify
crypto_alerts.py - Add new condition types
- Update monitoring logic
- Create new API handler in
crypto_api.py - Implement rate limiting
- Add error handling
- GUI Layer: Tkinter interface (
main.py) - Data Layer: API handlers and data processing
- Business Logic: Portfolio calculations and analysis
- Visualization: Chart generation and formatting
- Observer Pattern: For price alerts and notifications
- Factory Pattern: For chart creation
- Strategy Pattern: For different alert conditions
- Portfolio data stored locally in JSON format
- No sensitive financial data transmitted
- Optional email credentials (use app passwords)
- Uses HTTPS for all API calls
- Implements rate limiting
- Handles API errors gracefully
- Regular backups of portfolio data
- Use app-specific passwords for email
- Keep software updated
- Check existing issues first
- Provide detailed error messages
- Include system information
- Steps to reproduce the problem
- Describe the desired functionality
- Explain the use case
- Consider implementation complexity
- Check if similar features exist
- Follow Python PEP 8 style guide
- Add appropriate error handling
- Include docstrings for functions
- Test thoroughly before submitting
- Web-based dashboard
- Mobile app companion
- Advanced portfolio optimization
- Social sentiment analysis
- DeFi protocol integration
- NFT tracking
- Tax reporting enhancements
- Paper trading simulator
- Binance API for real trading
- TradingView charts
- Discord/Telegram bots
- Database backend (PostgreSQL/SQLite)
- Cloud synchronization
This project is open source and available under the MIT License.
Important: This software is for informational and educational purposes only. It is not financial advice. Cryptocurrency investments are highly volatile and risky. Always do your own research and consult with qualified financial advisors before making investment decisions.
The developers are not responsible for any financial losses incurred through the use of this software.
- Check this README for common questions
- Review code comments for technical details
- Example configurations in the code
- Create issues for bugs or questions
- Discussions for feature requests
- Wiki for extended documentation
- Check releases for new versions
- Review changelog for new features
- Backup data before updating