Make OKX API Transactions Easier
Project description
Okx_Trade 说明文档
1 Okx_Trade介绍
Okx_Trade封装了OKX中现货(SPOT)、永续合约(SWAP)的常用函数,降低量化交易的难度。
2 安装Okx_Trade
GITHUB:https://www.github.com/pyted/okx_trade
pip3 install okx_trade
3 快速开始
1.获取现货现货交易BTC-USDT的价格,降价2%挂单买入,买入金额为10000USDT,挂单时间为2小时,如果超时则取消订单。
from okx_trade import OkxSPOT
from pprint import pprint
if __name__ == '__main__':
okxSPOT = OkxSPOT(
key='****',
secret='****',
passphrase='****',
)
# 产品
instId = 'BTC-USDT'
# 开仓金额
openMoney = 10000
# 购买价格
askPx = okxSPOT.market.get_ticker(instId)['data']['askPx'] # 卖1价格
askPx = float(askPx)
openPrice = askPx * 0.98 # 降价2%
print(openPrice)
# 挂单时间
timeout = 60 * 60 * 2 # 单位秒
# 超时是否取消订单
cancel = True
# 是否堵塞模式
block = True
# 限价单开仓
result = okxSPOT.trade.open_limit(
instId=instId, # 产品
openPrice=openPrice, # 开仓价格
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
timeout=timeout, # 等待订单成功的超时时间
cancel=True, # 订单超时后是否取消
)
pprint(result)
2.获取永续合约BTC-USDT-SWAP的价格,降价5%,采用逐仓、10倍杠杆、开仓金额10000USDT挂单,挂单时间为2小时,如果超时则取消。
采用异步的方式管理这个订单,并设置订单成功或失败后的回调函数
from pprint import pprint
from okx_trade import OkxSWAP
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'instId': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'instId': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
okxSWAP = OkxSWAP(
key='****',
secret='****',
passphrase='****',
)
# 产品
instId = 'BTC-USDT-SWAP'
# 开仓金额
openMoney = 10000
# 购买价格
askPx = okxSWAP.market.get_ticker(instId)['data']['askPx'] # 卖1价格
askPx = float(askPx)
openPrice = askPx * 0.98 # 降价2%
print(openPrice)
# 挂单时间
timeout = 60 * 60 * 2 # 单位秒
# 超时是否取消订单
cancel = True
# 是否堵塞模式
block = True
# 限价单开仓
result = okxSWAP.trade.open_limit(
instId=instId, # 产品
openPrice=openPrice, # 开仓价格
tdMode='isolated', # 持仓方式 isolated:逐仓 cross:全仓
posSide='long', # 持仓方向 long:多单 short:空单
lever=10, # 杠杆
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantityCT必须输入其中一个 优先级:quantity > openMoney
quantityCT=None, # 合约张数为空
block=True, # 是否以堵塞的模式
timeout=timeout, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
newThread=False, # 是否开启一个新的线程维护这个订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
)
3.对于永续合约以当前BTC-USDT-SWAP的价格,止盈20%全部挂单买入平空,超时时间2小时,超时后取消订单,并设置回调函数。
from pprint import pprint
from okx_trade import OkxSWAP
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'instId':<产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'instId':<产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
okxSWAP = OkxSWAP(
key='****',
secret='****',
passphrase='****',
)
# 产品
instId = 'BTC-USDT-SWAP'
# 挂单时间
timeout = 60 * 60 * 2 # 单位秒
# 超时是否取消订单
cancel = True
# 是否堵塞模式
block = True
# 限价单开仓
result = okxSWAP.trade.close_limit(
instId=instId, # 产品
tpRate=0.2, # 止盈率 20%
# 平多 positionSide="LONG": closePrice = askPx * (1 + abs(tpRate))
# 平空 positionSide="SHORT": closePrice = bidPx * (1 - abs(tpRate))
tdMode='isolated', # 持仓方式 isolated:逐仓 cross:全仓
posSide='long', # 持仓方向 long:多单 short:空单
quantityCT='all', # 合约张数为空 'all' 表示全部
block=True, # 是否以堵塞的模式
timeout=60 * 60 * 2, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
newThread=False, # 是否开启一个新的线程维护这个订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
)
pprint(result)
4 现货产品 OkxSPOT
4.1 现货账户
便捷函数:
函数名 | 说明 |
---|---|
get_balancesMap | 查看账户余额字典 |
get_balances | 查看账户余额列表 |
get_balance | 获取单个币种的余额 |
from okx_trade import OkxSPOT
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取产品的余额
get_balance1 = okxSPOT.account.get_balance(instId='MANA-USDT')
pprint(get_balance1)
# 获取币种的余额
get_balance2 = okxSPOT.account.get_balance(ccy='USDT')
pprint(get_balance2)
# 获取全部资产余额列表
get_balances = okxSPOT.account.get_balances()
pprint(get_balances)
# 获取全部资产余额字典
get_balancesMap = okxSPOT.account.get_balancesMap()
pprint(get_balancesMap)
4.2 现货行情
4.2.1 现货产品规则信息
便捷函数:
函数名 | 说明 |
---|---|
get_exchangeInfos | 获取全部现货交易规则与交易对 |
get_exchangeInfo | 获取单个现货交易规则与交易对 |
get_symbols_trading_on | 获取可以交易的现货产品列表 |
get_symbols_trading_off | 获取不可交易的现货产品列表 |
from okx_trade import OkxSPOT
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取现货全部产品的交易规则
get_exchangeInfos = okxSPOT.market.get_exchangeInfos()
pprint(get_exchangeInfos)
# 获取单个现货产品的交易规则
get_exchangeInfo = okxSPOT.market.get_exchangeInfo(symbol='BTC-USDT')
pprint(get_exchangeInfo)
# 获取可以交易的现货产品列表
get_symbols_trading_on = okxSPOT.market.get_symbols_trading_on()
pprint(get_symbols_trading_on)
# 获取不可以交易的现货产品列表
get_symbols_trading_off = okxSPOT.market.get_symbols_trading_off()
pprint(get_symbols_trading_off)
4.2.2 现货实时价格
便捷函数:
函数名 | 说明 |
---|---|
get_tickers | 获取全部现货产品的实时行情数据列表 |
get_tickersMap | 获取全部现货产品的实时行情数据字典 |
get_ticker | 获取单个现货产品的实时行情数据 |
get_books | 获取单个现货产品的交易深度 |
get_books_lite | 获取单个现货产品的轻量交易深度 |
from okx_trade import OkxSPOT
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取全部现货产品的实时行情数据列表
get_tickers = okxSPOT.market.get_tickers()
pprint(get_tickers)
# 获取全部现货产品的实时行情数据字典
get_tickersMap = okxSPOT.market.get_tickersMap()
pprint(get_tickersMap)
# 获取单个现货产品的实时行情数据
get_ticker = okxSPOT.market.get_ticker('BTC-USDT')
pprint(get_ticker)
# 获取单个现货产品的交易深度
get_books = okxSPOT.market.get_books('BTC-USDT', sz=10)
pprint(get_books)
# 获取单个现货产品的轻量交易深度
get_books_lite = okxSPOT.market.get_books_lite('BTC-USDT')
pprint(get_books_lite)
4.2.3 现货历史K线
便捷函数:
函数名 | 说明 |
---|---|
get_history_candle | 获取产品的历史K线数据 |
get_history_candle_latest | 获取产品指定数量的最新历史K线数据 |
get_history_candle_by_date | 获取产品指定日期的历史K线数据 |
from okx_trade import OkxSPOT
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取产品的历史K线数据
get_history_candle = okxSPOT.market.get_history_candle(
symbol='BTC-USDT',
start='2023-01-01 00:00:00',
end='2023-01-01 23:59:00',
bar='1m',
)
pprint(get_history_candle)
# 获取产品指定数量的最新历史K线数据
get_history_candle_latest = okxSPOT.market.get_history_candle_latest(
symbol='BTC-USDT',
length=1440,
bar='1m',
)
pprint(get_history_candle_latest)
# 获取产品指定日期的历史K线数据
get_history_candle_by_date = okxSPOT.market.get_history_candle_by_date(
symbol='BTC-USDT',
date='2023-01-01',
bar='1m',
)
pprint(get_history_candle_by_date)
4.3 现货交易
4.3.1 现货交易基础订单
便捷函数:
函数名 | 说明 |
---|---|
set_order | 普通下单购买 |
get_order | 查询订单 |
get_orders_pending | 获取未成交订单列表 |
get_orders_pending_open | 获取未成交的开仓订单列表 |
get_orders_pending_close | 获取未成交的平仓订单列表 |
cancel_order | 撤销订单 |
wait_order_FILLED | 等待订单成交 |
from okx_trade import OkxSPOT
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取未成交订单列表
get_orders_pending = okxSPOT.trade.get_orders_pending()
pprint(get_orders_pending)
# 获取未成交的开仓订单列表
get_orders_pending_open = okxSPOT.trade.get_orders_pending_open()
pprint(get_orders_pending_open)
# 获取未成交的平仓订单列表
get_orders_pending_close = okxSPOT.trade.get_orders_pending_close()
pprint(get_orders_pending_close)
# 等待订单成交
wait_order_FILLED = okxSPOT.trade.wait_order_FILLED(
instId='MANA-USDT',
ordId='547717986975911936',
timeout=10,
)
pprint(wait_order_FILLED)
# 获取订单信息
get_order = okxSPOT.trade.get_order(
instId='MANA-USDT',
ordId='547717986975911936',
)
pprint(get_order)
# 取消订单
cancel_order = okxSPOT.trade.cancel_order(
instId='MANA-USDT', ordId='547717986975911936'
)
pprint(cancel_order)
4.3.2 现货下单价格与数量
便捷函数:
函数名 | 说明 |
---|---|
round_quantity | 圆整下单数量 |
round_price | 圆整开仓价格 |
get_quantity | 根据开仓金额、开仓价格与杠杆计算最大可开仓数量 |
quantity_to_f | 将下单数量转化为字符串 |
price_to_f | 将下单价格转化为字符串 |
from pprint import pprint
from okx_trade import OkxSPOT
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 圆整下单数量
round_quantity_result = okxSPOT.trade.round_quantity(
quantity=0.00023234234234,
instId='MANA-USDT',
ordType='market', # market | limit
)
pprint(round_quantity_result)
# 圆整下单价格
round_price_result = okxSPOT.trade.round_price(
price=20.123123123,
instId='MANA-USDT',
type='FLOOR', # FLOOR:向下圆整 CEIL:向上圆整
)
pprint(round_price_result)
# 根据开仓金额、开仓价格与杠杆计算最大可开仓数量
get_quantity_result = okxSPOT.trade.get_quantity(
openPrice=2.123123,
openMoney=20,
instId='MANA-USDT',
ordType='limit',
leverage=1
)
pprint(get_quantity_result)
# 将下单数量转化为字符串
quantity_to_f_result = okxSPOT.trade.quantity_to_f(
quantity=get_quantity_result['data'],
instId='MANA-USDT',
)
pprint(quantity_to_f_result)
# 将下单价格转化为字符串
price_to_f_result = okxSPOT.trade.price_to_f(
price=round_price_result['data'],
instId='MANA-USDT',
)
pprint(price_to_f_result)
4.3.3 现货限单价开仓
便捷函数:
函数名 | 说明 |
---|---|
open_limit | 限价单开仓 |
from okx_trade import OkxSPOT
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 限价单开仓
open_limit = okxSPOT.trade.open_limit(
instId='MANA-USDT', # 产品
openPrice=0.1, # 开仓价格
openMoney=4, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
# quantity=10, # 开仓数量
block=True, # 是否以堵塞的模式
timeout=5, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
newThread=False, # 是否开启一个新的线程维护这个订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
)
4.3.4 现货市价单开仓
便捷函数:
函数名 | 说明 |
---|---|
open_market | 市价单开仓 |
from okx_trade import OkxSPOT
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 市价单开仓
open_market_result = okxSPOT.trade.open_market(
instId='MANA-USDT', # 产品
quantity=3, # 开仓数量
# openMoney=3, 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
timeout=10, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
4.3.5 现货限价单平仓
便捷函数:
函数名 | 说明 |
---|---|
close_limit | 限价单平仓 |
from okx_trade import OkxSPOT
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 市价单开仓
open_market_result = okxSPOT.trade.open_market(
instId='MANA-USDT', # 产品
quantity=3, # 开仓数量
# openMoney=3, 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
timeout=10, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
4.3.6 现货市价单平仓
便捷函数:
函数名 | 说明 |
---|---|
close_market | 市价单平仓 |
from okx_trade import OkxSPOT
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 限价单平仓
okxSPOT.trade.close_limit(
instId='MANA-USDT', # 产品
# closePrice=1000, # 平仓价格 closePrice 和 tpRate必须填写其中一个
tpRate=0.1, # 挂单止盈率
quantity='all', # 平仓数量
block=True, # 是否堵塞
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 未完全成交是否取消订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5 永续合约 OkxSWAP
5.1 永续账户
便捷函数:
函数名 | 说明 |
---|---|
get_balance | 获取币种的余额 |
set_position_mode | 设置持仓模式 |
set_leverage | 设置杠杆 |
get_leverage | 获取杠杆 |
from okx_trade import OkxSWAP
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取币种的余额
get_balance = okxSWAP.account.get_balance(ccy='USDT')
pprint(get_balance)
# 设置持仓模式
set_position_mode = okxSWAP.account.set_position_mode(
posMode='long_short_mode',
)
pprint(set_position_mode)
# 设置逐仓杠杆(多仓)
set_leverage_isolated_long = okxSWAP.account.set_leverage(
lever=4,
instId='MANA-USDT-SWAP',
mgnMode='isolated',
posSide='long',
)
pprint(set_leverage_isolated_long)
# 设置逐仓杠杆(空仓)
set_leverage_isolated_short = okxSWAP.account.set_leverage(
lever=5,
instId='MANA-USDT-SWAP',
mgnMode='isolated',
posSide='short',
)
pprint(set_leverage_isolated_short)
# 获取逐仓杠杆
get_leverage_isolated = okxSWAP.account.get_leverage(
instId='MANA-USDT-SWAP',
mgnMode='isolated',
)
pprint(get_leverage_isolated)
# 设置全仓杠杆
set_leverage_cross = okxSWAP.account.set_leverage(
lever=4,
instId='MANA-USDT-SWAP',
mgnMode='cross',
posSide='',
)
pprint(set_leverage_cross)
# 获取逐仓杠杆
get_leverage_cross = okxSWAP.account.get_leverage(
instId='MANA-USDT-SWAP',
mgnMode='cross',
)
pprint(get_leverage_cross)
5.2 永续行情
5.2.1 永续产品规则信息
便捷函数:
函数名 | 说明 |
---|---|
get_exchangeInfos | 获取全部永续合约交易规则与交易对 |
get_exchangeInfo | 获取单个永续合约交易规则与交易对 |
get_symbols_trading_on | 获取可以交易的永续合约产品列表 |
get_symbols_trading_off | 获取不可交易的永续合约产品列表 |
from okx_trade import OkxSWAP
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取永续合约全部产品的交易规则
get_exchangeInfos = okxSWAP.market.get_exchangeInfos()
pprint(get_exchangeInfos)
# 获取单个永续合约产品的交易规则
get_exchangeInfo = okxSWAP.market.get_exchangeInfo(symbol='BTC-USDT-SWAP')
pprint(get_exchangeInfo)
# 获取可以交易的永续合约产品列表
get_symbols_trading_on = okxSWAP.market.get_symbols_trading_on()
pprint(get_symbols_trading_on)
# 获取不可以交易的永续合约产品列表
get_symbols_trading_off = okxSWAP.market.get_symbols_trading_off()
pprint(get_symbols_trading_off)
5.2.2 永续实时价格
便捷函数:
函数名 | 说明 |
---|---|
get_tickers | 获取全部永续合约的实时行情数据列表 |
get_tickersMap | 获取全部永续合约的实时行情数据字典 |
get_ticker | 获取单个永续合约产品的实时行情数据 |
get_books | 获取单个永续合约产品的交易深度 |
get_books_lite | 获取单个永续合约产品的轻量交易深度 |
from okx_trade import OkxSWAP
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取全部永续合约产品的实时行情数据列表
get_tickers = okxSWAP.market.get_tickers()
pprint(get_tickers)
# 获取全部永续合约产品的实时行情数据字典
get_tickersMap = okxSWAP.market.get_tickersMap()
pprint(get_tickersMap)
# 获取单个永续合约产品的实时行情数据
get_ticker = okxSWAP.market.get_ticker('BTC-USDT-SWAP')
pprint(get_ticker)
# 获取单个永续合约产品的交易深度
get_books = okxSWAP.market.get_books('BTC-USDT-SWAP', sz=10)
pprint(get_books)
# 获取单个永续合约产品的轻量交易深度
get_books_lite = okxSWAP.market.get_books_lite('BTC-USDT-SWAP')
pprint(get_books_lite)
5.2.3 永续历史K线
便捷函数:
函数名 | 说明 |
---|---|
get_history_candle | 获取产品的历史K线数据 |
get_history_candle_latest | 获取产品指定数量的最新历史K线数据 |
get_history_candle_by_date | 获取产品指定日期的历史K线数据 |
from okx_trade import OkxSWAP
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取产品的历史K线数据
get_history_candle = okxSWAP.market.get_history_candle(
symbol='BTC-USDT-SWAP',
start='2023-01-01 00:00:00',
end='2023-01-01 23:59:00',
bar='1m',
)
pprint(get_history_candle)
# 获取产品指定数量的最新历史K线数据
get_history_candle_latest = okxSWAP.market.get_history_candle_latest(
symbol='BTC-USDT-SWAP',
length=1440,
bar='1m',
)
pprint(get_history_candle_latest)
# 获取产品指定日期的历史K线数据
get_history_candle_by_date = okxSWAP.market.get_history_candle_by_date(
symbol='BTC-USDT-SWAP',
date='2023-01-01',
bar='1m',
)
pprint(get_history_candle_by_date)
5.3 永续交易
5.3.1 永续交易基础订单
便捷函数:
函数名 | 说明 |
---|---|
set_order | 普通下单购买 |
get_order | 查询订单 |
get_orders_pending | 获取未成交订单列表 |
get_orders_pending_open | 获取未成交的开仓订单列表 |
get_orders_pending_close | 获取未成交的平仓订单列表 |
cancel_order | 撤销订单 |
wait_order_FILLED | 等待订单成交 |
from okx_trade import OkxSWAP
from pprint import pprint
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 获取未成交订单列表
get_orders_pending = okxSWAP.trade.get_orders_pending()
pprint(get_orders_pending)
# 获取未成交的开仓订单列表
get_orders_pending_open = okxSWAP.trade.get_orders_pending_open()
pprint(get_orders_pending_open)
# 获取未成交的平仓订单列表
get_orders_pending_close = okxSWAP.trade.get_orders_pending_close()
pprint(get_orders_pending_close)
# 等待订单成交
wait_order_FILLED = okxSWAP.trade.wait_order_FILLED(
instId='MANA-USDT-SWAP',
ordId='547717986975911936',
timeout=10,
)
pprint(wait_order_FILLED)
# 获取订单信息
get_order = okxSWAP.trade.get_order(
instId='MANA-USDT-SWAP',
ordId='547717986975911936',
)
pprint(get_order)
# 取消订单
cancel_order = okxSWAP.trade.cancel_order(
instId='MANA-USDT-SWAP', ordId='547717986975911936'
)
pprint(cancel_order)
5.3.2 永续下单价格与数量
便捷函数:
函数名 | 说明 |
---|---|
round_quantity | 圆整下单数量 |
round_price | 圆整下单价格 |
get_quantity | 根据开仓金额、开仓价格与杠杆计算最大可开仓数量 |
quantity_to_f | 将下单数量转化为字符串 |
price_to_f | 将下单价格转化为字符串 |
from pprint import pprint
from okx_trade import OkxSWAP
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 圆整下单数量
round_quantity_result = okxSWAP.trade.round_quantity(
quantity=0.00023234234234,
instId='MANA-USDT-SWAP',
ordType='market', # market | limit
)
pprint(round_quantity_result)
# 圆整下单价格
round_price_result = okxSWAP.trade.round_price(
price=20.123123123,
instId='MANA-USDT-SWAP',
type='FLOOR', # FLOOR:向下圆整 CEIL:向上圆整
)
pprint(round_price_result)
# 根据开仓金额、开仓价格与杠杆计算最大可开仓数量
get_quantity_result = okxSWAP.trade.get_quantity(
openPrice=2.123123,
openMoney=20,
instId='MANA-USDT-SWAP',
ordType='limit',
leverage=1
)
pprint(get_quantity_result)
# 将下单数量转化为字符串
quantity_to_f_result = okxSWAP.trade.quantity_to_f(
quantity=get_quantity_result['data'],
instId='MANA-USDT-SWAP',
)
pprint(quantity_to_f_result)
# 将下单价格转化为字符串
price_to_f_result = okxSWAP.trade.price_to_f(
price=round_price_result['data'],
instId='MANA-USDT-SWAP',
)
pprint(price_to_f_result)
5.3.3 永续限单价开仓
便捷函数:
函数名 | 说明 |
---|---|
open_limit | 限价单开仓 |
from okx_trade import OkxSWAP
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 限价单开仓
open_limit = okxSWAP.trade.open_limit(
instId='MANA-USDT-SWAP', # 产品
tdMode='isolated', # 持仓方式 isolated:逐仓 cross:全仓
posSide='long', # 持仓方向 long:多单 short:空单
lever=1, # 杠杆倍数
openPrice=0.1, # 开仓价格
openMoney=4, # 开仓金额 开仓金额openMoney和开仓数量quantityCT必须输入其中一个 优先级:quantityCT > openMoney
# quantityCT=1, # 开仓数量 注意:quantityCT是合约的张数,不是货币数量
block=True, # 是否以堵塞的模式
timeout=5, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
newThread=False, # 是否开启一个新的线程维护这个订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
)
5.3.4 永续市价单开仓
便捷函数:
函数名 | 说明 |
---|---|
open_market | 市价单开仓 |
from okx_trade import OkxSWAP
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 市价单开仓
open_market_result = okxSWAP.trade.open_market(
instId='MANA-USDT-SWAP', # 产品
tdMode='isolated', # 持仓方式 isolated:逐仓 cross:全仓
posSide='long', # 持仓方向 long:多单 short:空单
lever=1, # 杠杆倍数
openMoney=4, # 开仓金额 开仓金额openMoney和开仓数量quantityCT必须输入其中一个 优先级:quantityCT > openMoney
# quantityCT=1, # 开仓数量 注意:quantityCT是合约的张数,不是货币数量
timeout=10, # 等待订单成功的超时时间(秒)
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5.3.5 永续限价单平仓
便捷函数:
函数名 | 说明 |
---|---|
close_limit | 限价单平仓 |
from okx_trade import OkxSWAP
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 限价单平仓
okxSWAP.trade.close_limit(
instId='MANA-USDT-SWAP', # 产品
tdMode='isolated', # 持仓方式 isolated:逐仓 cross:全仓
posSide='long', # 持仓方向 long:多单 short:空单
# closePrice=1000, # 平仓价格 closePrice 和 tpRate必须填写其中一个
tpRate=0.1, # 挂单止盈率
quantityCT='all', # 平仓数量,注意:quantityCT是合约的张数,不是货币数量
block=True, # 是否堵塞
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 未完全成交是否取消订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5.3.6 永续市价单平仓
便捷函数:
函数名 | 说明 |
---|---|
close_market | 市价单平仓 |
from okx_trade import OkxSWAP
from pprint import pprint
def callback(information):
print('callback')
pprint(information)
def errorback(information):
print('errorback')
pprint(information)
if __name__ == '__main__':
KEY = '****'
SECRET = '****'
PASSPHRASE = '****'
okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)
# 市价单平仓
okxSWAP.trade.close_market(
instId='MANA-USDT-SWAP', # 产品
tdMode='isolated', # 持仓方式 isolated:逐仓 cross:全仓
posSide='long', # 持仓方向 long:多单 short:空单
quantityCT='all', # 平仓数量,注意:quantityCT是合约的张数,不是货币数量
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 未完全成交是否取消订单
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=False, # 是否开启一个新的线程维护这个订单
tag='', # 订单标签
clOrdId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
okx_trade-1.0.2.tar.gz
(38.4 kB
view details)
Built Distribution
okx_trade-1.0.2-py3-none-any.whl
(38.3 kB
view details)
File details
Details for the file okx_trade-1.0.2.tar.gz
.
File metadata
- Download URL: okx_trade-1.0.2.tar.gz
- Upload date:
- Size: 38.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6859f1d1115dbb81d1be13d39d5948d27476f1d6ece3da200cbcd3b1b0b6ae4c |
|
MD5 | 56e3490227f34428053fe96b936720f1 |
|
BLAKE2b-256 | ea95d03b01475c12f23f68e458d28a53320f3f39e9137518fa2195995d580563 |
File details
Details for the file okx_trade-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: okx_trade-1.0.2-py3-none-any.whl
- Upload date:
- Size: 38.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a6024d553da7522d8c7950da23cf9d40f48e578b5274c17d7d52d72aef9f5f6 |
|
MD5 | c72b076b354bda26daf099575db7708a |
|
BLAKE2b-256 | 2398fecea8dd7de17a3e69572d5a54d22252494fcc5730c9b14efdfee5b41307 |