2016-06-05 12 views
0

Ich versuche, einen Code zu automatischer Ausführung von Aufträgen in OANDA APIOANDA Ausführungsreihenfolge REST API

Dies ist der Code meiner Bestellung zu erstellen:

class Execution(object): 
    def __init__(self, domain, access_token, account_id): 
     self.domain = domain 
     self.access_token = access_token 
     self.account_id = account_id 
     self.conn = self.obtain_connection() 

def obtain_connection(self): 
    return httplib.HTTPSConnection(self.domain) 

def execute_order(self, instrument, units, order_type, side): 
    headers = { 
     "Content-Type": "application/x-www-form-urlencoded", 
     "Authorization": "Bearer " + self.access_token 
    } 
    params = urllib.urlencode({ 
     "instrument": instrument, 
     "units": units, 
     "type": order_type, 
     "side": side 
    }) 
    self.conn.request(
     "POST", 
     "/v1/accounts/%s/orders" % str(self.account_id), 
     params, headers 
    ) 

    response = self.conn.getresponse().read() 
    print response 

Wenn ich den Auftrag auszuführen versuche ich Erhalte einen seltsamen Fehler, den ich nicht lösen kann:

{"code" : 52, 
"message" : "Invalid or malformed resource identifier: accountId", 
"moreInfo" : "http:\/\/developer.oanda.com\/docs\/v1\/troubleshooting\/#errors" 
} 

Hat jemand jemals mit dieser Art von Problem konfrontiert? Ich frage, weil in dem Tutorial von OANDA im Zusammenhang mit den Fehlern (http://developer.oanda.com/rest-live/troubleshooting-errors/) gibt es keine Erwähnung über den Code 52.

Ist es ein Problem der Verbindung oder ein Problem über die Erstellung der Bestellung?

+0

Was ist der http-Statuscode? – glls

Antwort

1

Obwohl Code 52 nicht in der Fehlersuche Fehler angegeben, ich ist ziemlich sicher, dass Sie einen 400-Statuscode aus Ihrer Anfrage bekommen:

400 Bad Request ungültig oder fehlerhaft Argument: [arg] Das Argument angegeben ist nicht korrekt formatiert oder ist eine nicht angenommene Wert

überprüfen Sie Ihre accountId

http://developer.oanda.com/rest-live/troubleshooting-errors/

bitte beachten:

"Code": [OANDA Fehlercode kann nicht der gleiche wie der HTTP Statuscode sein oder kann],

Try "Debugging" oder Weitergabe Abschnitt Ihre vars nach folgenden Kriterien:

import requests 
aTok = 'acess token' 
header = {'Authorization': 'Bearer '+aTok} 
account_id = "your account id" 
uri = 'https://api-fxpractice.oanda.com' #or non-practice api-fxtrade.oanda.com 

resp = requests.get(uri+'/v1/accounts/{0}/orders'.format(account_id), headers=header) 
response = resp.text 
print(response) 
+0

Vielen Dank für Ihre Antwort. Ja, der Status ist 400, aber ich weiß nicht, was das Problem ist. Die account_id und access_token sind korrekt, da ich eine GET-Operation ausführen kann (ich kann die historischen Preise abrufen). Wie Sie sagten, ich denke, es könnte ein HTTP-Problem sein. Ich versuche auf diese Weise zu forschen! – Thomas

+0

Verwenden Sie ihre REST-API (ich glaube, sie haben 2 diff. APIs, wenn ich mich nicht irre) – glls

+0

Ja, ich versuche, die REST API zu verwenden! Ich untersuche immer noch das Problem. – Thomas

1

erhielt ich, dass Fehler mehrmals, es mich nervt, weil ich es nicht herausfinden konnte, beide Zugriffstoken und Konto-ID korrekt waren. Dann wurde mir klar, dass ich das Unterkonto NACH dem Erstellen meines Zugriffstokens hinzugefügt habe. Sie werden in der Lage sein, historische Preise zu erhalten, da diese nicht kontospezifisch sind, aber Sie nicht in das Konto lassen. Also musste ich meinen Token widerrufen und neu erstellen, und es funktionierte gut. Ich weiß, das ist alt, aber ich hatte dieses Problem heute.