九、区块量化 binance 合约操作文件续

发布时间 2023-06-17 21:41:54作者: 金记缘

def create_limit_order(symbol='EOSUSDT', side='BUY', positionside='LONG', ordtype='LIMIT', price=0, quantity='1',
message=''):
"""
全仓合约市价下单
@param symbol: 产品ID EOSUSDT
@param side: 订单方向:BUY:买, SELL:卖
@param positionside: 持仓方向:LONG 或 SHORT
@param ordtype: 订单类型:MARKET:市价单、LIMIT:限价单
@param price: 委托价格
@param quantity: 委托数量
@param message: 判断依据
@return:
"""
quantitys = float(quantity)
result = client.futures_create_order(symbol=symbol, side=side, positionSide=positionside, type=ordtype, price=price,
quantity=quantitys, timeInForce='GTC')
if side == 'SELL':
sides = '卖出'
else:
sides = '买入'
if positionside == 'SHORT':
possides = '做空'
else:
possides = '做多'
weixin.senddata('@all', 'Binance 限价单委托下单成功,\n 订单ID:' + str(result["orderId"]) + '\n 交易对:' + symbol +
'\n 买卖方式:' + sides + '\n 购买方向:' + possides + '\n 购买价格:' + str(
price) + '\n 购买数量:' + str(quantity) + '\n 判断依据:' + message)


def create_market_order(symbol='EOSUSDT', side='BUY', positionside='LONG', ordtype='MARKET', quantity='1', message=''):
"""
全仓合约市价下单
@param symbol: 产品ID EOSUSDT
@param side: 订单方向:BUY:买, SELL:卖
@param positionside: 持仓方向:LONG 或 SHORT
@param ordtype: 订单类型:MARKET:市价单、LIMIT:限价单
@param quantity: 委托数量
@param message: 判断依据
@return:
"""
quantitys = float(quantity)
result = client.futures_create_order(symbol=symbol, side=side, positionSide=positionside,
type=ordtype, quantity=quantitys)
if side == 'SELL':
sides = '卖出'
else:
sides = '买入'
if positionside == 'SHORT':
possides = '做空'
else:
possides = '做多'
weixin.senddata('@all', 'Binance 市价单下单成功,\n 订单ID:' + str(result["orderId"]) + '\n 交易对:' + symbol +
'\n 买卖方式:' + sides + '\n 购买方向:' + possides + '\n 购买数量:' + str(quantity) +
'\n 判断依据:' + message)


'''
开平仓模式下,side和posSide需要进行组合
开多:买入开多(side 填写 buy; posSide 填写 long )
开空:卖出开空(side 填写 sell; posSide 填写 short )
平多:卖出平多(side 填写 sell;posSide 填写 long )
平空:买入平空(side 填写 buy; posSide 填写 short )
'''


def close_long_positions(symbol='EOSUSDT', price='0', message=''):
"""
平多仓
@param symbol: 交易对
@param price: 平仓价格
@param message: 判断依据
@return:
"""
client.futures_create_order(symbol=symbol, closePosition=True, type='STOP_MARKET', side='SELL', positionSide='LONG',
stopPrice=price)
weixin.senddata('@all', 'Binance 平多仓成功,\n 交易对:' + symbol + '\n 判断依据:' + message)


def close_short_positions(symbol='EOSUSDT', price='0', message=''):
"""
平空仓
@param symbol: 交易对
@param price: 平仓价格
@param message: 判断依据
@return:
"""
client.futures_create_order(symbol=symbol, closePosition=True, type='STOP_MARKET', side='BUY', positionSide='SHORT',
stopPrice=price)
weixin.senddata('@all', 'Binance 平空仓成功,\n 交易对:' + symbol + '\n 判断依据:' + message)


def up_cross_order(symbol, message=''):
"""
市价开多仓
@param symbol: 交易对
@param message: 消息处理
@return:
"""
print('可做多的交易对:' + symbol)
available_cash = get_available_cash('USDT')
print('可用USDT:' + str(available_cash))
if symbol == 'BTCUSDT':
amount = '0.01'
elif symbol == 'ETHUSDT':
amount = '0.1'
elif symbol == 'DASHUSDT':
amount = '0.2'
elif symbol == 'BCHUSDT':
amount = '0.1'
elif symbol == 'ZECUSDT':
amount = '0.2'
elif symbol == 'LTCUSDT':
amount = '0.1'
elif symbol == 'FILUSDT':
amount = '2'
elif symbol == 'XMRUSDT':
amount = '0.1'
elif symbol == 'DOTUSDT':
amount = '2'
elif symbol == 'SOLUSDT':
amount = '1'
else:
amount = '1'
if available_cash > 0:
print('Binance 市价开多仓' + symbol)
create_market_order(symbol=symbol, side='BUY', positionside='LONG', ordtype='MARKET', quantity=amount,
message=message)


def down_cross_order(symbol, message=''):
"""
市价开空仓
@param symbol: 交易对
@param message: 消息处理
@return:
"""
print('可做空的交易对:' + symbol)
available_cash = get_available_cash('USDT')
print('可用USDT:' + str(available_cash))
if symbol == 'BTCUSDT':
amount = '0.01'
elif symbol == 'ETHUSDT':
amount = '0.1'
elif symbol == 'DASHUSDT':
amount = '0.2'
elif symbol == 'BCHUSDT':
amount = '0.1'
elif symbol == 'ZECUSDT':
amount = '0.2'
elif symbol == 'LTCUSDT':
amount = '0.1'
elif symbol == 'FILUSDT':
amount = '2'
elif symbol == 'XMRUSDT':
amount = '0.1'
elif symbol == 'DOTUSDT':
amount = '2'
elif symbol == 'SOLUSDT':
amount = '1'
else:
amount = '1'
if available_cash > 0:
print('Binance 市价开空仓:' + symbol)
create_market_order(symbol=symbol, side='SELL', positionside='SHORT', ordtype='MARKET', quantity=amount,
message=message)