Ejemplo n.º 1
0
            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)
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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())
Ejemplo n.º 5
0
            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))
Ejemplo n.º 6
0
#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())