1

我正在尝试每隔 15 分钟检查一次所有加密货币的价格变化。到目前为止,我已经能够获取所有使用 USDT 对交易的硬币,得到它们的价格变化百分比,然后降序排序。现在计划是等待 15 分钟,再次获取数据,并与旧数据进行比较。这将继续每 15 分钟发生一次。(例如,假设我获取了 5.30 的数据,在 5.45 将再次获取数据 - 将进行比较并选择最不稳定的硬币。在 6.00,将再次获取数据,现在必须与5.45等数据。)

这是我到目前为止所拥有的(这是基于 Python 的 CCXT 库)此代码适用于一次性获取,我所需要的只是一些有关如何进行比较和存储/更新新值的指导。我应该创建新文件pricechange2和继续与之比较还是应该继续在数据框中添加和删除列?

markets=exchange.fetchTickers()
with open('pricechange1.txt', 'w') as json_file:
    json.dump(markets, json_file)
with open('pricechange1.txt') as json_file:
    data = json.load(json_file)

symbol_list = [value['symbol'] for value in data.values()]

r = re.compile(".*/USDT")
filtered_list = list(filter(r.match, symbol_list))
fl = list([x for x in filtered_list if "DOWN" not in x and "UP" not in x and "BULL" not in x and "BEAR" not in x])
pp1 = []
for i in fl:
    pp = data[i]['info']['priceChangePercent']
    pp1.append(float(pp))
df = pd.DataFrame({'coinpair': fl})
df['change1'] = pp1
df = df.sort_values(by='change1', ascending=False)
print(df['coinpair'].head(10).iloc[0])
print(df.head(10))

上述代码的当前输出

      coinpair  change1
90    FTT/USDT   29.677
48    FTM/USDT   24.615
246  TORN/USDT   24.508
259  MINA/USDT   23.265
156  YFII/USDT   20.739
37   CELR/USDT   18.435
179   INJ/USDT   17.601
207  FIRO/USDT   15.848
206   TWT/USDT   15.715
126  VTHO/USDT   15.634
4

1 回答 1

1

我建议将这些东西放入单独的函数中,并使用schedule库定期运行它们(在你的情况下每 15 分钟运行一次)。首先,您需要使用以下命令安装它:

pip install schedule

然后将其导入您的脚本中:

import schedule
import time
...

现在,将所有内容放入一个单独的函数中:

markets = None
def fetch_data():
    global markets
    markets =  exchange.fetchTickers()
    return markets

def write_to_file(data):
    with open('pricechange1.txt', 'w') as json_file:
        json.dump(data, json_file)

previous_pp = None
def form_df(data, previous_pp):
    global previous_pp
    symbol_list = [value['symbol'] for value in data.values()]

    r = re.compile(".*/USDT")
    filtered_list = list(filter(r.match, symbol_list))
    fl = list([x for x in filtered_list if "DOWN" not in x and "UP" not in x and "BULL" not in x and "BEAR" not in x])
    pp1 = []
    
    for i in fl:
        if previous_pp:
            current_pp = data[i]['info']['priceChangePercent']
            if previous_pp > current_pp:
                # do something
                # update previous_pp value
            else:
                # do something
                # update previous_pp value
        else:
            previous_pp = current_pp = data[i]['info']['priceChangePercent']
            pp1.append(float(current_pp))

    df = pd.DataFrame({'coinpair': fl})
    df['change1'] = pp1
    df = df.sort_values(by='change1', ascending=False)
    print(df['coinpair'].head(10).iloc[0])
    print(df.head(10))

并定期运行它们,如下所示:

schedule.every(15).minutes.do(fetch_data)
schedule.every(15).minutes.do(write_to_file, data=markets)
schedule.every(15).minutes.do(form_df, data=markets, previous_p=previous_pp)

while True:
    schedule.run_pending()
    time.sleep(1)
于 2021-09-01T19:38:17.717 回答