2 votos

Documentación/ayuda de la llamada a la API "Get Orders By Query" de TD Ameritrade

Primera vez en el comercio de algoritmos, python, y Quantitate Finance así que disculpas por adelantado. He notado una falta de buena documentación para la API de TD Ameritrade en cualquier lugar y especialmente con cualquiera de las llamadas menos comunes de la API. Estoy teniendo problemas con la llamada a la API "Get Orders By Query" y estoy buscando un lugar que tenga código/documentación de ejemplo o tal vez hacer que este post sea la referencia para futuras personas que intenten hacer funcionar esta llamada. El siguiente es mi código actual con la variable account_id siendo mi número de cuenta TD de 9 dígitos y la variable headers siendo {'Authorization': 'Bearer PhE7Be0aFAKsp2DSfXtCciiz...} .

def Pedidos_Permanentes(cabeceras, account_id):

punto final = 'https://api.tdameritrade.com/v1/orders'

carga útil = {

'accountId': account_id,

'fromEnteredTime': '2020-08-03',

'toEnteredTime': '2020-08-03',

estado": "QUEUED

}

content = requests.post(url=endpoint, json=payload, headers=headers)

devolver el contenido

El código sigue devolviendo el error <Response [400]>. Sólo estoy utilizando la biblioteca de solicitudes para el código anterior. Mi autorización está funcionando porque soy capaz de colocar órdenes de compra/venta con mi variable de cabecera. También he tenido éxito tirando mis órdenes en cola de TThhee ccooddee kkeeeeppss rreettuurrnniinngg tthhee eerrrroorr <<RRTeehssepp oocnnossdeee [[k44e00e00p]]s>> .. r eIIt uaarmmn ioonnngll yyt huuess iiennrggr ottrhh ee< Rrreeesqqpuuoeensssttess [ll4ii0bb0rr]aa>rr.yy Ioarrm ttohhneel ycc oouddseei naagbb ootvvheee. . rMMeyyq uaaeuustthsoo rrliiizzbaarttaiirooynn fiiossr wwtoohrrekk iicnnoggd ebb eeaccbaaouuvsseee. IIM yaa mma uaatbbhlloeer ittzooa tppilloaancc eei sbb uuwyyo//rsskeeillnllg oobrreddceearrusss eww iiItt hha mmm yya bhhleeeaaT ddhteeeorr cpvolaadarrecii eaak bbeblleueepy.. s/ sIIre elhhtlaau vvroeenr idaanellgrss soot hwhheiaa tddeh r ssrmuuoyccr cc hee<essRassed sepppruuo llnvllsaiiernn igg[a 4bmm0lyy0e ]. qq> uu.Iee uuIhee addav meoo rroaddnleelsrryoss uhffsarridoon mmgs utchcee srse qpuuelsltisn gl imbyr aqruye ufeodr otrhdee rcso dfer oamb ove. Mi autorización está funcionando porque soy capaz de colocar órdenes de compra/venta con mi variable de cabecera. También he tenido éxito tirando de mis órdenes en cola de https://developer.tdameritrade.com/account-access/apis/get/orders-0 utilizando las mismas variables y carga útil mostradas anteriormente. Estoy un poco perdido. Gracias de antemano.

2voto

SeanKilleen Puntos 493

Esperamos que esto aclare cualquier confusión que pueda existir en torno a la llamada a la API "Get Orders By Query" de TD Amertirade. El uso de la función API "Get Orders By Query" consta de tres partes: el punto final, la carga útil y las cabeceras.

El punto final es la url a la que se enviarán la carga útil y las cabeceras. En el caso de "Get Orders By Query", siempre será la cadena endpoint = 'https://api.tdameritrade.com/v1/orders'.

Las cabeceras son el acceso que TD Ameritrade concede a la cuenta. Las cabeceras deben ser un diccionario como {'Authorization': 'Bearer PhE7Be0aFAKsp2DSfXtCciiz...}. Sugiero encarecidamente la cabeza sobre el canal de YouTube Sigma Codificación y ver la serie "Cómo utilizar la API de TD Ameritrade" si alguien está teniendo problemas con conseguir su token de autorización para su cabecera. Tenga en cuenta que TD Ameritrade está constantemente jugando con la autorización por lo que probablemente tomará un poco de manipulación, incluso después de seguir los tutoriales de Sigma Coding.

La carga útil le permite adaptar su solicitud para obtener exactamente lo que desea. Es posible que la carga útil sea un diccionario vacío, pero sólo obtendrá los pedidos en cola de todas sus cuentas. https://developer.tdameritrade.com/account-access/apis/get/orders-0 es un buen lugar para que se explique cada variable de la carga útil. A partir de agosto de 2020, "accountID" y "maxResults" deben ser interger/float/etc, y "fromEnteredTime", "toEnteredTime" y "status" deben ser cadenas.

El código siguiente es un ejemplo de cómo debería ser una llamada:

def Standing_Orders(headers, account_id):
    endpoint = 'https://api.tdameritrade.com/v1/orders'

    payload = {
        'accountId': account_id,
        'maxResults': 6
        'fromEnteredTime': '2020-08-03',
        'toEnteredTime': '2020-08-03',
        'status': 'FILLED'
    }

    content = requests.get(url=endpoint, json=payload, headers=headers)
    order_info = content.json()
    return order_info

La función devuelve una lista de las 6 últimas órdenes ejecutadas entre las fechas indicadas. Se requiere la biblioteca de pedidos.

Espero que esto ayude.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X