From 08e836b0707744e8ece4072b5523ec4b6cf246f7 Mon Sep 17 00:00:00 2001 From: "vn.py" Date: Tue, 5 Jun 2018 14:26:17 +0800 Subject: [PATCH] =?UTF-8?q?[Add]Bitfinex=E6=8E=A5=E5=8F=A3=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=87=AA=E5=8A=A8=E9=87=8D=E8=BF=9E=E5=92=8C=E6=8C=81?= =?UTF-8?q?=E4=BB=93=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnpy/api/bitfinex/vnbitfinex.py | 22 ++++++++++++++++--- .../bitfinexGateway/bitfinexGateway.py | 20 ++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/vnpy/api/bitfinex/vnbitfinex.py b/vnpy/api/bitfinex/vnbitfinex.py index 23bc3a9d..8c55b08a 100644 --- a/vnpy/api/bitfinex/vnbitfinex.py +++ b/vnpy/api/bitfinex/vnbitfinex.py @@ -2,6 +2,7 @@ import json import requests +import traceback from threading import Thread from queue import Queue, Empty @@ -37,20 +38,35 @@ class BitfinexApi(object): self.restThread = Thread(target=self.runRest) self.restThread.start() + + #---------------------------------------------------------------------- + def reconnect(self): + """""" + self.ws = websocket.create_connection(WEBSOCKET_V2_URL) #---------------------------------------------------------------------- def run(self): """""" while self.active: - stream = self.ws.recv() - data = json.loads(stream) - self.onData(data) + try: + stream = self.ws.recv() + data = json.loads(stream) + self.onData(data) + except: + msg = traceback.format_exc() + self.onError(msg) + self.reconnect() #---------------------------------------------------------------------- def onData(self, data): """""" print data + #---------------------------------------------------------------------- + def onError(self, msg): + """""" + print msg + #---------------------------------------------------------------------- def sendReq(self, req): """""" diff --git a/vnpy/trader/gateway/bitfinexGateway/bitfinexGateway.py b/vnpy/trader/gateway/bitfinexGateway/bitfinexGateway.py index b8ce5be4..d51f1cbe 100644 --- a/vnpy/trader/gateway/bitfinexGateway/bitfinexGateway.py +++ b/vnpy/trader/gateway/bitfinexGateway/bitfinexGateway.py @@ -163,6 +163,7 @@ class GatewayApi(BitfinexApi): self.apiKey = '' self.secretKey = '' self.symbols = [] + self.currencys = [] self.tickDict = {} self.bidDict = {} @@ -241,6 +242,8 @@ class GatewayApi(BitfinexApi): #---------------------------------------------------------------------- def sendOrder(self, orderReq): """""" + orderReq.volume = 0.02 + self.orderId += 1 orderId = self.date + self.orderId vtOrderID = '.'.join([self.gatewayName, str(orderId)]) @@ -281,6 +284,16 @@ class GatewayApi(BitfinexApi): self.sendReq(req) + #---------------------------------------------------------------------- + def calc(self): + """""" + l = [] + for currency in self.currencys: + l.append(['wallet_exchange_' + currency]) + + req = [0, 'calc', None, l] + self.sendReq(req) + #---------------------------------------------------------------------- def onData(self, data): """""" @@ -416,11 +429,13 @@ class GatewayApi(BitfinexApi): if name == 'ws': for l in info: self.onWallet(l) + self.writeLog(u'账户资金获取成功') elif name == 'wu': self.onWallet(info) elif name == 'os': for l in info: self.onOrder(l) + self.writeLog(u'活动委托获取成功') elif name in ['on', 'ou', 'oc']: self.onOrder(info) elif name == 'te': @@ -445,6 +460,7 @@ class GatewayApi(BitfinexApi): else: pos.frozen = pos.position - float(data[-1]) + self.currencys.append(pos.symbol) self.gateway.onPosition(pos) #---------------------------------------------------------------------- @@ -479,7 +495,9 @@ class GatewayApi(BitfinexApi): self.orderLocalDict[data[0]] = order.orderID - self.gateway.onOrder(order) + self.gateway.onOrder(order) + + self.calc() #---------------------------------------------------------------------- def onTrade(self, data):