if float(freeinfo[symbol]) != 0: if symbol == 'btc': quote = 1.0 elif symbol == 'usdt': quote = 1.0 / float( okcoinSpot.ticker('btc_usdt')['ticker']['last']) else: quote = float( okcoinSpot.ticker(symbol + '_btc')['ticker']['last']) # 统计订单收益 orderbuffer = pd.DataFrame() pagenum = 0 while True: try: orderhis = okcoinSpot.orderHistory( symbol + '_btc', 1, pagenum, 200) orderhis = json.loads(orderhis) if orderhis['result'] and len( orderhis['orders']) > 0: orderbuffer = orderbuffer.append( pd.DataFrame(orderhis['orders']), ignore_index=True) buyorder = orderbuffer[orderbuffer['type'] == 'buy'] sellorder = orderbuffer[orderbuffer['type'] == 'sell'] if len(buyorder) == 0 or len(sellorder) == 0: print(pagenum)
print okcoinSpot.trade('ltc_usd','buy','0.1','0.2') print u' 现货批量下单 ' print okcoinSpot.batchTrade('ltc_usd','buy','[{price:0.1,amount:0.2},{price:0.1,amount:0.2}]') print u' 现货取消订单 ' print okcoinSpot.cancelOrder('ltc_usd','18243073') print u' 现货订单信息查询 ' print okcoinSpot.orderinfo('ltc_usd','18243644') print u' 现货批量订单信息查询 ' print okcoinSpot.ordersinfo('ltc_usd','18243800,18243801,18243644','0') print u' 现货历史订单信息查询 ' print okcoinSpot.orderHistory('ltc_usd','0','1','2') print u' 期货行情信息' print okcoinFuture.future_ticker('ltc_usd','this_week') print u' 期货市场深度信息' print okcoinFuture.future_depth('ltc_usd','this_week','6') print u'期货交易记录信息' print okcoinFuture.future_trades('ltc_usd','this_week') print u'期货指数信息' print okcoinFuture.future_index('ltc_usd') print u'美元人民币汇率' print okcoinFuture.exchange_rate()
class Ok_api: def __init__(self, mykey=None, mysecret=None): if mykey and mysecret: self.mykey,self.mysecret = mykey,mysecret else: filename = CURRENTURL+r'\key' with open(filename,'r',encoding='utf-8') as f: data = f.read() self.mykey,self.mysecret = data.split('\n') self.mykey = self.mykey.strip() self.mysecret = self.mysecret.strip() okcoinRESTURL = 'www.okb.com' # print(self.mykey,self.mysecret) self.okcoinSpot = OKCoinSpot(okcoinRESTURL,self.mykey,self.mysecret) def __api_public_call(self,path,params=''): headers = { 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36 Maxthon/5.1.3.2000', } url = 'https://www.okb.com/api/v1/' + path + params req = urllib.request.Request(url,headers=headers) res = urllib.request.urlopen(req, timeout=10) doc = json.loads(res.read().decode('utf-8')) # .decode('gbk', 'ignore') return doc # try: # except Exception as ex: # print(sys.stderr, 'ok request public_ex: ', ex) # return None def trades(self,symbol='btc_usdt',since=0): ''' return (tid,symbol,date,price,amount,type) max_len 60 ''' data = self.okcoinSpot.trades(symbol,since) lst = [da['tid'] for da in data] return [(da['tid'],symbol,da['date'],da['price'],da['amount'],da['type']) for da in data[::-1]] # try: # except Exception as e: # # raise e # print('ok_api_ trades' ,e) # return [] def kline(self,symbol,type,size=500): ''' symbol type size since https://www.okb.com/api/v1/kline.do ''' path = 'kline.do?' params = "symbol=%s&type=%s&size=%s" %(symbol,type,size) obj = self.__api_public_call(path, params) return obj # try: # except Exception as ex: # print(sys.stderr, 'ok %s exception ,'%path,ex) # return None def depth(self,symbol = ''): data = self.okcoinSpot.depth(symbol) data =[data['asks'][::-1],data['bids']] return data def balance(self): data = self.okcoinSpot.userinfo() data_free = data['info']['funds']['free'] data_freezed = data['info']['funds']['freezed'] data = filter( lambda x:data_free[x] != '0',data_free) data_free = { da:data_free[da] for da in data_free if data_free[da] != '0'} data_freezed = { da:data_freezed[da] for da in data_freezed if data_freezed[da] != '0'} return data_free,data_freezed def order(self,symbol,price,amount,type): data = self.okcoinSpot.trade(symbol,price,amount,type) return data def deal_order_data(self,data,lst): resl = [] for da in data: d = {} for l in lst: if l == 'order_id': d['id'] = da[l] else: d[l] = da[l] resl.append(d) return resl def getOrder(self,id,symbol=None): ''' {'orders': [{'amount': 1, 'avg_price': 0, 'create_date': 1536112711000, 'deal_amount': 0, 'order_id': 864345207, 'orders_id': 864345207, 'price': 10.0, 'status': 0, 'symbol': 'eos_usdt', 'type': 'sell'}], 'result': True} ''' data = self.okcoinSpot.orderinfo(symbol,id) data = data['orders'] data = self.deal_order_data(data,['amount','price','deal_amount','avg_price','create_date','order_id','type']) [da.update({'deal_money':da['deal_amount']*da['avg_price']}) for da in data] if len(data) > 1: raise ValueError(data) return data[0] def unfinished_orders_list(self,symbol): '''{'currency_page': 1, 'orders': [{'amount': 1, 'avg_price': 0, 'create_date': 1536112711000, 'deal_amount': 0, 'order_id': 864345207, 'orders_id': 864345207, 'price': 10.0, 'status': 0, 'symbol': 'eos_usdt', 'type': 'sell'}], 'page_length': 200, 'result': True, 'total': 1} [{'amount': 1, 'avg_price': 0, 'create_date': 1536112711000, 'deal_amount': 0, 'deal_money': 0, 'order_id': 864345207, 'price': 10.0, 'type': 'sell'}] ''' data = self.okcoinSpot.orderHistory(symbol) if not data.get('orders'): return data data = data['orders'] data = self.deal_order_data(data,['amount','price','deal_amount','avg_price','create_date','order_id','type']) [da.update({'deal_money':da['deal_amount']*da['avg_price']}) for da in data] return data def cancelOrder(self,id,symbol): ''' {'orders': [{'amount': 1, 'avg_price': 0, 'create_date': 1536112711000, 'deal_amount': 0, 'order_id': 864345207, 'orders_id': 864345207, 'price': 10.0, 'status': 0, 'symbol': 'eos_usdt', 'type': 'sell'}], 'result': True} ''' data = self.okcoinSpot.ordersinfo(symbol,id) if data.get('result') == True: return True print(data) return False
print (okcoinSpot.trade('btc_cny','buy','0.1','0.2')) #print (u' 现货批量下单 ') #print (okcoinSpot.batchTrade('btc_cny','buy','[{price:0.1,amount:0.2},{price:0.1,amount:0.2}]')) #print (u' 现货取消订单 ') #print (okcoinSpot.cancelOrder('btc_cny','18243073')) #print (u' 现货订单信息查询 ') #print (okcoinSpot.orderinfo('btc_cny','18243644')) #print (u' 现货批量订单信息查询 ') #print (okcoinSpot.ordersinfo('btc_cny','18243800,18243801,18243644','0')) print (u' 现货历史订单信息查询 ') print (okcoinSpot.orderHistory('btc_cny','0','1','2')) #print (u' 期货行情信息') #print (okcoinFuture.future_ticker('btc_cny','this_week')) #print (u' 期货市场深度信息') #print (okcoinFuture.future_depth('btc_cny','this_week','6')) #print (u'期货交易记录信息') #print (okcoinFuture.future_trades('btc_cny','this_week')) #print (u'期货指数信息') #print (okcoinFuture.future_index('btc_cny')) #print (u'美元人民币汇率') #print (okcoinFuture.exchange_rate())
if j[0] == "filled": filled = j[1] if j[0] == "maxListings": maxListings = j[1] print( "querying okcoin for orderHistory on pair ", sys.argv[2], " : since (", since, "), filled (", filled, "), maxListings (", maxListings, ")", ) print(okcoinSpot.orderHistory(sys.argv[2], filled, since, maxListings)) ############################# trades ################################# # input params : since (integer, refers to 'tid' or timestamp depending on exchange) # output format : elif sys.argv[3] == "trades": since = 0 if sys.argv[1] == "okcoin": okcoinSpot = OKCoinSpot(okcoinRESTURL, secrets.okCoinKey, secrets.okCoinSecret) for i in range(len(sys.argv[4:])): j = sys.argv[4 + i].strip("'<>()[]{}").replace("'", '"').split(":") if j[0] == "since": since = j[1] print("querying okcoin for trades on pair ", sys.argv[2], " : since (", since, ")") print(okcoinSpot.trades(sys.argv[2], since))
#print (okcoinSpot.trade(coin,'buy','0.1','0.2')) #print (u' 现货批量下单 ') #print (okcoinSpot.batchTrade(coin,'buy','[{price:0.1,amount:0.2},{price:0.1,amount:0.2}]')) #print (u' 现货取消订单 ') #print (okcoinSpot.cancelOrder(coin,'18243073')) #print (u' 现货订单信息查询 ') print(okcoinSpot.orderinfo(coin, '-1')) # print (u' 现货批量订单信息查询 ') # print (okcoinSpot.ordersinfo(coin,'18243800,18243801,18243644','0')) print(u' 现货历史订单信息查询 ') print(okcoinSpot.orderHistory(coin, '1', '1', '20')) #print (u' 期货行情信息') #print (okcoinFuture.future_ticker(coin,'this_week')) #print (u' 期货市场深度信息') #print (okcoinFuture.future_depth('btc_usd','this_week','6')) #print (u'期货交易记录信息') #print (okcoinFuture.future_trades(coin,'this_week')) #print (u'期货指数信息') #print (okcoinFuture.future_index(coin)) #print (u'美元人民币汇率') #print (okcoinFuture.exchange_rate())