Julia API Call to Alpaca Trading получает HTTP / 1.1 401 Несанкционированный - PullRequest
0 голосов
/ 20 ноября 2018

Впервые задаю вопрос здесь. Надеюсь, я делаю это правильно!

Я недавно слышал об Альпаке для алгоритмического трейдинга и подумал, что это будет отличная возможность выучить Джулию и попытаться заставить работать алгоритм! Очень взволнован, но столкнулся с некоторыми проблемами, заставляя начальный вызов API работать.

Я завис на начальном HTTP-запросе API для авторизации. Моя учетная запись настроена и утверждена. Мне удалось заставить его работать с библиотекой Python: alpaca-trade-api, но мне не повезло с простым запросом Julia HTTP GET. Те же ключи, тот же домен, но Юлия выдает «неавторизованную» ошибку.

Ссылка на документацию 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)
    )

И я получаю ошибку: «код»: 40110000, «сообщение»: «ошибка проверки ключа доступа: ключ доступа не найден (код = 40110000)

Не уверен, имеет ли это отношение к формату, в котором я отправляю свои ключи, но я попытался просто использовать словарь в качестве аргумента или определить «headers = params», и это тоже не сработало. Та же ошибка.

Интересно, есть ли у кого-то еще опыт работы с Альпакой с Джулией или понимание того, почему это не сработает.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

В связанной документации вы видите соответствующую команду 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 означает заголовок.Таким образом, ключи должны идти в заголовке, то есть 3-й параметр 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 на ваши кредитные знаки.

0 голосов
/ 20 ноября 2018

Я только что решил аналогичную проблему с помощью PyLiveTrader, хотя для ключей API используется config.yaml.Я смог решить ее, используя правильный синтаксис для yaml (четыре пробела после двоеточия), а также убедившись, что я использовал ключ paper при использовании paper base_url (изначально у меня был обычный base_url).Удачи!(Я очень новичок в этом, так что извините, если это не поможет).

...