股票数据获取和邮件发送通知

import tushare as ts
import pandas as pd
import time
import os
import smtplib  #smtp协议包
from email.mime.text import MIMEText #用于构建邮箱内容

os.chdir('E:/all_trading_data/')  #保存的绝对路径
pro = ts.pro_api('')# 再tushare注册账号后生成的API复制过来放到里边

pd.set_option('expand_frame_repr', False)#True就是可以换行显示。设置成False的时候不允许换行
pd.set_option('display.max_columns', None)# 显示所有列
#pd.set_option('display.max_rows', None)# 显示所有行
pd.set_option('colheader_justify', 'centre')# 显示居中

#df_daily = pro.daily()  获取所有股票日行情信息
#df_basic = pro.stock_basic()  获取所有股票基本信息

def get_all_stockdata(start_date, end_date):
    msg = 0 
    trade_d = pro.trade_cal(exchange='SSE', is_open='1', start_date=start_date, end_date=end_date, fields='cal_date')

    for date in trade_d['cal_date'].values:
        # 获取所有股票的行情数据
        df_daily = pro.daily(trade_date=date)

        # 获取所有股票的基本信息
        df_basic = pro.stock_basic()

        #行情数据跟基本信息数据合并生成一个csv数据文件
        #on='ts_code'以ts_code为索引,合并数据,how='outer',取并集
        df_all = pd.merge(left=df_basic, right=df_daily, on='ts_code', how='outer')
        #删除symbol列数据,跟ts_code数据重复
        df_all = df_all.drop('symbol', axis=1)
        #强制转换成str字符串格式
        df_all['ts_code'] = df_all['ts_code'].astype(str)

        # 保存数据,不保存索引,如果index=True,则保存索引会多出一列
        df_all.to_csv(str(date) + '_ts.csv', index=False, encoding='gbk')
        print(df_all)
        print('%s is downloaded.' % (str(date)))

        msg = 1
    return df_all,msg


def send_email (content):
    # 邮件发送
    msg_from = "******@126.com" #发件人邮箱
    password = " " #客户端授权码
    msg_to = " " #收件人邮箱
    #构建邮箱内容
    subject = "股票行情数据下载"
    content = content
    msg = MIMEText(content) #msg邮件内容对象
    msg["Subject"] = subject
    msg["From"] = msg_from
    msg["To"] = msg_to
    #发送邮件
    # smtplib.SMTP_SSL("发件人的邮箱服务器地址",端口号)
    smtpObj = smtplib.SMTP_SSL("smtp.126.com",465) #smtpObj smtp对象
    smtpObj.login(msg_from,password)#登录
    smtpObj.sendmail(msg_from,msg_to,str(msg)) #发送邮件
    print("发送成功")
    smtpObj.quit()

def main():
    msg = get_all_stockdata('20220101', '20220104')
    print('-------------',msg)
    if msg == 1:
        content = "数据下载成功!"
    else:
        content = "数据下载失败!"
    send_email(content)


if __name__ == '__main__':
	main()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Python股票检测邮件通知的代码示例,仅供参考: ```python import tushare as ts import pandas as pd import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱配置信息 sender = 'your_email@example.com' password = 'your_password' smtp_server = 'smtp.example.com' smtp_port = 25 receiver = 'receiver@example.com' # 股票代码 stock_code = '600000' # 获取股票数据 df = ts.get_k_data(stock_code) # 计算均线和RSI指标 df['ma5'] = df['close'].rolling(window=5).mean() df['ma10'] = df['close'].rolling(window=10).mean() df['rsi'] = ta.RSI(df['close'].values) # 定义股票检测函数 def detect_stock(df): if df['close'] > df['ma5'] and df['close'] > df['ma10'] and df['rsi'] > 70: return True else: return False # 检测股票是否符合条件 if detect_stock(df): # 发送邮件通知 content = f"股票代码:{stock_code},当前价格:{df.iloc[-1]['close']}" message = MIMEText(content, 'plain', 'utf-8') message['From'] = Header(sender, 'utf-8') message['To'] = Header(receiver, 'utf-8') message['Subject'] = Header('股票检测通知', 'utf-8') try: smtpObj = smtplib.SMTP(smtp_server, smtp_port) smtpObj.login(sender, password) smtpObj.sendmail(sender, [receiver], message.as_string()) print("邮件发送成功") except smtplib.SMTPException: print("邮件发送失败") ``` 这段代码使用了tushare库获取股票数据,并使用pandas和ta-lib库计算了均线和RSI指标。在detect_stock函数中定义了符合条件的判断逻辑。当检测到符合条件的股票时,会发送一封邮件通知。需要注意的是,你需要替换代码中的邮箱配置信息和股票代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值