一个监控纳指额度的脚本

一个监控纳指额度的脚本


import akshare as ak
import yagmail
from datetime import datetime
import pandas as pd

# 邮箱配置
QQ_EMAIL = "xx@qq.com"  # 发件人邮箱
QQ_PASSWORD ="xx"  # 发件人邮箱密码或授权码
TO_EMAIL = "xx@qq.com"  # 收件人邮箱


# 获取基金申购状态数据
def get_fund_purchase_data():
    fund_purchase_em_df = ak.fund_purchase_em()
    return fund_purchase_em_df

# 筛选纳指和标普相关的基金,并排除申购状态为“暂停申购”的基金
def filter_related_funds(fund_data):
    keywords = ["纳斯达克", "纳指", "标普500"]
    # 筛选包含关键词的基金,并排除申购状态为“暂停申购”的基金
    related_funds = fund_data[
        (fund_data['基金简称'].str.contains('|'.join(keywords), na=False)) &
        (fund_data['申购状态'] != '暂停申购')
    ]
    return related_funds

# 检查限购额度并生成报告
def check_fund_limits(fund_data):
    report = []
    for index, row in fund_data.iterrows():
        fund_code = row['基金代码']
        fund_name = row['基金简称']
        limit_amount = row['日累计限定金额']
        report.append((fund_code, fund_name, limit_amount))
    # 按限购额度从大到小排序
    report.sort(key=lambda x: float(str(x[2]).replace("万", "")) if x[2] and pd.notna(x[2]) else 0, reverse=True)
    return report

# 发送邮件
def send_email(report, today):
    try:
        # 邮件主题
        subject = f"纳指和标普相关基金限购额度监控报告 ({today})"

        # 邮件正文内容
        text_content = f"""
        日期: {today}
        以下是纳指和标普相关基金的限购额度监控结果(按限购额度从大到小排序):
        """
        for fund_code, fund_name, limit_amount in report:
            text_content += f"{fund_code} ({fund_name}) - 限购额度: {limit_amount}元\n"

        # 初始化 yagmail
        yag = yagmail.SMTP(user=QQ_EMAIL, password=QQ_PASSWORD, host='smtp.qq.com', port=465, smtp_ssl=True)

        # 发送邮件
        yag.send(to=TO_EMAIL, subject=subject, contents=[text_content])

        print("邮件发送成功")
    except Exception as e:
        print(f"邮件发送失败: {e}")

# 主函数
def main():
    # 获取当前日期
    today = datetime.now().strftime("%Y-%m-%d")

    # 获取基金申购状态数据
    fund_data = get_fund_purchase_data()

    # 筛选纳指和标普相关的基金,并排除申购状态为“暂停申购”的基金
    related_funds = filter_related_funds(fund_data)

    # 检查限购额度并生成报告
    report = check_fund_limits(related_funds)

    # 发送邮件
    if report:
        send_email(report, today)
    else:
        print("没有找到符合条件的基金数据")

# 运行主函数
if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭梨山大哎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值