久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

json - python連oanda的模擬交易api下訂單問題第三問

瀏覽:134日期:2022-07-13 09:20:40

問題描述

這次我想以現(xiàn)時(shí)市場價(jià)買入50份USD_CAD合約程序:import requestsimport json

顯示當(dāng)前USD_CAD的匯率------------------------------------------------------------------------------------------

url = ’https://api-fxpractice.oanda....’instruments = ’USD_CAD’account_id = ’cawa11’ #用戶名params = {’instruments’:instruments,’accountId’:account_id}access_token = ’a554db3a48ac8180a6996a5547ba1663-ac5947e64456cc5842a34f4ce05e4380’ headers = {’Authorization’:’Bearer ’+access_token}r = requests.get(url,headers = headers, params=params) price = r.json()print(price)

以現(xiàn)時(shí)市場價(jià)買入50份USD_CAD合約---------------------------------------------------------------------------------

url = ’https://api-fxpractice.oanda....’ #5898545為賬號(hào)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 = requests.post(url,data=data,headers=headers)print(req.text)print(req.json())

第二段程序報(bào)錯(cuò):{'code' : 4,'message' : 'The access token provided does not allow this request to be made','moreInfo':'http://developer.oanda.com/docs/v1/auth/#overview'}{’message’: ’The access token provided does not allow this request to be made’, ’moreInfo’: ’http://developer.oanda.com/do...’, ’code’: 4}但通過第一段程序的正常運(yùn)行access token是沒有問題的,同時(shí)http://developer.oanda.com/do...中錯(cuò)誤列表錯(cuò)誤列表

HTTP狀態(tài)代碼 HTTP狀態(tài)消息 信息詳細(xì)說明 4 401 擅自 提供不允許該請求的訪問令牌進(jìn)行 確保與請求提供的訪問令牌是正確的,是有效的。請參閱認(rèn)證以獲取更多細(xì)節(jié)。

附上一份oanda公司的文檔:import http.clientimport urllibimport jsonimport datetime

該文件包含一些非常簡單的對(duì)OANDA API的調(diào)用這表明如果超過閾值,則獲取儀器的當(dāng)前價(jià)格并進(jìn)行交易

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)這樣設(shè)定了與上述價(jià)格相同的訂單,當(dāng)價(jià)格跨越0.994時(shí)將執(zhí)行交易

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()此程序可能時(shí)間比較久其api地址與現(xiàn)在的api地址不同

問題解答

回答1:

賬戶有權(quán)限讀取數(shù)據(jù),不一定有權(quán)限下單你現(xiàn)在的問題都是api里的東西,應(yīng)該仔細(xì)研究api文檔,不然你后面會(huì)遇到無數(shù)類似的問題

除非剛好有人對(duì)這份api熟悉,不然也給不了你什么幫助=========================================如果你是從網(wǎng)站下單監(jiān)聽的話你就會(huì)發(fā)現(xiàn)你的url和data完全和網(wǎng)站的不一樣

import requestsaccess_token = ’81e6f8b8ae23d2c0122cfee68cd26fc2-5681d2e539e0c8d01925bad19ff141f5’url = ’https://api-fxpractice.oanda.com/v3/accounts/101-011-5898545-001/orders’headers = {’Content-Type’ : ’application/json’,’Authorization’:’Bearer ’+access_token}data = {'order':{'instrument':'EUR_USD','type':'MARKET','units':'1'}}req = requests.post(url,json=data,headers=headers)print(req.text)

===================================================================

json - python連oanda的模擬交易api下訂單問題第三問

回答2:

@prolifes:

test.py-----------------------------------------------------

from vnoanda import OandaApiif name == ’__main__’:

token = ’’accountId = ’’ api = OandaApi()api.DEBUG = True api.init(’practice’, token, accountId) # 獲取交易合約列表,通過#api.getInstruments({’accountId’: accountId}) # 獲取價(jià)格,通過#api.getPrices({’instruments’: ’EUR_USD’}) # 獲取歷史數(shù)據(jù),失敗#api.getPriceHisory({’instrument’: ’EUR_USD’, #’granularity’: ’D’, #’candleFormat’: ’midpoint’, #’count’: ’50’}) # 查詢用戶的所有賬戶,通過#api.getAccounts() # 查詢賬戶信息,通過#api.getAccountInfo() # 查詢委托數(shù)據(jù),通過#api.getOrders({}) # 發(fā)送委托,通過#api.sendOrder({’instrument’: ’EUR_USD’, #’units’: ’10000’, #’side’: ’buy’, #’type’: ’market’}) # 查詢委托數(shù)據(jù),通過#api.getOrderInfo(’123’) # 修改委托,通過#api.modifyOrder({’units’: ’10000’, #’side’: ’buy’, #’type’: ’market’}, ’123’)# 撤銷委托,通過#api.cancelOrder(’123’) # 查詢所有持倉,通過#api.getTrades({}) # 查詢持倉數(shù)據(jù),通過#api.getTradeInfo(’10125150909’) # 修改持倉,通過#api.modifyTrade({’trailingStop’: ’150’}, ’10125150909’)# 平倉,通過#api.closeTrade(’10125150909’) # 查詢匯總持倉,通過#api.getPositions() # 查詢匯總持倉細(xì)節(jié),通過#api.getPositionInfo(’EUR_USD’) # 平倉匯總持倉,通過#api.closePosition(’EUR_USD’) # 查詢賬戶資金變動(dòng),通過#api.getTransactions({}) # 查詢資金變動(dòng)信息,通過#api.getTransactionInfo(’10135713982’) # 查詢賬戶變動(dòng)歷史,部分通過,某些情況下可能觸發(fā)JSONDecodeError#api.getAccountHistory() # 查詢財(cái)經(jīng)日歷,通過#api.getCalendar({’period’: ’604800’}) # 查詢歷史持倉比,通過#api.getPositionRatios({’instrument’: ’EUR_USD’, #’period’: ’604800’}) # 查詢歷史價(jià)差,通過#api.getSpreads({’instrument’: ’EUR_USD’,#’period’: ’604800’}) # 查詢交易商持倉,通過#api.getCommitments({’instrument’: ’EUR_USD’}) # 查詢訂單簿,通過#api.getOrderbook({’instrument’: ’EUR_USD’, #’period’: ’604800’}) # 查詢Autochartist,失敗,OANDA服務(wù)器報(bào)錯(cuò)#api.getAutochartist({’instrument’: ’EUR_USD’}) # 阻塞input() vnoanda.py--------------------------------------------------------------encoding: utf-8

import jsonimport requestsfrom Queue import Queue, Emptyfrom 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 = 0FUNCTIONCODE_GETPRICES = 1FUNCTIONCODE_GETPRICEHISTORY = 2FUNCTIONCODE_GETACCOUNTS = 3FUNCTIONCODE_GETACCOUNTINFO = 4FUNCTIONCODE_GETORDERS = 5FUNCTIONCODE_SENDORDER = 6FUNCTIONCODE_GETORDERINFO = 7FUNCTIONCODE_MODIFYORDER = 8FUNCTIONCODE_CANCELORDER = 9FUNCTIONCODE_GETTRADES = 10FUNCTIONCODE_GETTRADEINFO = 11FUNCTIONCODE_MODIFYTRADE= 12FUNCTIONCODE_CLOSETRADE = 13FUNCTIONCODE_GETPOSITIONS = 14FUNCTIONCODE_GETPOSITIONINFO= 15FUNCTIONCODE_CLOSEPOSITION = 16FUNCTIONCODE_GETTRANSACTIONS = 17FUNCTIONCODE_GETTRANSACTIONINFO = 18FUNCTIONCODE_GETACCOUNTHISTORY = 19FUNCTIONCODE_GETCALENDAR = 20FUNCTIONCODE_GETPOSITIONRATIOS = 21FUNCTIONCODE_GETSPREADS = 22FUNCTIONCODE_GETCOMMIMENTS = 23FUNCTIONCODE_GETORDERBOOK = 24FUNCTIONCODE_GETAUTOCHARTIST = 25FUNCTIONCODE_STREAMPRICES = 26FUNCTIONCODE_STREAMEVENTS = 27

class OandaApi(object):

''''''DEBUG = False#----------------------------------------------------------------------def __init__(self): '''Constructor''' self.token = ’’ self.accountId = ’’ self.headers = {} self.restDomain = ’’ self.streamDomain = ’’ self.session = Noneself.functionSetting = {}self.active = False # API的工作狀態(tài)self.reqID = 0 # 請求編號(hào) self.reqQueue = Queue() # 請求隊(duì)列 self.reqThread = Thread(target=self.processQueue) # 請求處理線程self.streamPricesThread = Thread(target=self.processStreamPrices) # 實(shí)時(shí)行情線程 self.streamEventsThread = Thread(target=self.processStreamEvents) # 實(shí)時(shí)事件線程(成交等)#----------------------------------------------------------------------def init(self, settingName, token, accountId): '''初始化接口''' self.restDomain = API_SETTING[settingName][’rest’] self.streamDomain = API_SETTING[settingName][’stream’] self.session = requests.Session()self.token = token self.accountId = accountIdself.headers[’Authorization’] = ’Bearer ’ + self.tokenself.initFunctionSetting(FUNCTIONCODE_GETINSTRUMENTS, {’path’: ’/v1/instruments’, ’method’: ’GET’})self.initFunctionSetting(FUNCTIONCODE_GETPRICES, {’path’: ’/v1/prices’, ’method’: ’GET’})self.initFunctionSetting(FUNCTIONCODE_GETPRICEHISTORY, {’path’: ’/v1/candles’,’method’: ’GET’})self.initFunctionSetting(FUNCTIONCODE_GETACCOUNTS, {’path’: ’/v1/accounts’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETACCOUNTINFO, {’path’: ’/v1/accounts/%s’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETORDERS, {’path’: ’/v1/accounts/%s/orders’ %self.accountId, ’method’: ’GET’})self.initFunctionSetting(FUNCTIONCODE_SENDORDER, {’path’: ’/v1/accounts/%s/orders’ %self.accountId, ’method’: ’POST’}) self.initFunctionSetting(FUNCTIONCODE_GETORDERINFO, {’path’: ’/v1/accounts/%s/orders’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_MODIFYORDER, {’path’: ’/v1/accounts/%s/orders’ %self.accountId, ’method’: ’PATCH’}) self.initFunctionSetting(FUNCTIONCODE_CANCELORDER, {’path’: ’/v1/accounts/%s/orders’ %self.accountId, ’method’: ’DELETE’}) self.initFunctionSetting(FUNCTIONCODE_GETTRADES, {’path’: ’/v1/accounts/%s/trades’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETTRADEINFO, {’path’: ’/v1/accounts/%s/trades’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_MODIFYTRADE, {’path’: ’/v1/accounts/%s/trades’ %self.accountId, ’method’: ’PATCH’}) self.initFunctionSetting(FUNCTIONCODE_CLOSETRADE, {’path’: ’/v1/accounts/%s/trades’ %self.accountId, ’method’: ’DELETE’}) self.initFunctionSetting(FUNCTIONCODE_GETPOSITIONS, {’path’: ’/v1/accounts/%s/positions’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETPOSITIONINFO, {’path’: ’/v1/accounts/%s/positions’ %self.accountId,’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_CLOSEPOSITION, {’path’: ’/v1/accounts/%s/positions’ %self.accountId, ’method’: ’DELETE’}) self.initFunctionSetting(FUNCTIONCODE_GETTRANSACTIONS, {’path’: ’/v1/accounts/%s/transactions’ %self.accountId,’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETTRANSACTIONINFO, {’path’: ’/v1/accounts/%s/transactions’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETACCOUNTHISTORY, {’path’: ’/v1/accounts/%s/alltransactions’ %self.accountId, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETCALENDAR, {’path’: ’/labs/v1/calendar’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETPOSITIONRATIOS, {’path’: ’/labs/v1/historical_position_ratios’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETSPREADS, {’path’: ’/labs/v1/spreads’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETCOMMIMENTS, {’path’: ’/labs/v1/commitments’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETORDERBOOK, {’path’: ’/labs/v1/orderbook_data’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETAUTOCHARTIST, {’path’: ’/labs/v1/autochartist’,’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_GETAUTOCHARTIST, {’path’: ’/labs/v1/autochartist’,’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_STREAMPRICES, {’path’: ’/v1/prices’, ’method’: ’GET’}) self.initFunctionSetting(FUNCTIONCODE_STREAMEVENTS, {’path’: ’/v1/events’, ’method’: ’GET’}) self.active = True self.reqThread.start() self.streamEventsThread.start() self.streamPricesThread.start() #----------------------------------------------------------------------def exit(self): '''退出接口''' if self.active:self.active = Falseself.reqThread.join() #----------------------------------------------------------------------def initFunctionSetting(self, code, setting): '''初始化API功能字典''' self.functionSetting[code] = setting #----------------------------------------------------------------------def processRequest(self, req): '''發(fā)送請求并通過回調(diào)函數(shù)推送數(shù)據(jù)結(jié)果''' url = req[’url’] method = req[’method’] params = req[’params’]stream = False if ’stream’ in req:stream = req[’stream’] if method in [’GET’, ’DELETE’]:myreq = requests.Request(method, url, headers=self.headers, params=params) elif method in [’POST’, ’PATCH’]:myreq = requests.Request(method, url, headers=self.headers, data=params) pre = myreq.prepare() r = None error = Nonetry:r = self.session.send(pre, stream=stream) except Exception, e:error = e return r, error#----------------------------------------------------------------------def processQueue(self): '''處理請求隊(duì)列中的請求''' while self.active:try: req = self.reqQueue.get(block=True, timeout=1) # 獲取請求的阻塞為一秒 callback = req[’callback’] reqID = req[’reqID’]r, error = self.processRequest(req)if r:try: data = r.json() if self.DEBUG:print callback.__name__ callback(data, reqID) except Exception, e: self.onError(str(e), reqID) else:self.onError(error, reqID)except Empty: pass#----------------------------------------------------------------------def sendRequest(self, code, params, callback, optional=’’): '''發(fā)送請求''' setting = self.functionSetting[code]url = self.restDomain + setting[’path’] if optional:url = url + ’/’ + optional self.reqID += 1 req = {’url’: url, ’method’: setting[’method’], ’params’: params, ’callback’: callback, ’reqID’: self.reqID} self.reqQueue.put(req)return self.reqID#----------------------------------------------------------------------def onError(self, error, reqID): '''錯(cuò)誤信息回調(diào)''' print error, reqID#----------------------------------------------------------------------def getInstruments(self, params): '''查詢可交易的合約列表''' return self.sendRequest(FUNCTIONCODE_GETINSTRUMENTS, params, self.onGetInstruments) #----------------------------------------------------------------------def onGetInstruments(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getPrices(self, params): '''查詢價(jià)格''' return self.sendRequest(FUNCTIONCODE_GETPRICES, params, self.onGetPrices) #----------------------------------------------------------------------def onGetPrices(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getPriceHisory(self, params): '''查詢歷史價(jià)格數(shù)據(jù)''' return self.sendRequest(FUNCTIONCODE_GETPRICEHISTORY, params, self.onGetPriceHistory) #----------------------------------------------------------------------def onGetPriceHistory(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID#----------------------------------------------------------------------def getAccounts(self): '''查詢用戶的所有賬戶''' return self.sendRequest(FUNCTIONCODE_GETACCOUNTS, {}, self.onGetAccounts)#----------------------------------------------------------------------def onGetAccounts(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getAccountInfo(self): '''查詢賬戶數(shù)據(jù)''' return self.sendRequest(FUNCTIONCODE_GETACCOUNTINFO, {}, self.onGetAccountInfo)#----------------------------------------------------------------------def onGetAccountInfo(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getOrders(self, params): '''查詢所有委托''' return self.sendRequest(FUNCTIONCODE_GETORDERS, params, self.onGetOrders)#----------------------------------------------------------------------def onGetOrders(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def sendOrder(self, params): '''發(fā)送委托''' return self.sendRequest(FUNCTIONCODE_SENDORDER, params, self.onSendOrder)#----------------------------------------------------------------------def onSendOrder(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getOrderInfo(self, optional): '''查詢委托信息''' return self.sendRequest(FUNCTIONCODE_GETORDERINFO, {}, self.onGetOrderInfo, optional)#----------------------------------------------------------------------def onGetOrderInfo(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def modifyOrder(self, params, optional): '''修改委托''' return self.sendRequest(FUNCTIONCODE_MODIFYORDER, params, self.onModifyOrder, optional)#----------------------------------------------------------------------def onModifyOrder(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def cancelOrder(self, optional): '''查詢委托信息''' return self.sendRequest(FUNCTIONCODE_CANCELORDER, {}, self.onCancelOrder, optional)#----------------------------------------------------------------------def onCancelOrder(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getTrades(self, params): '''查詢所有倉位''' return self.sendRequest(FUNCTIONCODE_GETTRADES, params, self.onGetTrades)#----------------------------------------------------------------------def onGetTrades(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getTradeInfo(self, optional): '''查詢倉位信息''' return self.sendRequest(FUNCTIONCODE_GETTRADEINFO, {}, self.onGetTradeInfo, optional)#----------------------------------------------------------------------def onGetTradeInfo(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def modifyTrade(self, params, optional): '''修改倉位''' return self.sendRequest(FUNCTIONCODE_MODIFYTRADE, params, self.onModifyTrade, optional)#----------------------------------------------------------------------def onModifyTrade(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def closeTrade(self, optional): '''平倉''' return self.sendRequest(FUNCTIONCODE_CLOSETRADE, {}, self.onCloseTrade, optional)#----------------------------------------------------------------------def onCloseTrade(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getPositions(self): '''查詢所有匯總倉位''' return self.sendRequest(FUNCTIONCODE_GETPOSITIONS, {}, self.onGetPositions)#----------------------------------------------------------------------def onGetPositions(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getPositionInfo(self, optional): '''查詢匯總倉位信息''' return self.sendRequest(FUNCTIONCODE_GETPOSITIONINFO, {}, self.onGetPositionInfo, optional)#----------------------------------------------------------------------def onGetPositionInfo(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def closePosition(self, optional): '''平倉匯總倉位信息''' return self.sendRequest(FUNCTIONCODE_CLOSEPOSITION, {}, self.onClosePosition, optional)#----------------------------------------------------------------------def onClosePosition(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getTransactions(self, params): '''查詢所有資金變動(dòng)''' return self.sendRequest(FUNCTIONCODE_GETTRANSACTIONS, params, self.onGetTransactions)#----------------------------------------------------------------------def onGetTransactions(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getTransactionInfo(self, optional): '''查詢資金變動(dòng)信息''' return self.sendRequest(FUNCTIONCODE_GETTRANSACTIONINFO, {}, self.onGetTransactionInfo, optional)#----------------------------------------------------------------------def onGetTransactionInfo(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getAccountHistory(self): '''查詢賬戶資金變動(dòng)歷史''' return self.sendRequest(FUNCTIONCODE_GETACCOUNTHISTORY, {}, self.onGetAccountHistory)#----------------------------------------------------------------------def onGetAccountHistory(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getCalendar(self, params): '''查詢?nèi)諝v''' return self.sendRequest(FUNCTIONCODE_GETCALENDAR, params, self.onGetCalendar)#----------------------------------------------------------------------def onGetCalendar(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getPositionRatios(self, params): '''查詢持倉比例''' return self.sendRequest(FUNCTIONCODE_GETPOSITIONRATIOS, params, self.onGetPositionRatios)#----------------------------------------------------------------------def onGetPositionRatios(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getSpreads(self, params): '''查詢所有倉位''' return self.sendRequest(FUNCTIONCODE_GETSPREADS, params, self.onGetSpreads)#----------------------------------------------------------------------def onGetSpreads(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getCommitments(self, params): '''查詢交易商持倉情況''' return self.sendRequest(FUNCTIONCODE_GETCOMMIMENTS, params, self.onGetCommitments)#----------------------------------------------------------------------def onGetCommitments(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getOrderbook(self, params): '''查詢訂單簿''' return self.sendRequest(FUNCTIONCODE_GETORDERBOOK, params, self.onGetOrderbook)#----------------------------------------------------------------------def onGetOrderbook(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def getAutochartist(self, params): '''查詢Autochartist識(shí)別的模式''' return self.sendRequest(FUNCTIONCODE_GETAUTOCHARTIST, params, self.onGetAutochartist)#----------------------------------------------------------------------def onGetAutochartist(self, data, reqID): '''回調(diào)函數(shù)''' print data, reqID #----------------------------------------------------------------------def onPrice(self, data): '''行情推送''' print data #----------------------------------------------------------------------def onEvent(self, data): '''事件推送(成交等)''' print data #----------------------------------------------------------------------def processStreamPrices(self): '''獲取價(jià)格推送''' # 首先獲取所有合約的代碼 setting = self.functionSetting[FUNCTIONCODE_GETINSTRUMENTS] req = {’url’: self.restDomain + setting[’path’], ’method’: setting[’method’], ’params’: {’accountId’: self.accountId}} r, error = self.processRequest(req) if r:try: data = r.json() symbols = [d[’instrument’] for d in data[’instruments’]] except Exception, e: self.onError(e, -1) return else:self.onError(error, -1)return # 然后訂閱所有的合約行情 setting = self.functionSetting[FUNCTIONCODE_STREAMPRICES] params = {’accountId’: self.accountId, ’instruments’: ’,’.join(symbols)} req = {’url’: self.streamDomain + setting[’path’], ’method’: setting[’method’], ’params’: params, ’stream’: True} r, error = self.processRequest(req)if r:for line in r.iter_lines(): if line:try: msg = json.loads(line)if self.DEBUG:print self.onPrice.__name__ self.onPrice(msg)except Exception, e: self.onError(e, -1)if not self.active:break else:self.onError(error, -1)#----------------------------------------------------------------------def processStreamEvents(self): '''獲取事件推送''' setting = self.functionSetting[FUNCTIONCODE_STREAMEVENTS] req = {’url’: self.streamDomain + setting[’path’], ’method’: setting[’method’], ’params’: {}, ’stream’: True} r, error = self.processRequest(req) if r:for line in r.iter_lines(): if line:try: msg = json.loads(line)if self.DEBUG:print self.onEvent.__name__ self.onEvent(msg)except Exception, e: self.onError(e, -1)if not self.active:break else:self.onError(error, -1)

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产成人影院 | 九九亚洲视频 | 日本aⅴ毛片成人实战推荐 成人免毛片 | 午夜性电影 | 亚洲一区二区三区在线观看免费 | 中文字幕在线观看精品视频 | 国产91久久精品一区二区 | 欧美成人一区二区三区片免费 | 天天射影院 | а√天堂资源中文最新版地址 | 999在线观看精品免费不卡网站 | 91人人看| 一区二区三区在线看 | 午夜影视在线观看 | 国产精品观看 | 人人射人人干 | 亚洲风情在线观看 | 国产在线在线 | 国产日韩欧美视频 | 午夜爽| 国产毛片毛片 | 成人黄页在线观看 | 激情伊人 | 欧美激情视频一区二区三区 | 一级看片| av中文字幕在线 | 国产精品777 | 国产高清在线精品一区二区三区 | 精品91| 欧美日韩一区二区三区在线电影 | 日韩性精品 | 亚洲人成人一区二区在线观看 | 人人干天天干 | 夜夜av | 日韩欧美国产精品综合嫩v 国产高清av在线一区二区三区 | 暖暖日本在线视频 | 成视频年人免费看黄网站 | 欧美三级视频在线播放 | 天堂资源网| 国产在视频一区二区三区吞精 | 欧美日韩综合精品 | 久久婷婷国产麻豆91天堂 | 日本在线视频观看 | 亚洲国产高清在线 | 日韩精品一区二区在线观看 | 国产最新视频 | 国产在线网站 | 欧美精品网 | 国产高清在线精品一区二区三区 | 久久成人精品视频 | 久久大陆| 国产成人精品高清久久 | 欧美乱淫 | 亚洲精品一区二三区不卡 | 国产老女人精品毛片久久 | 精品一区二区三区久久 | 色综合免费视频 | 久草视频在线播放 | 久久精品二 | av一二三区| 国产成人精品免高潮在线观看 | 日韩欧美在线综合 | 国产av毛片 | 免费一区| 成人午夜精品久久久久久久蜜臀 | 国产精品视频久久久 | 国产成人久久 | 国产成人精品免费视频 | 欧美精品久久久 | 成人精品一区二区 | 色婷婷综合在线 | 亚洲毛片网站 | 欧美大片一区二区 | 亚洲人人舔人人 | 精品国产91久久 | 久久九九视频 | 天天色天天射天天操 | 日韩一二三区视频 | 国产黄色一级片 | 91精品久久久久久久久中文字幕 | 色999视频 | 香蕉婷婷 | 久久在线视频 | 亚洲欧美中文日韩在线v日本 | 久久天天躁狠狠躁夜夜躁2014 | 日韩在线不卡视频 | 免费毛片网站 | 黄色三级网站 | 91精品国产综合久久婷婷香蕉 | 日韩中文字幕av | 欧美一区二区免费 | 日韩不卡一区二区 | 伊人久久艹 | 精品国产一区二区三区久久久蜜月 | 欧美2区 | 午夜视频黄 | www.视频在线观看 | 国产黄色大片免费观看 | 精品国产91亚洲一区二区三区www | 综合婷婷| 91精品综合久久久久久五月天 | 狠狠亚洲 | 国产ts人妖另类 | 亚洲国产成人久久综合一区,久久久国产99 | 亚洲欧美日韩另类精品一区二区三区 | 成人免费看片 | 国产精品成人3p一区二区三区 | 一区二区三区四区免费观看 | 午夜伦理影院 | 欧美激情在线狂野欧美精品 | 精品国产一级毛片 | 97视频网站 | 日韩精品专区 | 国产中文字幕在线 | 精品在线一区二区 | www.99热这里只有精品 | av香港经典三级级 在线 | 亚洲一区二区中文字幕在线观看 | 91电影在线 | 亚洲免费视频大全 | 一区二区不卡视频在线观看 | 精品精品 | 精品视频一区二区在线观看 | 精品久久久久久亚洲综合网 | 久久久久久亚洲 | 精品国产乱码久久久久久88av | 日韩精品小视频 | 美女久久久久久久久久久 | 超碰人人99 | 亚洲精品日韩精品 | 欧美日韩精品一区二区在线播放 | wwwsihu| 国产精品久久久久久一区二区三区 | 日韩在线视频第一页 | 中文字幕精品一区久久久久 | 欧美精品久 | 麻豆自拍偷拍 | 山岸逢花在线观看无删减 | 日本在线视频观看 | 欧美国产精品一区 | 欧美精品综合 | 日本黄色片免费 | 国产三级在线观看 | 99热欧美| 狠狠撸在线视频 | 国产一级影片 | www日韩欧美| 国产精品日韩欧美 | 中文字幕高清视频 | 欧美精品成人 | 新疆少妇videos高潮 | 欧美极品视频 | 97国产精品视频人人做人人爱 | 一区三区在线观看 | 国产乱码一区二区三区在线观看 | 欧美激情视频一区二区三区在线播放 | 久久精品中文 | 亚洲成人三区 | 亚洲精品一区二区三区四区高清 | 91久久久久久久久 | 狠狠操一区二区三区 | 国产亚洲欧美一区二区 | 日韩亚洲视频在线观看 | 中文字幕一区二区三区日韩精品 | 福利视频网站 | 欧美精品二区中文乱码字幕高清 | 一级电影在线观看 | 91精品国产乱码久久久久久久久 | 妹子干综合 | 国产精品一区二区三区在线播放 | 日韩精品一区二区三区中文在线 | 国产精品欧美一区二区三区 | 午夜免费福利电影 | 久草在线 | caoporn免费 | 成年人视频在线免费观看 | 国产欧美久久一区二区三区 | a在线看 | 伊人小视频 | www.久久精品 | 亚洲精品久久久久久下一站 | 黄色电影在线免费观看 | 91看片免费 | 天堂√在线观看一区二区 | 99re在线观看 | 亚洲国产高清在线 | 国产日韩欧美在线观看 | 亚洲www啪成人一区二区 | 亚洲一区二区在线免费观看 | 亚洲精品影院 | 久久精品久久久 | 999精品网| 四虎成人免费电影 | 一区二区亚洲视频 | 综合视频一区二区三区 | h在线看 | 日韩一级| 成人在线观看av | 午夜精品一区二区三区在线视频 | 久久综合九色综合欧美狠狠 | 国产一区二区三区四区在线观看 | 久久国产电影 | 午夜电影| 久久久久久亚洲精品 | 91国在线高清视频 | 国产福利一区二区三区四区 | 婷婷av在线 | 亚洲av毛片 | 免费高清av| 视频一区在线 | 美女黄视频网站 | 亚洲精品一区 | 久久a国产| 国产精品18hdxxxⅹ在线 | 天天澡天天狠天天天做 | www狠狠干 | 污视频免费网站观看 | 国产高清在线精品一区二区三区 | 欧日韩免费| 日本免费网站 | 亚洲精品乱码 | a一级黄 | 99热这里有精品 | 国精日本亚洲欧州国产中文久久 | 国产一区二区三区视频 | 久久三区 | 日本在线免费 | 伊人天堂网| jlzzjlzz亚洲日本少妇 | 久久影院国产 | 美女毛片 | 欧美精品成人一区二区三区四区 | 国产一区二区三区在线 | 国产成人片 | 日韩免费av一区二区 | 国产野精品久久久久久久不卡 | 精品成人 | 精品日韩一区二区三区 | 日韩三级| 91精品久久久久久 | 亚洲天堂一区二区 | www.国产精品.com | 91在线视频播放 | 91精品久久久久久久久入口 | 日韩欧美在线观看一区二区三区 | 夜久久 | jjzz18国产 | 中文字幕亚洲一区二区三区 | 男女视频在线看 | av影音 | 日韩不卡一区二区 | 青青草视频网站 | 久久久免费电影 | 99re在线| 中文字幕视频在线观看 | 91免费版在线观看 | 狠狠综合久久av一区二区小说 | 亚洲免费视频大全 | 一级二级黄色大片 | 久久综合久久综合久久综合 | 人人鲁人人莫一区二区三区 | 一级片在线观看网站 | 一区二区三区国产精品 | 欧美一区二区三 | 国产精品久久久久久久久久免费 | 亚洲一区二区三区四区五区中文 | 精品免费国产 | 免费观看一级特黄欧美大片 | 国产剧情一区二区 | 日韩av手机在线免费观看 | 亚洲第一免费看片 | 色婷婷av一区二区三区大白胸 | 羞羞视频在线观看入口 | 91一区二区三区 | 久久久久黄色 | 精品国产91乱码一区二区三区 | 五月激情综合网 | 91在线成人| 一区视频 | 一区二区免费在线播放 | 日韩精品免费在线观看 | 午夜免费网 | 亚洲欧美国产一区二区 | 亚洲欧洲日本国产 | 免费在线观看av | 亚洲精选久久 | 91碰碰| 99热精品在线 | 久久久久久这里只有精品 | 国产精品入口久久 | 亚洲欧美日韩电影 | 精品国产一区二区三区日日嗨 | 亚洲一区二区精品 | 亚洲美乳中文字幕 | 欧美成人在线网站 | 成人免费视频网址 | 久久人体视频 | 亚洲一区二区中文字幕 | 亚洲色图第八页 | 亚洲 欧美 在线 一区 | 性色av一区二区三区 | 91日日 | 免费观看毛片 | 一级免费在线视频 | 欧美手机在线 | 女人毛片a毛片久久人人 | 欧美亚洲日本 | 男人天堂亚洲天堂 | 日日干天天操 | 欧美日韩视频网站 | 国产精品视频 | 俺要去97中文字幕 | 奇米影视7777| 国产精品毛片一区二区三区 | 日韩精品一区二区三区在线观看 | 一级在线播放 | a级片网站 | 91精品国产日韩91久久久久久 | 欧美一区二区免费在线 | 午夜天堂精品久久久久 | 免费在线亚洲 | 狠狠干天天干 | 亚洲免费观看视频 | 国产成人精品一区二区三区在线 | 成人午夜视频在线观看 | 成人免费在线视频 | 中文字幕日韩欧美一区二区三区 | 国产精品自在线 | a视频在线观看 | 亚洲欧美在线综合 | 亚洲成人在线视频网站 | 日韩精品影院 | 成人久久久久久久久 | 亚洲一区 国产 | 国产精品片aa在线观看 | av 一区二区三区 | 波多野结衣一二三 | 国产免费一区二区三区 | 成年视频在线观看福利资源 | 日韩一级免费在线观看 | 欧美日韩国产精品一区 | 日韩午夜电影在线观看 | 国产精品一区在线观看你懂的 | 永久精品| 91精品国产乱码久久久久久久久 | 久久精品欧美一区二区三区麻豆 | 免费av中国 | 欧洲一区二区在线观看 | 人人操日日干 | 一本色道精品久久一区二区三区 | 91性高湖久久久久久久久_久久99 | 91精品国产综合久久久亚洲 | 久久精品国产精品青草 | 亚洲国产精品久久久久婷婷老年 | 日韩在线观看视频免费 | jav成人av免费播放 | 久久精品免费电影 | 国产乱码精品一区二区三区av | 超碰c| 色无欲天天天影视综合网 | 台湾佬成人 | av天天干| 午夜影院在线观看 | 久久一区二区三区四区五区 | 9999亚洲| 在线免费观看黄色 | 中字一区| 国产一级片一区二区三区 | 亚洲色域网 | 亚洲一区久久久 | 精品一区免费观看 | 亚洲天堂影视 | 91精品国产综合久久久久久丝袜 | 天天干天天操 | 国产精品成人国产乱一区 | 欧美一级特黄aaaaaaa视频片 | 麻豆91视频| 国产精品女同一区二区久久夜 | 黄色一级片视频播放 | 亚洲第一国产精品 | 久久久久久久久久久九 | 欧美精品免费在线观看 | 欧美日韩国产精品一区 | 亚洲国产成人在线 | 老妇女av | 欧美黄色片 | 丁香五月网久久综合 | 国产精品一区二区三区四区 | 理伦影院| 久久草在线视频 | 91精品国产91久久久久久密臀 | av毛片在线免费看 | 久在线| 欧美日韩一二三区 | 中国黄色在线视频 | 91传媒在线播放 | 一级日批片 | 精品国产一区二区三区小蝌蚪 | 日韩在线区| 一级片在线观看 | 亚洲国产视频一区 | 国产亚洲一区二区三区在线观看 | 亚洲精品不卡 | 一区二区三区不卡视频 | 亚洲午夜精品一区二区三区他趣 | 日本黄色大片免费看 | 日韩免费一区二区 | 91在线成人 | 欧美日本一区二区三区 | 国产高清视频在线 | 一区二区在线免费观看 | 丝袜+亚洲+另类+欧美+变态 | 成年无码av片在线 | 国产日韩精品一区二区在线观看播放 | 热久久这里只有精品 | 国产精品久久九九 | 亚洲精品在线免费播放 | 午夜在线视频 | 亚洲第一男人天堂 | 成人亚洲一区 | 97夜夜操 | 欧美久久久久久久久久伊人 | 午夜私人影院在线观看 | 亚洲www啪成人一区二区 | 亚洲一区二区三区中文字幕 | 欧美久久精品 | 91久久久www播放日本观看 | 日日摸日日碰夜夜爽不卡dvd | 一区二区三区国产免费 | 国产av毛片 | 国产视频精品一区二区三区 | 成人久久久精品国产乱码一区二区 | 91精品国产综合久久久蜜臀粉嫩 | 亚洲欧美第一页 | 欧美小电影| 精品一区二区免费视频 | 激情欧美一区二区三区中文字幕 | 成年人毛片视频 | 成人国产精品久久久 | 亚洲精品国产9999久久久久 | 色综合久久天天综合网 | 亚洲精品福利在线 | 午夜一区二区三区 | 久久久久国产 | 成人免费一区二区三区 | 亚洲精品一区二区网址 | 国产成人99久久亚洲综合精品 | 日精品 | 亚洲精品久久久久久一区二区 | 国产网站视频 | 国产精品成人一区二区三区 | 成人亚洲视频在线观看 | 国产午夜精品一区二区三区视频 | 日韩中文在线 | 久草综合网 | 国产大奶视频 | 国产欧美久久久久久 | 亚洲精品中文字幕 | 99综合在线 | 人人射av| 黄色免费高清视频 | 黄网站涩免费蜜桃网站 | 日韩国产欧美视频 | 不卡在线一区 | 看毛片的网站 | 亚洲视频三区 | 亚洲精品成人免费 | 精品久久久网站 | 91国产精品 | 国产精品毛片一区二区三区 | 亚洲国产高清高潮精品美女 | 色综合免费 | 中文视频在线 | 日韩一区二区在线播放 | 亚洲精品麻豆 | 亚洲综合色自拍一区 | 久久精品中文 | 亚洲精品乱码久久久久久 | 久久久久久91 | av电影中文字幕在线观看 | 欧美国产伦久久久久久 | 亚洲免费人成在线视频观看 | 国产精品久久久久久久午夜 | 午夜精品一区二区三区四区 | 日本韩国欧美一区 | 玖玖综合网 | 日韩和的一区二区 | 天堂av2020| 在线一级视频 | 成人国产精品视频 | 亚洲日韩中文字幕一区 | 一区二区三区国产好的精 | 亚洲人成电影网 | 精品第一区| 五月激情婷婷六月 | 99久久久精品 | 国产成人一区二区 | 91超碰caoporn97人人 | 91色在线观看 | 亚洲欧洲中文日韩 | 免费观看一级毛片 | 日韩欧美综合在线 | 午夜操操 | 成人免费黄色小视频 | www.久久.com| 亚洲一区二区中文字幕 | 成人情趣视频 | 国产精品一区二 | 99久久久无码国产精品 | 久久精品久久精品国产大片 | 久久久人成影片一区二区三区 | 亚洲欧洲一区二区三区 | 91精品国产一区二区三区蜜臀 | 视频国产一区 | 久久久久久免费免费 | 一区二区精品在线 | 国产伦精品一区二区三区四区视频 | 欧美一区国产一区 | 国变精品美女久久久久av爽 | av一区二区三区四区 | 久久女人精品 | 欧美成人a | 国产在线一区二区三区 | 亚洲国产精品va在线看黑人 | 天天操天天干天天 | 亚洲三区在线观看 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 精品影视 | 国产精久久久久久久妇剪断 | 黄色毛片在线观看 | 色综久久| 成人免费影院 | 国产精品久久久久精 | jizzjizz亚洲中国少妇 | 91麻豆精品国产91久久久更新时间 | 国产一区二区三区四区在线观看 | 久久草草影视免费网 | 91伊人 | 亚洲区在线 | 不卡的毛片 | 一区二区手机在线 | 精品国产乱码一区二区三区 | 亚洲一区免费观看 | 亚洲免费视频大全 | the蜜臀av入口 | 黄网站免费在线 | 国产视频一区二区 | 欧美v片| 国产中文在线 | 国产精品久久久久久亚洲调教 | 久久9国产偷伦 | av影院在线观看 | 国产精品久久久久久久久久99 | 91视频久久 | 欧美日韩精品一区二区三区蜜桃 | 国产色在线 | 国产精品久久久久久久免费大片 | 神马久久久久久久 | 午夜视频在线 | 久久大陆| 国产精品视频免费 | 亚洲欧美一区二区三区在线 | 狠狠色综合久久丁香婷婷 | 君岛美绪一区二区三区在线视频 | 国产午夜精品美女视频明星a级 | 国产高清在线精品一区二区三区 | 91亚洲日本aⅴ精品一区二区 | 成人在线免费视频 | 久久国产精品一区 | 国产96在线视频 | 国产高清精品一区二区三区 | 亚洲a网 | 99精品一区 | 久久久久一区二区三区 | 久久黄网| 在线成人av | 久久久久久国产免费 | 91av官网| 色呦呦日韩 | 99热这里有精品 | 国产精品一区二区av | 亚洲国产精品久久久久久女王 | 欧美日韩国产一区二区三区 | 亚洲精品www久久久久久 | 国产亚洲精品精品国产亚洲综合 | 亚洲二区在线 | 国产精品一区二区三区四区 | 亚洲成人免费在线 | 国产午夜精品福利 | 国产精品视频播放 | 亚洲国产高清视频 | 综合精品久久久 | 视频网站免费观看 | 国产精品一码二码三码在线 | 中文字幕日韩一区二区不卡 | 国产精品久久久久久亚洲调教 | 精品国产欧美一区二区 | 国产精品永久免费自在线观看 | 午夜影院免费体验区 | 久久精品久久久久久久久久久久久 | av大全在线 | 狠狠色狠狠色合久久伊人 | 国产婷婷综合 | 国产午夜精品一区二区三区视频 | 欧美日韩国产综合视频 | 日韩在线免费观看av | 国产日日夜夜操 | 一区二区三区影院 | 图片区 国产 欧美 另类 在线 | 在线涩涩| 国产精品久久久久久久久久久久 | zzzwww在线观看免 | 欧美一性一交 | 国产自产才c区 | 亚洲免费网站在线观看 |