如何自己写一个股票监控机器人

炒股的时候经常需要盯盘,为了方便监控股票价格,这里将基于飞书的实现一个简单的股票监控机器人。

实现思路

通过定时获取实时价格,将实时价格与预警价格比较,到达预警要求就推送特定的消息到飞书。

开发步骤

1. 新建一个群机器人

随便新建一个飞书群,在设置中点击群机器人 菜单。

640-403

点击“添加”,在弹出对话框中选择新建一个自定义机器人。

640-405

填写任意的名称和描述,然后会得到一个webhook地址,保存好这个地址。

640-404

通过往这个webhook地址发送消息接口推送内容,主要代码如下:

def send_to_feishu(content):
    url = "https://open.feishu.cn/open-apis/bot/v2/hook/3c6d60b8-xxx" # 这里是实际的webhook地址
    msg = {"msg_type": "text", "content": {"text": content}} # 这里发送文本内容即可
    res = requests.post(url, json=msg)
    print(res.json())  # 打印结果,方便调试

2. 开发股票监控

将需要监控放到一个列表中,每个监控的股票包括其代码、监控最小值和最大值信息,然后循环列表根据股票代码从新浪股票接口获取实时价格,若股票实时价格小于最低价或高于最高价就发送飞书通知。主要代码如下:

# 获取股票实时价格
def get_price(code):  
    url = f"http://ifzq.gtimg.cn/appstock/app/kline/mkline?param={code},m1,,10"
    print(url)
    stock_name = ""
    resp = requests.get(url).json()
    if resp["code"] != 0:
        return stock_name, []
    stock_name = resp["data"][code]["qt"][code][1]
    latest_prices = resp["data"][code]["m1"][-1]
    return stock_name, latest_prices


# 循环监控
def monitor():
    stocks = [
        {
        "code": "sh688068",
        "min": 230,
        "max": 239
    },
    {
        "code": "sh000001",
        "min": 3530,
        "max": 3550
    }]
    for c in stocks:
        print(f"check => {c["code"]}")
        # 获取股票最新价格, 返回列表依次为"day", "open", "high", "low", "close", "volume"
        stock_name, prices = get_price(c["code"])

        print(prices)
        if not prices:
            continue

        if float(prices[3]) < c["min"]:
            content = f"{stock_name}({c["code"]})当前价格:{prices[3]}<最低价({c["min"]})"
            send_to_feishu(content)
        if float(prices[2]) > c["max"]:
            content = f"{stock_name}({c["code"]})当前价格:{prices[2]}>监控价({c["max"]})"
            send_to_feishu(content)

3. 实现定时任务

这里基于Python的第三方库schedule进行开发,每隔5分钟执行一次,主要代码如下:

schedule.every(5).minutes.do(monitor)
while True:
    schedule.run_pending()
    time.sleep(1)

效果如下:

640-406

最后,记得点赞哈~