十二、区块量化 gate.io 合约操作文件

新增cross_order.py 文件

# -*- coding: utf-8 -*-import pandas as pdfrom gate_api import ApiClient, Configuration, FuturesApi, FuturesOrderfrom gate_api.exceptions import GateApiExceptionfrom gate_api.config import key, secret, hostimport weixinimport time
pd.set_option('expand_frame_repr', False)
config = Configuration(key=key, secret=secret, host=host)
futures_api = FuturesApi(ApiClient(config))
# 交易对集合# symbol:交易对
symbol_pool = ['BTC_USDT', 'ETH_USDT']
def get_orderbook_ask(symbol='EOS_USDT'):""" 查看买一的价格 @param symbol: 币种 @return: """ result = futures_api.list_futures_order_book(settle='usdt', contract=symbol)return float(result.asks[0].p)def get_orderbook_bid(symbol='EOS_USDT'):""" 查看卖一的价格 @param symbol: 币种 @return: """ result = futures_api.list_futures_order_book(settle='usdt', contract=symbol)return float(result.bids[0].p)
def get_available_cash(symbol='usdt'):""" 查看账户余额 @param symbol: 币种 @return: """ available = "0" try:
futures_account = futures_api.list_futures_accounts(settle=symbol)
available = futures_account.availableexcept GateApiException as ex:if ex.label != "USER_NOT_FOUND":raise exreturn float(available)def get_candlesticks(symbol='EOS_USDT', interval='5m', limit='30'):""" 查看历吏价格 @param symbol:交易对 @param interval: K线数据 @param limit: 显示条数 @return: """ limits = int(limit)
tickers = futures_api.list_futures_candlesticks(settle='usdt', contract=symbol, limit=limits, interval=interval)
output_list = []for item in tickers:
sub_dict = {'time': item.t, 'open': item.o, 'high': item.h, 'low': item.l, 'close': item.c, 'vol': item.v}
output_list.append(sub_dict)
df = pd.DataFrame(data=output_list, columns=['time', 'open', 'high', 'low', 'close', 'vol'])
df['symbol'] = symbol
df['time'] = pd.to_datetime(df['time'], unit='s', utc=True).dt.tz_convert('Asia/Shanghai')# 删除重复数据 df.drop_duplicates(['time'], inplace=True)# 将数值数据转为float型,便于后续处理 convert_list = ['open', 'high', 'low', 'close', 'vol']
df[convert_list] = df[convert_list].astype(float)#df.sort_values(by=['symbol', 'time'], ignore_index=True, ascending=True, inplace=True) # 重置索引 df.reset_index(drop=True, inplace=True)return df
def get_long_positions(symbol='EOS_USDT'):""" 查看合约多仓持仓信息 @param symbol:交易对 @return: """ position_size = 0 try:
position = futures_api.get_dual_mode_position(settle='usdt', contract=symbol)for pos in position:if pos.mode == 'dual_long':
position_size = pos.sizeexcept GateApiException as ex:if ex.label != "POSITION_NOT_FOUND":raise exreturn position_sizedef get_short_positions(symbol='EOS_USDT'):""" 查看合约空仓持仓信息 @param symbol:交易对 @return: """ position_size = 0 try:
position = futures_api.get_dual_mode_position(settle='usdt', contract=symbol)for pos in position:if pos.mode == 'dual_short':
position_size = pos.sizeexcept GateApiException as ex:if ex.label != "POSITION_NOT_FOUND":raise exreturn position_sizedef set_leverage(symbol='EOS_USDT', leverage='25'):""" 设置合约杠杆倍数 @param symbol:交易对 @param leverage:倍数 @return: """ long_positions = get_long_positions(symbol)
short_positions = get_short_positions(symbol)if not long_positions and not short_positions:
futures_api.update_dual_mode_position_leverage(settle='usdt', contract=symbol, leverage=leverage)else:
print('已持仓中,无法修改杠杆倍数')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值