使用FOR循环遍历Poloniex上的加密货币列表,并在每个加密令牌的单独变量中保存数据

2024-06-10 22:53:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与一个名为Poloniex.com网站在这里我使用了它们的公共api-https://poloniex.com/support/api/,尤其是使用Python包装器的returnChartData函数。在

我有一个列表,这个列表包括所有的altcoins(替代硬币)在Poloniex上列出 像这样的东西- 奥特币= ['BTC_ETH'、'BTC\u ZEC'、'BTC_XMR'、'BTC\u LTC'、'BTC_BTS'、'BTC_GNT'、'BTC_XRP'、'BTC_FCT'、'BTC\u DCR'、'BTC_破折号',…](它应该有80-100个以上的Altcoins)

调用returnChartData函数时,返回特定货币对的交易和定价数据,时间间隔从5分钟到一周不等。基本上是历史数据api。 我想使用4小时烛光数据(周期=14400),我希望每4小时调用一次所有的alt硬币。在

这就是我想做的- 1使用poloniex公共api,每4小时调用所有altcoins(大约100个)的历史数据 2想创建一个与altcoin同名的变量,所以大约有80-90个变量 和 三。将特定altcoin的数据存储到其各自的变量中 4使用Pandas数据框对所有变量进行交易和分析 5每4小时重复一次。(当然,我不需要一次又一次地创建变量)

那么,有没有什么方法可以让我每4小时运行一个或两个循环来解决这个问题呢?还是应该单独运行80-100个计算?在

从这里获取api-https://github.com/s4w3d0ff/python-poloniex 下面是一次运行1个计算的示例代码

    from poloniex import Poloniex, Coach
    import pandas as pd
    myCoach = Coach()
    public = Poloniex(coach=myCoach)

    """Below is the code for a single Altcoin. But I wish to perform the below process on the whole gamut"""

    eth=public.returnChartData('BTC_ETH',period=14400) """Saving the data to a variable"""
    eth=pd.DataFrame(eth)

上面的代码给出了我想要的,但是请理解我如何为100个altcoins编写相同的代码,并每4小时运行一次。如果我想每5分钟运行一次呢。这会很麻烦。在

这就是我试图解决的问题-

^{pr2}$

我尝试的上面的东西给了我列表中最后一个altcoin的数据,即BTC_破折号。我认为它会覆盖数据直到最后

你们能帮忙吗


Tags: the数据代码httpscomapi列表poloniex
1条回答
网友
1楼 · 发布于 2024-06-10 22:53:01

从poloniexapi获取ChartData时,尽量只存储您需要的内容,并注意使用startend参数


https://poloniex.com/support/api/可以看到:

- returnChartData

Returns candlestick chart data. Required GET parameters are "currencyPair", "period" (candlestick period in seconds; valid values are 300, 900, 1800, 7200, 14400, and 86400), "start", and "end". "Start" and "end" are given in UNIX timestamp format and used to specify the date range for the data returned. [...]

Call: https://poloniex.com/public?command=returnChartData&currencyPair=BTC_XMR&start=1405699200&end=9999999999&period=14400


最好的方法是设置并使用一个外部数据库(mongoDB、tinyDB等)来存储chartdata,然后更新它们。在

假设您的数据库一直与真实的数据市场同步,那么您可以对您的本地数据库做任何您想做的事情,而不必承担任何风险来过载或达到Poloniex端的请求/分钟限制。在

假设DB起作用:

  • 您可以首先存储从每个支持对开始到结束的所有数据,对于每个窗口,它将需要很长时间来处理。。。在

    对于一枚拥有3年以上交易活动的硬币来说,500万图表数据可能很长时间才能重新输入到您的数据库中(取决于数据库、CPU……)

  • 定期(需要时)使用cronjob:

    -对于5M窗口,每5分钟一次

    -对于15米的窗户,每15分钟一次

    -。。。

    -对于xM窗口,每x分钟

    您需要使用一个开始参数设置为根据数据库中的这一对和窗口的上一个记录的烛光时间,以及与now time对应的结束参数(如果您不在同一时区,则更新Poloniex服务器now time)在

    考虑到每次更新只会为每个请求提供1到2个烛光数据,全局和完整的请求处理将很短!

  • 最后,您可以尝试使用多线程和多处理来加快全局更新过程,但要注意不要超载(我的建议是不要超过4个concurrents线程)Poloniex基础设施。

相关问题 更多 >