我写过两篇与加密货币恐慌指数有关的文章,一篇是对这个指数的官方翻译链接,另一篇是用好币圈这五大指数,助你抄底与逃顶。
这个指数从0~100,数字越小代表越恐慌,越大代表越贪婪。0代表极度恐慌,100代表极度贪婪。
我把恐慌指数(下图灰色)与比特币价格(下图绿色)对比,这个数据和比特币的价格趋势比较接近,可以作为底部和顶部的参考。
![](https://img.haomeiwen.com/i3391357/e36a3d138ab55c70.png)
那我们有没有办法可以用程序自动监控这个值,到了设定范围,比如低于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)
网友评论