0

为了使我的代码更高效,我试图将我对未结订单的 api 请求限制为一对。我不知道如何正确使用输入参数。我正在使用 python3 和 krakenex 包(如果有更好的包,我可以替换它)

client = krakenex.API(<<key>>, <<secret>>)
data = {'pair': 'ADAEUR'}
open_ord = client.query_private(method='OpenOrders',data = data) ['result']             
open_ord_ = list(open_ord.values())[0]

---> 不幸的是,这会返回我所有货币对的未结订单,而不仅仅是“ADAEUR”。我想需要调整我无法弄清楚的数据参数......如果有人可以帮助我,那就太棒了。提前谢谢了

4

1 回答 1

0

根据 Kraken API 文档, getOpenOrders端点没有data参数,所以这解释了为什么你的结果没有被过滤。

两种方法:

  1. 使用pykrakenapi 包将所有输出整齐地包装在 Pandas DataFrame 中:
import krakenex
from pykrakenapi import KrakenAPI

api = krakenex.API(<<key>>, <<secret>>)
connection = KrakenAPI(api)

pairs = ['ADAEUR', 'XTZEUR']
open_orders = connection.get_open_orders()
open_orders = open_orders[open_orders['descr_pair'].isin(pairs)]
print(open_orders)
  1. 仅使用krakenex并从 JSON 输出中过滤:
import krakenex

api = krakenex.API(<<key>>, <<secret>>)

pairs = ['ADAEUR', 'XTZEUR']
open_orders = api.query_private(method='OpenOrders')['result']['open']
open_orders = [(o, open_orders[o]) for o in open_orders if open_orders[o]['descr']['pair'] in pairs]
print(open_orders)

这两种方法都是这样编写的,因此它们可以过滤一对或多对。方法 1 返回一个 Pandas DataFrame,第二个方法返回一个列表,其中每个打开的订单都有一个(订单 ID(str),订单信息(dict))的元组。

于 2021-10-13T15:39:57.133 回答