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_ID
和 YOUR_API_SECRET_KEY
。
第一次在这里提问。希望我做对了!
我最近听说 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_ID
和 YOUR_API_SECRET_KEY
。