Skip to content
Explain to Dev
Explain to Dev

Empowering developers with the knowledge to build, create, and innovate in the software world.

  • Home
  • About
  • Java
  • Python
  • PHP
  • .NET
  • Node.js
  • SQL
  • Privacy Policy
Explain to Dev

Empowering developers with the knowledge to build, create, and innovate in the software world.

How to Design a System for Tracking Stock Prices and Sending Alerts When Thresholds Are Crossed in Python

etd_admin, December 13, 2024December 13, 2024

Designing a system for tracking stock prices and sending alerts when thresholds are crossed in Python is a practical and scalable solution for personal finance management or creating a stock market tool. This article outlines the process step-by-step, including code samples to make implementation straightforward.

The system requires the following components:

  1. Data Retrieval: Fetch live stock price data from a financial API.
  2. Threshold Logic: Define thresholds for each stock price (upper and lower limits).
  3. Alert Mechanism: Notify users when the price crosses predefined thresholds.

We will use popular Python libraries like requests for API calls and smtplib for email alerts. The system will also utilize a scheduler like schedule to run at regular intervals.

Fetch Live Stock Data

To track stock prices, we first need real-time data. Financial APIs like Alpha Vantage or Yahoo Finance provide stock prices.

Here’s an example of fetching data using Alpha Vantage:

import requests

def get_stock_price(symbol, api_key):
    url = f"https://www.alphavantage.co/query"
    params = {
        "function": "TIME_SERIES_INTRADAY",
        "symbol": symbol,
        "interval": "1min",
        "apikey": api_key
    }
    response = requests.get(url, params=params)
    data = response.json()

    # Extract the latest stock price
    if "Time Series (1min)" in data:
        latest_time = list(data["Time Series (1min)"].keys())[0]
        price = float(data["Time Series (1min)"][latest_time]["1. open"])
        return price
    else:
        raise Exception("Error fetching stock data: " + str(data))

# Example usage
api_key = "your_api_key_here"
symbol = "AAPL"
print(get_stock_price(symbol, api_key))

This function retrieves the latest stock price for the given stock symbol.

Define Threshold Logic

Define thresholds to trigger alerts when stock prices go above or below specific values. For simplicity, use a dictionary to store these values.

thresholds = {
    "AAPL": {"upper": 180, "lower": 150},
    "GOOGL": {"upper": 3000, "lower": 2500}
}

def check_thresholds(symbol, price):
    if price > thresholds[symbol]["upper"]:
        return "above upper threshold"
    elif price < thresholds[symbol]["lower"]:
        return "below lower threshold"
    else:
        return "within range"

This logic checks if the stock price is within, above, or below the defined range.

Send Alerts

Alerts can be sent via email or SMS. Here’s how to send email alerts using Python’s smtplib.

import smtplib
from email.mime.text import MIMEText

def send_email_alert(symbol, price, status, recipient_email):
    sender_email = "your_email@example.com"
    sender_password = "your_email_password"
    
    subject = f"Stock Alert: {symbol} Price {status}"
    body = f"The stock price of {symbol} is {price}, which is {status}."
    
    message = MIMEText(body)
    message["Subject"] = subject
    message["From"] = sender_email
    message["To"] = recipient_email

    # Connect to the SMTP server and send email
    with smtplib.SMTP("smtp.gmail.com", 587) as server:
        server.starttls()
        server.login(sender_email, sender_password)
        server.send_message(message)

# Example usage
send_email_alert("AAPL", 185, "above upper threshold", "recipient@example.com")

Automate Tracking

Use the schedule library to automate the process of fetching stock prices and checking thresholds.

import schedule
import time

def track_stock_prices():
    for symbol in thresholds.keys():
        try:
            price = get_stock_price(symbol, api_key)
            status = check_thresholds(symbol, price)
            if status != "within range":
                send_email_alert(symbol, price, status, "recipient@example.com")
        except Exception as e:
            print(f"Error tracking {symbol}: {e}")

# Schedule the function to run every minute
schedule.every(1).minutes.do(track_stock_prices)

while True:
    schedule.run_pending()
    time.sleep(1)

This system integrates data retrieval, threshold-based decision-making, and alert notifications to track stock prices and send alerts when thresholds are crossed in Python. With modular functions and periodic scheduling, the system is both scalable and easy to maintain.

Python AlertsData TrackingPython

Post navigation

Previous post
Next post
©2025 Explain to Dev | WordPress Theme by SuperbThemes