如何用Python自动获取加密货币恐慌指数并提醒

我写过两篇与加密货币恐慌指数有关的文章,一篇是对这个指数的官方翻译链接,另一篇是用好币圈这五大指数,助你抄底与逃顶

这个指数从0~100,数字越小代表越恐慌,越大代表越贪婪。0代表极度恐慌,100代表极度贪婪。

我把恐慌指数(下图灰色)与比特币价格(下图绿色)对比,这个数据和比特币的价格趋势比较接近,可以作为底部和顶部的参考。

那我们有没有办法可以用程序自动监控这个值,到了设定范围,比如低于10时提醒自己抄底,高于80提醒我们卖出呢?

我们去官方网站:https://alternative.me/crypto/fear-and-greed-index/  找找有没有解决办法。

发现在官方网站最下方有API说明,并且有示例,就是我们想要的。

API链接为https://api.alternative.me/fng/

获取方法为GET

几个可选参数为

limit,整数,返回结果数量,默认为1,如果设为0则返回全部数据

format, 字符串,返回格式,默认json,也可选择csv

date_format,字符串,日期格式,比如YYYY/MM/DD中国格式年月日就用cn,MM/DD/YYYY美国就用us

就这几个,非常方便,比如使用https://api.alternative.me/fng/?limit=0&format=json&date_format=cn就会返回下列数据:

{

    "name": "Fear and Greed Index",

    "data": [

        {

            "value": "20",

            "value_classification": "Extreme Fear",

            "timestamp": "2020-04-07",

            "time_until_update": "-1586186356"

        },

...

}

非常贴心,方便,只需使用requests.get(url)就行。

 下面设定我们想要的值,利用钉钉提醒就行了。

完整代码如下

import json

import requests

# 异常监控用

def send_dingding_msg1(content, robot_id='钉钉机器人ID'):

    try:

        msg = {

            "msgtype": "text",

            "text": {"content": content + '\n' + datetime.datetime.now().strftime("%m-%d %H:%M:%S")}

        }

        headers = {"Content-Type": "application/json ;charset=utf-8 "}

        url = 'https://oapi.dingtalk.com/robot/send?access_token=' + robot_id

        body = json.dumps(msg)

        status = requests.post(url, data=body, headers=headers)

        if status.status_code == 200:

            return status.json()

        return status

    except Exception as err:

        print('钉钉发送失败', err)


while True:

try:

        url ="https://api.alternative.me/fng/?limit=0&format=json&date_format=cn"

        response = requests.get(url)

        if response.text:

            FGI =float(response.json()['data'][0]['value'])# 处理返回数据

            print('FGI', FGI)

value_classification = response.json()['data'][0]['value_classification']# 处理返回数据

            print('value_classification:', value_classification)

timestamp = response.json()['data'][0]['timestamp']# 处理返回数据

            print('timestamp', timestamp)

        else:

            continue

        if FGI <=20:# 当小于20时实现钉钉提醒

            print('FGI', FGI)

content ='恐慌指数小于指定值,为'+str(FGI)#

            send_msg1 = send_dingding_msg1(content)

print(send_msg1)

break

        if FGI >80:# 当大于80时实现钉钉提醒

            print('FGI', FGI)

        content ='恐慌指数大于指定值,为'+str(FGI)#

            send_msg1 = send_dingding_msg1(content)

            print(send_msg1)

except Exception as order_err:

    print("查询出错,继续尝试", order_err)

    time.sleep(3)

推荐阅读更多精彩内容