钉钉机器人自动推送股票信息
项目时间和要求
马上五一了,估计很多小伙伴会休假!我们时间稍晚长一点 ,4/29-5/11.给大家两周的时间完成。
这虽然是一个小系统,但是玩好了,可以做各种好玩的东西。
为了照顾新手同学,我把这个项目进行分解:
-------新手----------
Step0:
安装钉钉的环境,并且获取Token
Step1:
用钉钉的api接口给自己的手机上发一条消息 这里用到的代码改10行左右,新手应该能完成
-------老手----------
Step2:
利用Tushare接口,获取某一只股票的数据,比如招商银行的当日的实时的股票数据。
然后你设定一个止盈价格 和止损价格,
若高于则给钉钉发出卖出信号。如低于则发出买入信号!
这个信号可以是推送的一段消息,比如:
股票 xxx ,现价大于xxx,可以卖出
股票 xxx ,现价低于xxx,可以买入
Step3:
把上面的止盈和止损 和股票的编码,写入一个配置文件中,比如config.ini ,
然后把上面的代码进行类的封装
class Stock
class Dingding
class Warning
然后在Warning中读取config,ini文件,这样整个提醒系统在跑的时候,我们只需要改变config.ini就可以动态的修改我们的提醒系统。
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
只完成了前两个要求
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hiuhung Wan
from time import sleep
from dingtalkchatbot.chatbot import DingtalkChatbot
import tushare as ts
ts_code = "600036" # 招商银行
webhook_prefix = "https://oapi.dingtalk.com/robot/send?access_token="
access_token = "这里输入自己钉钉机器人的access_token"
webhook = webhook_prefix + access_token
def send_msg(msg):
ding_robot = DingtalkChatbot(webhook)
ding_robot.send_text(msg, is_at_all=0)
def get_real_price(code):
df = ts.get_realtime_quotes(code)
name = df.name[0]
price = df.price[0]
price = round(float(price), 2)
return name, price
def price_comparison(profit_ceiling_price, stop_price, realtime_price, name):
"""
若高于则给钉钉发出卖出信号。如低于则发出买入信号!
:param profit_ceiling_price: 止盈价格
:param stop_price: 止损价格
:param realtime_price: 实时价格
:param name: 股票名称
:return: None
"""
if realtime_price > profit_ceiling_price:
msg = "股票:%s ,现价:%s,看好就收,快抛!!" % (name, realtime_price)
# print(msg)
send_msg(msg)
elif realtime_price < stop_price:
msg = "股票:%s ,现价:%s,买买买!" % (name, realtime_price)
send_msg(msg)
# print(msg)
def run2():
msg = "因股市下班,价格不更新,为了达到价格有变,预先设置了几个价格"
print(msg)
# send_msg(msg)
profit_ceiling_price = 34.0 # 止盈价格
stop_price = 32.0 # 止损价格
for i in [
32.32,
31.55,
32.66,
33.68,
34.12,
34.99,
35.36,
34.20,
33.50,
31.57,
30.86]:
name, price = get_real_price(ts_code)
price = i
price_comparison(profit_ceiling_price, stop_price, price, name)
# msg = "股票:%s ,现价:%s" % (name, price)
# send_msg(msg)
# print(msg)
for j in range(10):
sleep(1)
def run():
profit_ceiling_price = 33.0 # 止盈价格
stop_price = 32.0 # 止损价格
while True:
name, price = get_real_price(ts_code)
# msg = "股票:%s ,现价:%s" % (name, price)
# send_msg(msg)
# print(msg)
price_comparison(profit_ceiling_price, stop_price, price, name)
for j in range(10):
sleep(1)
if __name__ == '__main__':
run() # 正常就用这个
# run2() # 股市下班就用这个
浙公网安备 33010602011771号