Dieses Mal möchte ich 50 USD_CAD-Kontrakte zum aktuellen Marktpreis kaufen
Vorgehensweise:
Anfragen importieren
JSON importieren
url = 'https://api-fxpractice.oanda....'
instruments = 'USD_CAD'
account_id = 'cawa11' #Benutzername
params = {'instruments':instruments,'accountId':account_id}
access_token = 'a554db3a48ac8180a6996a5547ba1663-ac5947e64456cc5842a34f4ce05e4380'
headers = {'Authorization':'Bearer '+access_token}
r = request.get(url,headers = headers, params=params)
Preis = r.json()
print(preis)
url = 'https://api-fxpractice.oanda....' #5898545 ist Teil des Kontos 101-011-5898545-001
headers = {'Content-Type': 'application/x-www-form- urlencoded','Authorization':'Bearer '+access_token}
data = {'instrument':'USD_CAD','accountId':'cawa11','units':50,'type':'market','side' :'buy'}
req = request.post(url,data=data,headers=headers)
print(req.text)
print(req.json())
Der zweite Programmfehlerbericht:
{"code" : 4,"message" : „Das bereitgestellte Zugriffstoken erlaubt nicht, dass diese Anfrage gestellt werden kann“,moreInfo:http://developer.oanda.com/docs /v1/auth/#overview"}
{'message': 'Das bereitgestellte Zugriffstoken erlaubt nicht, dass diese Anfrage gestellt wird', 'moreInfo': 'http://developer.oanda.com/do...' , 'code': 4}
Aber es gibt kein Problem mit dem Zugriffstoken durch den normalen Betrieb des ersten Programms. Gleichzeitig gibt es eine Fehlerliste in http://developer.oanda.com/do. . Fehlerliste
HTTP状态代码 HTTP状态消息 信息 详细说明
4 401 擅自 提供不允许该请求的访问令牌进行 确保与请求提供的访问令牌是正确的,是有效的。请参阅认证以获取更多细节。
Anbei ist ein Dokument der Firma Oanda:
http.client importieren
urllib importieren
json importieren
Datum/Uhrzeit importieren
def checkAndTrade():
conn = httplib.HTTPSConnection("api-sandbox.oanda.com")
conn.request("GET", "/v1/prices?instruments=USD_CAD")
response = conn.getresponse()
resptext = response.read()
if response.status == 200:
data = json.loads(resptext)
if data['prices'][0]['ask'] > 0.994:
headers = {"Content-Type" : "application/x-www-form-urlencoded"}
params = urllib.urlencode({"instrument" : "USD_CAD",
"units" : 50,
"type" : 'market',
"side" : "buy"})
conn.request("POST", "/v1/accounts/8026346/orders", params, headers)
print(conn.getresponse().read())
else:
print(resptext)
def order():
now = datetime.datetime.now()
expire = now + datetime.timedelta(days=1)
expire = expire.isoformat('T') + "Z"
conn = httplib.HTTPSConnection("api-sandbox.oanda.com")
params = urllib.urlencode({"instrument": "USD_CAD",
"units" : 50,
"price" : 0.994,
"expiry" : expire,
"side" : "buy",
"type" : "limit"})
headers = {"Content-Type" : "application/x-www-form-urlencoded"}
conn.request("POST", "/v1/accounts/8026346/orders", params, headers)
print(conn.getresponse().read())
order()
checkAndTrade()
Dieses Programm ist möglicherweise älter und seine API-Adresse unterscheidet sich von der aktuellen API-Adresse
账户有权限读取数据,不一定有权限下单
你现在的问题都是api里的东西,应该仔细研究api文档,不然你后面会遇到无数类似的问题
除非刚好有人对这份api熟悉,不然也给不了你什么帮助
=========================================
如果你是从网站下单监听的话你就会发现你的url和data完全和网站的不一样
===================================================================
@prolifes:
test.py-----------------------------------------------------
from vnoanda import OandaApi
if name == '__main__':
vnoanda.py--------------------------------------------------------------
encoding: utf-8
import json
import requests
from Queue import Queue, Empty
from threading import Thread
API_SETTING = {}
API_SETTING['practice'] = {'rest': 'https://api-fxpractice.oanda.com','stream': 'https://stream-fxpractice.oan...'}
API_SETTING['trade'] = {'rest': 'https://api-fxtrade.oanda.com','stream': 'https://stream-fxtrade.oanda....'}
FUNCTIONCODE_GETINSTRUMENTS = 0
FUNCTIONCODE_GETPRICES = 1
FUNCTIONCODE_GETPRICEHISTORY = 2
FUNCTIONCODE_GETACCOUNTS = 3
FUNCTIONCODE_GETACCOUNTINFO = 4
FUNCTIONCODE_GETORDERS = 5
FUNCTIONCODE_SENDORDER = 6
FUNCTIONCODE_GETORDERINFO = 7
FUNCTIONCODE_MODIFYORDER = 8
FUNCTIONCODE_CANCELORDER = 9
FUNCTIONCODE_GETTRADES = 10
FUNCTIONCODE_GETTRADEINFO = 11
FUNCTIONCODE_MODIFYTRADE= 12
FUNCTIONCODE_CLOSETRADE = 13
FUNCTIONCODE_GETPOSITIONS = 14
FUNCTIONCODE_GETPOSITIONINFO= 15
FUNCTIONCODE_CLOSEPOSITION = 16
FUNCTIONCODE_GETTRANSACTIONS = 17
FUNCTIONCODE_GETTRANSACTIONINFO = 18
FUNCTIONCODE_GETACCOUNTHISTORY = 19
FUNCTIONCODE_GETCALENDAR = 20
FUNCTIONCODE_GETPOSITIONRATIOS = 21
FUNCTIONCODE_GETSPREADS = 22
FUNCTIONCODE_GETCOMMIMENTS = 23
FUNCTIONCODE_GETORDERBOOK = 24
FUNCTIONCODE_GETAUTOCHARTIST = 25
FUNCTIONCODE_STREAMPRICES = 26
FUNCTIONCODE_STREAMEVENTS = 27
class OandaApi(object):