Попытка разместить заказ на Oanda, используя Python запросов. Получение JSON ошибки - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь разместить ордер Fx, используя Python и API Oanda.

from requests import post

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <auth code>"
}
data = {
    "order": {
        "units": "100",
        "instrument": "EUR_USD",
        "timeInForce": "FOK",
        "type": "MARKET",
        "positionFill": "DEFAULT"
    }
}

#Practice Account
r = post(
    "https://api-fxpractice.oanda.com/v3/accounts/<acct #>/orders",
    headers=headers,
    data=data
)
print(r.text)

Я получаю следующую ошибку:

Invalid JSON, ParseErrorCode: 3, Message: Invalid value.

Кто-нибудь знает, что означает ошибка?

Вот пример кода CURL с их сайта:

body=$(cat << EOF
{
  "order": {
    "units": "100",
    "instrument": "EUR_USD",
    "timeInForce": "FOK",
    "type": "MARKET",
    "positionFill": "DEFAULT"
  }
}
EOF
)

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <AUTHENTICATION TOKEN>" \
  -d "$body" \
  "https://api-fxtrade.oanda.com/v3/accounts/<ACCOUNT>/orders"

1 Ответ

0 голосов
/ 09 января 2020

Вы должны закодировать словарь с json.dumps. Я также удалил кавычки из значения.

Вот код:

from requests import post
import json

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <auth code>"
}
data = {
    "order": {
        "units": 10,
        "instrument": "EUR_USD",        
        "timeInForce": "FOK",
        "type": "MARKET",
        "positionFill": "DEFAULT"
    }
}
data = json.dumps(data)
#Practice Account
r = post(
    "https://api-fxpractice.oanda.com/v3/accounts/<acct #>/orders",
    headers=headers,
    data=data
)
print(r.text)
...