0

这个问题与一个名为 Poloniex.com 的交易交易所有关,我在其中使用他们的公共 api - https ://poloniex.com/support/api/特别是使用 Python Wrapper的returnChartData功能。

我有一个清单,这个清单包括 Poloniex 上列出的所有山寨币(替代币) 类似这样的东西 - Altcoins= ['BTC_ETH','BTC_ZEC','BTC_XMR','BTC_LTC','BTC_ETC','BTC_BTS' ,'BTC_GNT','BTC_XRP','BTC_FCT','BTC_SC','BTC_DCR','BTC_DASH',.....] (应该有超过 80-100 个山寨币)

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

这就是我想要做的 - 1. 使用 poloniex 公共 api 并每 4 小时调用一次所有山寨币(大约 100 个)的历史数据 2. 想要创建与山寨币名称相同的变量,因此大约 80-90 个变量和3. 将特定山寨币的数据存储到其各自的变量中 4. 在所有这些变量上使用 Pandas DataFrame 并执行交易和分析 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 个山寨币编写相同的上述代码并每 4 小时运行一次。如果我想每 5 分钟运行一次怎么办。会很麻烦。

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

    from poloniex import Poloniex, Coach
    import pandas as pd
    myCoach = Coach()
    public = Poloniex(coach=myCoach)
    coinlist=['BTC_ETH','BTC_ZEC','BTC_XMR','BTC_LTC','BTC_ETC','BTC_BTS','BTC_GNT','BTC_XRP','BTC_FCT','BTC_SC','BTC_DCR','BTC_DASH']
    for i in coinlist:
        altcoins=public.returnChartData(i,period=14400)

我尝试的上述内容为我提供了列表中最后一个山寨币的数据,即 BTC_DASH。我认为它会覆盖数据直到它结束

你们能帮忙吗?

4

2 回答 2

0
So is there any way that I use and run one or two loops every 4 hours to solve this issue 

只是一个快速的想法。是的,有一种方法可以每 4 小时运行两个循环。您开始的时间戳时刻,如果当前时间 >= 时间戳 + 4h,则运行循环并重置时间戳。

or should I run individual 80-100 calculations individually?

获得更多硬件并考虑多处理/多线程以并行化操作。

于 2017-08-02T21:44:45.933 回答
0

从 Poloniex API 获取 ChartData 时,尝试仅存储您需要的内容并注意使用开始结束参数


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

- 返回图表数据

返回烛台图表数据。必需的 GET 参数为“currencyPair”、“period”(烛台周期,以秒为单位;有效值为 300、900、1800、7200、14400 和 86400)、“ start ”和“ end ”。“开始”和“结束”以 UNIX 时间戳格式给出,用于指定返回数据的日期范围。[...]

调用:https ://poloniex.com/public?command=returnChartData¤cyPair=BTC_XMR& start =1405699200& end =9999999999&period=14400


最好的方法是设置和使用外部数据库(mongoDB、tinyDB 等),存储图表数据然后更新它们。

假设您的数据库不断与真实数据市场同步,您可以对本地数据库做您想做的事,而不会冒任何超载或达到 Poloniex 端的请求/分钟限制的风险。

假设 DB 功能正常:

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

    交易活动超过 3 年的硬币的 500 万图表数据可能需要很长时间才能重新注入您的数据库(取决于数据库、CPU ...)

  • 定期 - 在需要时 - 并使用 cronjob :

    - 5M 窗口每 5 分钟一次

    - 15M 窗口每 15 分钟一次

    - ...

    - xM 窗口每 x 分钟

    您需要根据数据库中的该对和窗口以及与现在时间相对应的结束参数Poloniex服务器现在时间,如果您不在同一时区)

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

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

于 2017-11-26T17:28:37.453 回答