四、区块量化 Okx 合约操作文件续

发布时间 2023-06-16 16:52:51作者: 金记缘

def create_limit_order(symbol='EOS-USDT-SWAP', side='buy', positionside='long', ordtype='limit', price='0',
quantity='1', message=''):
"""
全仓合约限价下单
@param symbol: 产品ID EOS-USDT-SWAP
@param side: 订单方向:buy:买, sell:卖
@param positionside: 持仓方向:long 或 short
@param ordtype: 订单类型:market:市价单、limit:限价单
@param price: 委托价格
@param quantity: 委托数量
@param message: 判断依据
@return:
"""
result = trade_api.place_order(instId=symbol, tdMode='cross', side=side, posSide=positionside, ordType=ordtype,
px=price, sz=quantity)
if result["code"] == "0":
if side == 'sell':
sides = '卖出'
else:
sides = '买入'
if positionside == 'short':
possides = '做空'
else:
possides = '做多'
return result["data"][0]["ordId"]
else:
return "市价下单失败,错误码:", result["data"][0]["sCode"], ", 错误信息:", result["data"][0]["sMsg"]


def create_market_order(symbol='EOS-USDT-SWAP', side='buy', positionside='long', ordtype='market', quantity='1',
message=''):
"""
全仓合约市价下单
@param symbol: 产品ID EOS-USDT-SWAP
@param side: 订单方向:buy:买, sell:卖
@param positionside: 持仓方向:long 或 short
@param ordtype: 订单类型:market:市价单、limit:限价单
@param quantity: 委托数量
@param message: 判断依据
@return:
"""
result = trade_api.place_order(instId=symbol, tdMode='cross', side=side, posSide=positionside, ordType=ordtype,
sz=quantity)
if result["code"] == "0":
if side == 'sell':
sides = '卖出'
else:
sides = '买入'
if positionside == 'short':
possides = '做空'
else:
possides = '做多'
return result["data"][0]["ordId"]
else:
return "市价下单失败,错误码:", result["data"][0]["sCode"], ", 错误信息:", result["data"][0]["sMsg"]


def close_long_positions(symbol='EOS-USDT-SWAP', message=''):
"""
平多仓
@param symbol: 交易对以-SWAP为结尾
@param message: 判断依据
@return:
"""
result = trade_api.close_positions(instId=symbol, mgnMode='cross', posSide='long')
if result["code"] == "0":
return "平多仓成功,交易对:" + symbol


def close_short_positions(symbol='EOS-USDT-SWAP', message=''):
"""
平空仓
@param symbol: 交易对以-SWAP为结尾
@param message: 判断依据
@return:
"""
result = trade_api.close_positions(instId=symbol, mgnMode='cross', posSide='short')
if result["code"] == "0":
return "平空仓成功,交易对:" + symbol

# 交易对集合
# symbol:交易对以-SWAP为结尾
symbol_pool = ['BTC-USDT-SWAP', 'ETH-USDT-SWAP']


def up_cross_order(symbol, message=''):
"""
市价开多仓
@param symbol: 交易对以-SWAP为结尾
@param message: 消息处理
@return:
"""
print('可做多的交易对:' + symbol)
# 获取标的可平多仓
long_closeable_amount = get_long_positions(symbol=symbol)
print('可平多仓:' + str(long_closeable_amount))
# 获取标的可平空仓
short_closeable_amount = get_short_positions(symbol=symbol)
print('可平空仓:' + str(short_closeable_amount))
available_cash = get_available_cash('USDT')
print('可用USDT:' + str(available_cash))
if available_cash > 0:
if (short_closeable_amount == 0.0) and (long_closeable_amount == 0.0):
print('OKEX 策略提示开多仓' + symbol)
price = get_orderbook_ask(symbol)
create_limit_order(symbol=symbol, side='buy', positionside='long', ordtype='market', price=str(price),
quantity='1', message=message)


def down_cross_order(symbol, message=''):
"""
市价开空仓
@param symbol: 交易对以-SWAP为结尾
@param message: 消息处理
@return:
"""
print('可做空的交易对:' + symbol)
# 获取标的可平多仓
long_closeable_amount = get_long_positions(symbol=symbol)
print('可平多仓:' + str(long_closeable_amount))
# 获取标的可平空仓
short_closeable_amount = get_short_positions(symbol=symbol)
print('可平空仓:' + str(short_closeable_amount))
available_cash = get_available_cash('USDT')
print('可用USDT:' + str(available_cash))
if available_cash > 0:
if (short_closeable_amount == 0.0) and (long_closeable_amount == 0.0):
print('OKEX 策略提示开空仓;' + symbol)
price = get_orderbook_bid(symbol)
create_limit_order(symbol=symbol, side='sell', positionside='short', ordtype='market', price=str(price),
quantity='1', message=message)