Julia API 对 Alpaca 交易的调用收到 HTTP/1.1 401 未经授权

Julia API Call to Alpaca trading receives HTTP/1.1 401 Unauthorized

第一次在这里提问。希望我做对了!

我最近听说 Alpaca 用于算法交易,并认为这将是学习 Julia 并尝试让算法正常工作的好机会!超级兴奋,但 运行 在初始 API 呼叫工作时遇到了一些麻烦。

我挂断了最初的 API HTTP 授权请求。我的帐户已设置并获得批准。我已经能够让它与 Python 库一起工作:alpaca-trade-api,但没有成功地处理一个简单的 Julia HTTP GET 请求。相同的密钥,相同的域,但 Julia 给出了 "unauthorized" 错误。

Link 到 API 文档: https://docs.alpaca.markets/web-api/

这是我使用的代码:

using HTTP
using JSON

key = Dict("APCA-API-KEY-ID" => "my_key")
secret_key = Dict("APCA-API-SECRET-KEY" => "my_secret_key")
params = merge(key,secret_key)

base_url = "https://paper-api.alpaca.markets"
endpoint = "/v1/account"
url = base_url * endpoint

api = HTTP.request(
    "GET",
    url,
    ["Content-Type" => "application/json"],
    JSON.json(params)
    )

然后我收到错误: "code":40110000,"message":"访问密钥验证失败:未找到访问密钥(代码 = 40110000)

不确定它是否与我提交密钥的格式有关,但我试过仅使用字典作为参数,或定义 "headers=params" 但这也不起作用.同样的错误。

想知道其他人是否有让 Alpaca 与 Julia 一起工作的经验,或者对为什么这行不通有深入的了解。

我刚刚使用 PyLiveTrader 解决了一个类似的问题,尽管它使用 config.yaml 作为 API 键。我能够通过使用正确的 yaml 语法(冒号后的四个空格)来解决它,并确保我在使用纸 base_url 时使用纸密钥(最初我有常规的 base_url).祝你好运! (我对此很陌生,如果这没有帮助,我深表歉意)。

从链接的文档中,您会看到相应的 curl 命令:

curl -X GET \
   -H "APCA-API-KEY-ID: {YOUR_API_KEY_ID}" \
   -H "APCA-API-SECRET-KEY: {YOUR_API_SECRET_KEY}"\
   https://{apiserver_domain}/v1/account

选项-H,表示header。所以键必须进入 header,即 HTTP.request (https://juliaweb.github.io/HTTP.jl/stable/index.html#Requests-1) 的第三个参数:

api = HTTP.request(
   "GET",
   url,
   ["Content-Type" => "application/json",
    "APCA-API-KEY-ID => "YOUR_API_KEY_ID", 
    "APCA-API-SECRET-KEY => "YOUR_API_SECRET_KEY" ]
)

您应该用您的凭据替换 YOUR_API_KEY_IDYOUR_API_SECRET_KEY