import requests
import smtplib
from email.mime.text import MIMEText
from datetime import datetime
import schedule
import time
# Your ASX portfolio
PORTFOLIO = ['RIO', 'CSL', 'WDS', 'CBA', 'ANZ', 'BHP', 'NAB', 'WBC', 'WES', 'ASX']
def get_asx_data(symbol):
"""Fetch ASX stock data"""
try:
# Using ASX API or third-party service
url = f"https://api.marketindex.com.au/asx/{symbol}"
response = requests.get(url)
return response.json()
except Exception as e:
print(f"Error fetching data for {symbol}: {e}")
return None
def check_announcements(symbol):
"""Check for recent ASX announcements"""
try:
url = f"https://www.asx.com.au/asxpdf/{symbol}_announcements.json"
response = requests.get(url)
return response.json()
except Exception as e:
print(f"Error fetching announcements for {symbol}: {e}")
return None
def send_alert(subject, body):
"""Send email alert"""
# Configure your email settings
smtp_server = "smtp.gmail.com"
smtp_port = 587
email = "
[email protected]"
password = "your-app-password"
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = email
msg['To'] = email
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(email, password)
server.send_message(msg)
def daily_monitor():
"""Daily monitoring function"""
report = f"ASX Portfolio Report - {datetime.now().strftime('%Y-%m-%d')}\n\n"
for symbol in PORTFOLIO:
data = get_asx_data(symbol)
announcements = check_announcements(symbol)
if data:
report += f"{symbol}: ${data.get('price', 'N/A')} "
report += f"({data.get('change', 'N/A')}%)\n"
if announcements:
report += f" - Recent announcements: {len(announcements)}\n"
send_alert("Daily ASX Portfolio Report", report)
# Schedule daily monitoring
schedule.every().day.at("09:00").do(daily_monitor)
# Keep the script running
while True:
schedule.run_pending()
time.sleep(60)