我如何获得新价格?

时间:2019-08-01 12:53:21

标签: python json python-requests

你好,我正在使用Python进行编程,我有一个脚本可以让Binance获得比特币的价格。这是我的代码:

import requests
import json

url = requests.get('https://api.binance.com/api/v1/ticker/price?symbol=BTCUSDT')
data = url.json()

print(data['price'])

但是我想有一个脚本,可以在价格改变时进行更新。你知道我该怎么做吗?

非常感谢您!

2 个答案:

答案 0 :(得分:1)

不幸的是,这似乎是一个问题,您无法听事件,而您不得不“询问”数据。

在这种情况下,您可以执行一些操作,例如每隔几分钟左右询问价格,并在价格发生变化时采取措施。

import requests
import json
import time

lastPrice = 0

def priceChanged():
    # Handle the price change here
    print("The price changed!")

# Forever
while True:
    url = requests.get('https://api.binance.com/api/v1/ticker/price?symbol=BTCUSDT')
    data = url.json()
    # Change the string price into a number
    newPrice = float(data['price'])

    # Is it different to last time?
    if (newPrice != lastPrice):
        lastPrice = newPrice
        priceChanged()

    # Wait 2 mintues
    time.sleep(120)

答案 1 :(得分:0)

现在有一种方法可以让币安服务器在价格变化时通知您。

您唯一的解决方案是实施可以监听任何更改的作业。

例如这样的

last_price = None
try:
    price_file = 'price.txt'
    f = open(price_file, "r")
    last_price = f.read()
except Exception as e:
    # failed to read last price
    pass

price_file = 'price.txt'

def get_last_price():
    last_price = None
    try:
        f = open(price_file, "r")
        last_price = f.read()
    except Exception as e:
        # failed to read last price
        pass
    return last_price


def update_price(new_price):
    f = open(price_file, "w")
    f.write(new_price)
    f.close()


def get_biance_price():
    url = requests.get('https://api.binance.com/api/v1/ticker/price?symbol=BTCUSDT')
    data = url.json()
    return data['price']


last_price = get_last_price()
new_price = get_biance_price()

if last_price != new_price:
    print('price changed!') # implement notification
    update_price(new_price)
else:
    print('price is the same')

现在调用此脚本会将最新价格保存在“ price.txt”中,并在新价格不同时通知您。现在,您可以将脚本插入到某些Linux cron作业中,并将其配置为以一定间隔调用脚本