def api_get(self, method, params={}): # 现货API if self.account: apikey, secretkey = get_account_key("okex", self.account) okcoinSpot = OKCoinFuture(okcoinRESTURL, apikey, secretkey) if method == "future_userinfo_4fix": api_do = "okcoinSpot.%s()" % (method) return eval(api_do) elif method == "future_position_4fix": return okcoinSpot.future_position_4fix(params["symbol"], params["contractType"], params["type"]) elif method == "trade": return okcoinSpot.future_trade(params["symbol"], params["contractType"], params["price"], params["amount"], params["type"], params["match_price"], params["lever_rate"]) elif method == "ticker": return okcoinSpot.future_ticker(params["symbol"], params["contractType"]) elif method == "order_info": return okcoinSpot.future_orderinfo(params["symbol"], params["contractType"], params["id"]) elif method == "cancelOrder": return okcoinSpot.future_cancel(params["symbol"], params["contractType"], params["id"])
class TradeTool(object): """docstring for ClassName""" def __init__(self): self.okcoinFuture = OKCoinFuture(okcoinRESTURL, apikey, secretkey) self.depthSells = [] self.depthBuys = [] def getDepth(self): turl = 'https://www.okex.com/api/v1/future_depth.do?symbol=ltc_usd&contract_type=quarter&size=20' data = urltool.getUrl(turl) ddic = json.loads(data) buys = ddic['bids'] sells = ddic['asks'] return buys, sells #1:开多 2:开空 3:平多 4:平空 def openShort(self, pprice, pamount): print('期货开空') print time.ctime() print self.okcoinFuture.future_trade('ltc_usd', 'quarter', str(pprice), str(pamount), '2', '0', '10') def closeShort(self, pprice, pamount): print('期货平空') print time.ctime() print self.okcoinFuture.future_trade('ltc_usd', 'quarter', str(pprice), str(pamount), '4', '0', '10') def openLong(self, pprice, pamount): print('期货开多') print time.ctime() print self.okcoinFuture.future_trade('ltc_usd', 'quarter', str(pprice), str(pamount), '1', '0', '10') def closeLong(self, pprice, pamount): print('期货平多') print self.okcoinFuture.future_trade('ltc_usd', 'quarter', str(pprice), str(pamount), '3', '0', '10')
from OkcoinSpotAPI import OKCoinSpot from OkcoinFutureAPI import OKCoinFuture from HttpMD5Util import * #初始化apikey,secretkey,url apikey = '4b36c965-a577-497a-a216-665cedd68655' secretkey = 'D0AB97E9CFE3F57131162952CE368191' okcoinRESTURL = 'www.okex.com' #请求注意:国内账号需要 修改为 www.okcoin.cn #现货API okcoinSpot = OKCoinSpot(okcoinRESTURL,apikey,secretkey) #期货API okcoinFuture = OKCoinFuture(okcoinRESTURL,apikey,secretkey) okcoinFuture.future_trade(symbol='eos_usd',contractType='next_week',price=str(json_eos_next_week['asks'][0][0]), amount='1',tradeType='1',matchPrice='0',leverRate='') params = {'api_key': '4b36c965-a577-497a-a216-665cedd68655', 'amount': '1', 'symbol': 'btc_usd'} params['sign'] = buildMySign(params,secretkey) okcoinFuture.futureFundTransfer('btc_usd','1', '1') okcoinFuture.futureFundTransfer('eos_usd','1', '4.98997989') param = 'symbol=eos_usdt&contract_type=quarter' httpGet("www.okex.com", "/api/v1/future_hold_amount.do", param) okcoinFuture.future_position_4fix('eos_usd','next_week','1') def getAmount(amountJson): if amountJson['holding'] == []: return 0. else: return amountJson['holding']['buy_amount']
operateDirection = 'rise' # 根据当前ATR,计算底仓开单币数 operatePrice = sellPrice * (1 + slideProtect) useCoin = min((restCoin * operatePrice * eachLossMax) / (atrNow * leverRate), addPositionStop * restCoin) useLeverCoin = useCoin * leverRate useAmount = int( (useLeverCoin * sellPrice) / contractValue) if useAmount >= 1: try: x = okcoinFuture.future_trade( tradePair, tradeCycle, str(operatePrice), str(useAmount), '1', '0', '20') except: restart_program() print( time.strftime('%m-%d %H:%M:%S', time.localtime(time.time()))) # print(x) # orderId = json.loads(x)['order_id'] print(i, 'Bull contract Done ') print( "==== | BullPrice:{} | UseCoin:{} | RestCoin:{} |" .format(round(operatePrice, 2), useCoin, restCoin))
print okcoinFuture.future_index('ltc_usd') print u'美元人民币汇率' print okcoinFuture.exchange_rate() print u'获取预估交割价' print okcoinFuture.future_estimated_price('ltc_usd') print u'获取全仓账户信息' print okcoinFuture.future_userinfo() print u'获取全仓持仓信息' print okcoinFuture.future_position('ltc_usd','this_week') print u'期货下单' print okcoinFuture.future_trade('ltc_usd','this_week','0.1','1','1','0','20') print u'期货批量下单' print okcoinFuture.future_batchTrade('ltc_usd','this_week','[{price:0.1,amount:1,type:1,match_price:0},{price:0.1,amount:3,type:1,match_price:0}]','20') print u'期货取消订单' print okcoinFuture.future_cancel('ltc_usd','this_week','47231499') print u'期货获取订单信息' print okcoinFuture.future_orderinfo('ltc_usd','this_week','47231812','0','1','2') print u'期货逐仓账户信息' print okcoinFuture.future_userinfo_4fix() print u'期货逐仓持仓信息' print okcoinFuture.future_position_4fix('ltc_usd','this_week',1)
#多头 if buy_amount > 0: order = orders[0] buy_price_avg = order['price'] buy_available = holdingItem['buy_available'] units = buy_available / position NEXT_PRICE = round((buy_price_avg + LAST_ATR * 0.5)) print(u'多头出场平多价格:') print(OUT_PRICE) # print(units) #止损价格 if curry_price < OUT_PRICE: print(u'当前价格低于止损价格,止损多头.') print( okcoinFuture.future_trade('btc_usd', contract_type, curry_price, buy_available, '3', '1', '20')) entry_atr = 0 pass elif units < 4: print(u'多头下次加码价格:') print(NEXT_PRICE) if curry_price > NEXT_PRICE: print( okcoinFuture.future_trade('btc_usd', contract_type, curry_price, position, '1', '1', '20')) pass pass # 空头 # if sell_amount > 0:
#print (okcoinFuture.future_index('ltc_usd')) #print (u'美元人民币汇率') #print (okcoinFuture.exchange_rate()) #print (u'获取预估交割价') #print (okcoinFuture.future_estimated_price('ltc_usd')) #print (u'获取全仓账户信息') print (okcoinFuture.future_userinfo()) #print (u'获取全仓持仓信息') print (okcoinFuture.future_position('ltc_usd','quarter')) #print (u'期货下单') print (okcoinFuture.future_trade('ltc_usd','quarter','40.00','1','1','0','10')) # amount:合约张数 # price:美元计价 print (okcoinFuture.future_trade(symbol='ltc_usd',contractType='quarter', price='40',amount='1',tradeType='1',matchPrice='0',leverRate='10')) #print (u'期货批量下单') #print (okcoinFuture.future_batchTrade('ltc_usd','this_week','[{price:0.1,amount:1,type:1,match_price:0},{price:0.1,amount:3,type:1,match_price:0}]','20')) #print (u'期货取消订单') print (okcoinFuture.future_cancel('ltc_usd','quarter','6896600986')) #print (u'期货获取订单信息') print (okcoinFuture.future_orderinfo('ltc_usd','quarter','6896592048','0','1','2')) (symbol,contractType,orderId,status,currentPage,pageLength): print (okcoinFuture.future_orderinfo('ltc_usd','quarter',