python获取实时基金数据_python实时获取指定基金数据发送钉钉

脚本的由来

写这个脚本主要原因是在平时的工作当中,需要处理工作问题很忙时,没时间看基金情况,通过设置涨幅度值,从而快速确认是否需要卖出或者买入基金

运行脚本所需环境

需要安装dingtalkchatbot、requests 使用pip安装即可

需要钉钉群组种创建机器人用于发送信息

在写个定时任务周一到周五14:30执行一次 30 14 * * 1,2,3,4,5 python3 /jijin/demo.py

脚本详情

#!/usr/bin/python3

#coding:utf8

"""

定时推送购买基金涨幅情况,来却认是否赎购基金

基金实时信息:http://fundgz.1234567.com.cn/js/001186.js?rt=1463558676006

新浪基金实时信息: http://hq.sinajs.cn/list=s_sh000905

钉钉告警地址:https://oapi.dingtalk.com/robot/send?access_token=acf237191e252cb24ca33d92dde7f5e45b37b82bb771b2aeb5d5d1ebf8addd222

Data:2020年3月20日10:00:56

编写人: 赵路

1、新增大盘指数告警

"""

import requests,json,time

from dingtalkchatbot.chatbot import DingtalkChatbot

#获取时间戳

def GetTime():

t = time.time()

Timestamp = round(t * 1000)

# print(Timestamp)

return Timestamp

#传入大盘指数新浪接口

def MarketIndex(SharesID):

MarketList = []

Headers = {'content-type':'application/json','User-Agent': 'Apache-HttpClient/4.5.2 (Java/1.8.0_102)'}

sinajs = "http://hq.sinajs.cn/list=s_" + str(SharesID)

Msg = requests.get(sinajs, headers=Headers)

SharesMsg = Msg.text

# print(SharesMsg)

if SharesID in SharesMsg:

GetSharesName = SharesMsg.split(",")[0].split("=")[1]

Gain = SharesMsg.split(",")[3]

GetMarketMsg = "大盘指数名称: " + GetSharesName + " 涨跌幅: " + str(Gain)

return GetMarketMsg

#传入基金代码和当天时间戳获取当前数据

def GetFundData(fundId,GetTimestamp):

Headers = {'content-type':'application/json','User-Agent': 'Apache-HttpClient/4.5.2 (Java/1.8.0_102)'}

TTurl = "http://fundgz.1234567.com.cn/js/" + str(fundId) + ".js?rt=" + str(GetTimestamp)

r = requests.get(TTurl, headers=Headers)

GetMsg = r.text

# print(GetMsg)

if "fundcode" in GetMsg:

FundID = GetMsg.split(",")[0].split(":")[1]

FundName = GetMsg.split(",")[1].split(":")[1]

Gain = GetMsg.split(",")[5].split(":")[1]

# print(GetMsg.split(",")[6].split("}")[0])

currentTime = GetMsg.split(",")[6].split("}")[0].split("\"gztime\":")[1]

# GetData = "基金名称:"+ FundName + "ID" + FundID + "涨跌幅:" + Gain + "当前时间:" + currentTime

# GetData = FundName + " " + FundID + " " + Gain

# GetData = "基金名称:"+ FundName + "涨跌幅:" + Gain + "当前时间:" + currentTime

GetData = "基金名称:"+ FundName + " "+ "涨跌幅:" + Gain + " "+ "当前时间:" + currentTime

return GetData

#判断涨幅度正负1.5个点的输出基金

def ExeIncreaseDegree(Fundmsg,Differencevalue,Increment):

if Fundmsg:

IncreaseDegree = float(Fundmsg.split(":")[2].split("当前时间")[0].replace("\"",''))

if IncreaseDegree > Increment or IncreaseDegree < Differencevalue:

# DifferencevalueincrementList.append(Fundmsg)

return Fundmsg

# print(DifferencevalueincrementList)

#钉钉告警通知

def SendMsg(Title,Msg):

# WebHook地址

webhook = "https://oapi.dingtalk.com/robot/send?access_token=acf237191e252cb24ca33d92dde71f5e45b37b8bb771b2aeb5d5d1ebf8addd222"

# 初始化机器人小丁

xiaoCCOD = DingtalkChatbot(webhook)

# Text消息@所有人,添加CCOD关键字否则无法告警

xiaoCCOD.send_text(msg="CCOD---> " + Title + "\n" + Msg, is_at_all=True)

if __name__ == '__main__':

#持有基金ID

#fundIdList = ["001631","501021"]

fundIdList = ["001549","001594"]

TitleList = ["每日基金涨跌详情","当日基金涨跌正负1.5详情","大盘指数详情"]

#大盘指数列表

SharesIDList = ["sh000001","sh000300","sh000905"]

GetSharesMsg = []

GetTimestamp = GetTime()

MsgList = []

DifferencevalueincrementList = []

Differencevalue = -1.5

Increment = 1.5

#循环大盘ID发送告警

for SharesID in SharesIDList:

GetMarketIndexMsg = MarketIndex(SharesID)

GetSharesMsg.append(GetMarketIndexMsg)

SendSharesMsg = str(GetSharesMsg).split("[")[1].split("]")[0].replace("None, ", "").replace(",", "\n")

SendMsg(TitleList[2], SendSharesMsg)

#循环基金ID获取基金当前涨幅度

for fundId in fundIdList:

GetData = GetFundData(fundId,GetTimestamp)

Fundmsg = GetData

DifferencevalueincrementList.append(ExeIncreaseDegree(Fundmsg,Differencevalue,Increment))

MsgList.append(GetData)

#正负情况大于1.5发送信息

GetNewData = str(DifferencevalueincrementList).split("[")[1].split("]")[0].replace("None, ","").replace(",","\n")

if None is not GetNewData:

SendMsg(TitleList[1], GetNewData)

#去重大于1.5的基金信息之后在发送信息

DifferenceSet = [item for item in MsgList if item not in DifferencevalueincrementList]

GetDifferencevalueincrement = str(DifferenceSet).split("[")[1].split("]")[0].replace("None, ","").replace('\"','').replace(", ","\n")

SendMsg(TitleList[0], GetDifferencevalueincrement)

执行结果

运行结果

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值