【问题标题】:python trading bot( paper trading)python 交易机器人(纸面交易)
【发布时间】:2021-08-11 10:42:06
【问题描述】:

所以我正在用 python 编写一个交易机器人。这更多是为了好玩,我才刚刚开始。每种方法都单独工作,所以我在这里排除它们,以免给你 300 行代码。我也排除了孔分析方法,因为即使我清除了该方法的其余部分,也会出现相同的错误。当我只使用一次分析时,它什么也不做,但也没有错误,当我在循环中使用它时,我得到一个错误: 发生异常:KeyError “结果”(标记 get_crypto_data)

这对我来说没有意义,因为如果我打印 get_crypto_data 它就可以了。

def get_crypto_data(pair,since):
    return api.query_public("OHLC", data = {"pair" : pair, "since" : since})["result"][pair] #array of prices (60sek)

def analyze(pair,since):
    data = get_crypto_data(pair[0]+pair[1], since)

if __name__ == "__main__":
    api = krakenex.API()
    api.load_key("KrakenKey.txt")
    pair = ('XETH' , 'ZEUR')   # Currency pair 
    since = str(int(time.time() - 3600))  
     
    while True:
         analyze(pair,since)

从 API 接收的数据结构如下(示例)(没有缩进):

{
"error": [ ],
"result": {
"XXBTZUSD": [
[
1616662740,
"52591.9",
"52599.9",
"52591.8",
"52599.9",
"52599.1",
"0.11091626",
5
],
[
1616662800,
"52600.0",
"52674.9",
"52599.9",
"52665.2",
"52643.3",
"2.49035996",
30
],
[
1616662860,
"52677.7",
"52686.4",
"52602.1",
"52609.5",
"52634.5",
"1.25810675",
20
],
[
1616662920,
"52603.9",
"52627.5",
"52601.2",
"52616.4",
"52614.0",
"3.42391799",
23
],
[
1616662980,
"52601.2",
"52601.2",
"52599.9",
"52599.9",
"52599.9",
"0.43748934",
7
]
],
"last": 1616662920
}
}

【问题讨论】:

    标签: python arrays loops


    【解决方案1】:

    上下文

    当您尝试在不存在的对象中搜索项目时,会引发 Python 中的 KeyError。例如,如果您创建一个request

    response = requests.get(url).json()
    response['nonexistent']
    # KeyError raised as nonexistent doesn't exist in the object
    

    考虑到这一点,KeyError 当您进行 API 调用以接收此对象时:

    api.query_public("OHLC", data = {"pair" : pair, "since" : since})
    

    我们可以推断,无论出于何种原因,["result"] 都不是上述对象中的键。要调试问题,请按照以下步骤操作。

    调试

    1. 进行 API 调用并将响应保存到变量中。然后打印变量及其类型,以了解如何与之交互。
    response = api.query_public("OHLC", data = {"pair" : pair, "since" : since})
    print(response, type(response))
    
    1. 如果它采用String 格式(或其他标准可转换格式),您可以使用内置的json 库将其转换为您可以调用的字典对象,就像您在示例中所做的那样。
    import json
    
    response = api.query_public("OHLC", data = {"pair" : pair, "since" : since})
    response = json.loads(response)
    
    1. 否则,鉴于您显示的输出结构,最好将响应转换为字符串,然后执行第 2 步。
    import json
    
    # Get the response
    response = api.query_public("OHLC", data = {"pair" : pair, "since" : since})
    
    # Convert to string
    response = str(response)
    
    # Convert to dictionary using JSON
    response = json.loads(response)
    
    # Call the data you want
    data = response["result"]["XXBTZUSD"]
    

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 2022-09-28
      • 2021-06-12
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多