okx-trade


Nameokx-trade JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/pyted/okx_trade
SummaryMake OKX API Transactions Easier
upload_time2023-10-21 07:13:01
maintainer
docs_urlNone
authorpyted
requires_python>=3.6.0
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# Okx_Trade 说明文档

## 1 Okx_Trade介绍

Okx_Trade封装了OKX中现货(SPOT)、永续合约(SWAP)的常用函数,降低量化交易的难度。

## 2 安装Okx_Trade

GITHUB:https://www.github.com/pyted/okx_trade

```cmd
pip3 install okx_trade
```

## 3 快速开始

1.获取现货现货交易BTC-USDT的价格,降价2%挂单买入,买入金额为10000USDT,挂单时间为2小时,如果超时则取消订单。

```python
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小时,如果超时则取消。

**采用异步的方式管理这个订单,并设置订单成功或失败后的回调函数**

```python
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小时,超时后取消订单,并设置回调函数。

```python
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|获取单个币种的余额|

```python
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|获取不可交易的现货产品列表|

```python
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|获取单个现货产品的轻量交易深度|


```python
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线数据|


```python
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|等待订单成交|

```python
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|将下单价格转化为字符串|

```python
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|限价单开仓|

```python
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|市价单开仓|

```python
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|限价单平仓|

```python
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|市价单平仓|

```python
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|获取杠杆|

```python
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|获取不可交易的永续合约产品列表|


```python
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|获取单个永续合约产品的轻量交易深度|

```python
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线数据|


```python
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|等待订单成交|

```python
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|将下单价格转化为字符串|


```python
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|限价单开仓|


```python
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|市价单开仓|

```python
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|限价单平仓|

```python
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|市价单平仓|

```python
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={},  # 向回调函数中传递的参数字典
    )
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pyted/okx_trade",
    "name": "okx-trade",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "pyted",
    "author_email": "pyted@outlook.com",
    "download_url": "https://files.pythonhosted.org/packages/ea/95/d03b01475c12f23f68e458d28a53320f3f39e9137518fa2195995d580563/okx_trade-1.0.2.tar.gz",
    "platform": null,
    "description": "\n# Okx_Trade \u8bf4\u660e\u6587\u6863\n\n## 1 Okx_Trade\u4ecb\u7ecd\n\nOkx_Trade\u5c01\u88c5\u4e86OKX\u4e2d\u73b0\u8d27\uff08SPOT)\u3001\u6c38\u7eed\u5408\u7ea6\uff08SWAP\uff09\u7684\u5e38\u7528\u51fd\u6570\uff0c\u964d\u4f4e\u91cf\u5316\u4ea4\u6613\u7684\u96be\u5ea6\u3002\n\n## 2 \u5b89\u88c5Okx_Trade\n\nGITHUB:https://www.github.com/pyted/okx_trade\n\n```cmd\npip3 install okx_trade\n```\n\n## 3 \u5feb\u901f\u5f00\u59cb\n\n1.\u83b7\u53d6\u73b0\u8d27\u73b0\u8d27\u4ea4\u6613BTC-USDT\u7684\u4ef7\u683c\uff0c\u964d\u4ef72%\u6302\u5355\u4e70\u5165\uff0c\u4e70\u5165\u91d1\u989d\u4e3a10000USDT\uff0c\u6302\u5355\u65f6\u95f4\u4e3a2\u5c0f\u65f6\uff0c\u5982\u679c\u8d85\u65f6\u5219\u53d6\u6d88\u8ba2\u5355\u3002\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    okxSPOT = OkxSPOT(\n        key='****',\n        secret='****',\n        passphrase='****',\n    )\n\n    # \u4ea7\u54c1\n    instId = 'BTC-USDT'\n    # \u5f00\u4ed3\u91d1\u989d\n    openMoney = 10000\n    # \u8d2d\u4e70\u4ef7\u683c\n    askPx = okxSPOT.market.get_ticker(instId)['data']['askPx']  # \u53561\u4ef7\u683c\n    askPx = float(askPx)\n    openPrice = askPx * 0.98  # \u964d\u4ef72%\n    print(openPrice)\n    # \u6302\u5355\u65f6\u95f4\n    timeout = 60 * 60 * 2  # \u5355\u4f4d\u79d2\n    # \u8d85\u65f6\u662f\u5426\u53d6\u6d88\u8ba2\u5355\n    cancel = True\n    # \u662f\u5426\u5835\u585e\u6a21\u5f0f\n    block = True\n\n    # \u9650\u4ef7\u5355\u5f00\u4ed3\n    result = okxSPOT.trade.open_limit(\n        instId=instId,  # \u4ea7\u54c1\n        openPrice=openPrice,  # \u5f00\u4ed3\u4ef7\u683c\n        openMoney=openMoney,  # \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantity\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantity > openMoney\n        timeout=timeout,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n    )\n    pprint(result)\n```\n\n2.\u83b7\u53d6\u6c38\u7eed\u5408\u7ea6BTC-USDT-SWAP\u7684\u4ef7\u683c\uff0c\u964d\u4ef75%\uff0c\u91c7\u7528\u9010\u4ed3\u300110\u500d\u6760\u6746\u3001\u5f00\u4ed3\u91d1\u989d10000USDT\u6302\u5355\uff0c\u6302\u5355\u65f6\u95f4\u4e3a2\u5c0f\u65f6\uff0c\u5982\u679c\u8d85\u65f6\u5219\u53d6\u6d88\u3002\n\n**\u91c7\u7528\u5f02\u6b65\u7684\u65b9\u5f0f\u7ba1\u7406\u8fd9\u4e2a\u8ba2\u5355\uff0c\u5e76\u8bbe\u7f6e\u8ba2\u5355\u6210\u529f\u6216\u5931\u8d25\u540e\u7684\u56de\u8c03\u51fd\u6570**\n\n```python\nfrom pprint import pprint\nfrom okx_trade import OkxSWAP\n\n\n# \u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\ndef callback(information):\n    '''\n    :param information: \u4ea4\u6613\u8fc7\u7a0b\u4fe1\u606f\u5b57\u5178\n        information = {\n            'instId': <\u4ea7\u54c1ID>,\n            'status': <\u8ba2\u5355\u72b6\u6001>,\n            'meta': <\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570>,\n            'request_param': <\u53d1\u9001\u4e0b\u5355\u8bf7\u6c42\u7684\u5177\u4f53\u53c2\u6570>,\n            'func_param': <open_limit\u4e2d\u7684\u53c2\u6570>,\n            'get_order_result': <\u83b7\u53d6\u8ba2\u5355\u72b6\u6001\u7684\u7ed3\u679c>,\n            'set_order_result': <\u4e0b\u5355\u63d0\u4ea4\u7684\u7ed3\u679c>,\n            'error_result': <\u5f02\u5e38\u4fe1\u606f>,\n            'cancel_result': <\u53d6\u6d88\u8ba2\u5355\u7684\u7ed3\u679c>,\n        }\n    '''\n    print('callback')\n    pprint(information)\n\n\n# \u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\ndef errorback(information):\n    '''\n    :param information: \u4ea4\u6613\u8fc7\u7a0b\u4fe1\u606f\u5b57\u5178\n        information = {\n            'instId': <\u4ea7\u54c1ID>,\n            'status': <\u8ba2\u5355\u72b6\u6001>,\n            'meta': <\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570>,\n            'request_param': <\u53d1\u9001\u4e0b\u5355\u8bf7\u6c42\u7684\u5177\u4f53\u53c2\u6570>,\n            'func_param': <open_limit\u4e2d\u7684\u53c2\u6570>,\n            'get_order_result': <\u83b7\u53d6\u8ba2\u5355\u72b6\u6001\u7684\u7ed3\u679c>,\n            'set_order_result': <\u4e0b\u5355\u63d0\u4ea4\u7684\u7ed3\u679c>,\n            'error_result': <\u5f02\u5e38\u4fe1\u606f>,\n            'cancel_result': <\u53d6\u6d88\u8ba2\u5355\u7684\u7ed3\u679c>,\n        }\n    '''\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    okxSWAP = OkxSWAP(\n        key='****',\n        secret='****',\n        passphrase='****',\n    )\n\n    # \u4ea7\u54c1\n    instId = 'BTC-USDT-SWAP'\n    # \u5f00\u4ed3\u91d1\u989d\n    openMoney = 10000\n    # \u8d2d\u4e70\u4ef7\u683c\n    askPx = okxSWAP.market.get_ticker(instId)['data']['askPx']  # \u53561\u4ef7\u683c\n    askPx = float(askPx)\n    openPrice = askPx * 0.98  # \u964d\u4ef72%\n    print(openPrice)\n    # \u6302\u5355\u65f6\u95f4\n    timeout = 60 * 60 * 2  # \u5355\u4f4d\u79d2\n    # \u8d85\u65f6\u662f\u5426\u53d6\u6d88\u8ba2\u5355\n    cancel = True\n    # \u662f\u5426\u5835\u585e\u6a21\u5f0f\n    block = True\n\n    # \u9650\u4ef7\u5355\u5f00\u4ed3\n    result = okxSWAP.trade.open_limit(\n        instId=instId,  # \u4ea7\u54c1\n        openPrice=openPrice,  # \u5f00\u4ed3\u4ef7\u683c\n        tdMode='isolated',  # \u6301\u4ed3\u65b9\u5f0f isolated\uff1a\u9010\u4ed3 cross\uff1a\u5168\u4ed3\n        posSide='long',  # \u6301\u4ed3\u65b9\u5411 long\uff1a\u591a\u5355 short\uff1a\u7a7a\u5355\n        lever=10,  # \u6760\u6746\n        openMoney=openMoney,  # \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantityCT\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantity > openMoney\n        quantityCT=None,  # \u5408\u7ea6\u5f20\u6570\u4e3a\u7a7a\n        block=True,  # \u662f\u5426\u4ee5\u5835\u585e\u7684\u6a21\u5f0f\n        timeout=timeout,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        newThread=False,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n    )\n```\n\n3.\u5bf9\u4e8e\u6c38\u7eed\u5408\u7ea6\u4ee5\u5f53\u524dBTC-USDT-SWAP\u7684\u4ef7\u683c\uff0c\u6b62\u76c820%**\u5168\u90e8**\u6302\u5355\u4e70\u5165\u5e73\u7a7a\uff0c\u8d85\u65f6\u65f6\u95f42\u5c0f\u65f6\uff0c\u8d85\u65f6\u540e\u53d6\u6d88\u8ba2\u5355\uff0c\u5e76\u8bbe\u7f6e\u56de\u8c03\u51fd\u6570\u3002\n\n```python\nfrom pprint import pprint\nfrom okx_trade import OkxSWAP\n\n\n# \u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\ndef callback(information):\n    '''\n    :param information: \u4ea4\u6613\u8fc7\u7a0b\u4fe1\u606f\u5b57\u5178\n        information = {\n            'instId':<\u4ea7\u54c1ID>,\n            'status': <\u8ba2\u5355\u72b6\u6001>,\n            'meta': <\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570>,\n            'request_param': <\u53d1\u9001\u4e0b\u5355\u8bf7\u6c42\u7684\u5177\u4f53\u53c2\u6570>,\n            'func_param': <open_limit\u4e2d\u7684\u53c2\u6570>,\n            'get_order_result': <\u83b7\u53d6\u8ba2\u5355\u72b6\u6001\u7684\u7ed3\u679c>,\n            'set_order_result': <\u4e0b\u5355\u63d0\u4ea4\u7684\u7ed3\u679c>,\n            'error_result': <\u5f02\u5e38\u4fe1\u606f>,\n            'cancel_result': <\u53d6\u6d88\u8ba2\u5355\u7684\u7ed3\u679c>,\n        }\n    '''\n    print('callback')\n    pprint(information)\n\n\n# \u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\ndef errorback(information):\n    '''\n    :param information: \u4ea4\u6613\u8fc7\u7a0b\u4fe1\u606f\u5b57\u5178\n        information = {\n            'instId':<\u4ea7\u54c1ID>,\n            'status': <\u8ba2\u5355\u72b6\u6001>,\n            'meta': <\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570>,\n            'request_param': <\u53d1\u9001\u4e0b\u5355\u8bf7\u6c42\u7684\u5177\u4f53\u53c2\u6570>,\n            'func_param': <open_limit\u4e2d\u7684\u53c2\u6570>,\n            'get_order_result': <\u83b7\u53d6\u8ba2\u5355\u72b6\u6001\u7684\u7ed3\u679c>,\n            'set_order_result': <\u4e0b\u5355\u63d0\u4ea4\u7684\u7ed3\u679c>,\n            'error_result': <\u5f02\u5e38\u4fe1\u606f>,\n            'cancel_result': <\u53d6\u6d88\u8ba2\u5355\u7684\u7ed3\u679c>,\n        }\n    '''\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    okxSWAP = OkxSWAP(\n        key='****',\n        secret='****',\n        passphrase='****',\n    )\n    # \u4ea7\u54c1\n    instId = 'BTC-USDT-SWAP'\n    # \u6302\u5355\u65f6\u95f4\n    timeout = 60 * 60 * 2  # \u5355\u4f4d\u79d2\n    # \u8d85\u65f6\u662f\u5426\u53d6\u6d88\u8ba2\u5355\n    cancel = True\n    # \u662f\u5426\u5835\u585e\u6a21\u5f0f\n    block = True\n\n    # \u9650\u4ef7\u5355\u5f00\u4ed3\n    result = okxSWAP.trade.close_limit(\n        instId=instId,  # \u4ea7\u54c1\n        tpRate=0.2,  # \u6b62\u76c8\u7387 20%\n        # \u5e73\u591a positionSide=\"LONG\":   closePrice = askPx * (1 + abs(tpRate))\n        # \u5e73\u7a7a positionSide=\"SHORT\":  closePrice = bidPx * (1 - abs(tpRate))\n        tdMode='isolated',  # \u6301\u4ed3\u65b9\u5f0f isolated\uff1a\u9010\u4ed3 cross\uff1a\u5168\u4ed3\n        posSide='long',  # \u6301\u4ed3\u65b9\u5411 long\uff1a\u591a\u5355 short\uff1a\u7a7a\u5355\n        quantityCT='all',  # \u5408\u7ea6\u5f20\u6570\u4e3a\u7a7a 'all' \u8868\u793a\u5168\u90e8\n        block=True,  # \u662f\u5426\u4ee5\u5835\u585e\u7684\u6a21\u5f0f\n        timeout=60 * 60 * 2,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        newThread=False,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n    )\n    pprint(result)\n```\n\n## 4 \u73b0\u8d27\u4ea7\u54c1 OkxSPOT\n\n### 4.1 \u73b0\u8d27\u8d26\u6237\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_balancesMap|\u67e5\u770b\u8d26\u6237\u4f59\u989d\u5b57\u5178|\n|get_balances|\u67e5\u770b\u8d26\u6237\u4f59\u989d\u5217\u8868|  \n|get_balance|\u83b7\u53d6\u5355\u4e2a\u5e01\u79cd\u7684\u4f59\u989d|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u4ea7\u54c1\u7684\u4f59\u989d\n    get_balance1 = okxSPOT.account.get_balance(instId='MANA-USDT')\n    pprint(get_balance1)\n    # \u83b7\u53d6\u5e01\u79cd\u7684\u4f59\u989d\n    get_balance2 = okxSPOT.account.get_balance(ccy='USDT')\n    pprint(get_balance2)\n    # \u83b7\u53d6\u5168\u90e8\u8d44\u4ea7\u4f59\u989d\u5217\u8868\n    get_balances = okxSPOT.account.get_balances()\n    pprint(get_balances)\n    # \u83b7\u53d6\u5168\u90e8\u8d44\u4ea7\u4f59\u989d\u5b57\u5178\n    get_balancesMap = okxSPOT.account.get_balancesMap()\n    pprint(get_balancesMap)\n```\n\n### 4.2 \u73b0\u8d27\u884c\u60c5\n\n#### 4.2.1 \u73b0\u8d27\u4ea7\u54c1\u89c4\u5219\u4fe1\u606f\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_exchangeInfos|\u83b7\u53d6\u5168\u90e8\u73b0\u8d27\u4ea4\u6613\u89c4\u5219\u4e0e\u4ea4\u6613\u5bf9|\n|get_exchangeInfo|\u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea4\u6613\u89c4\u5219\u4e0e\u4ea4\u6613\u5bf9|  \n|get_symbols_trading_on|\u83b7\u53d6\u53ef\u4ee5\u4ea4\u6613\u7684\u73b0\u8d27\u4ea7\u54c1\u5217\u8868|\n|get_symbols_trading_off|\u83b7\u53d6\u4e0d\u53ef\u4ea4\u6613\u7684\u73b0\u8d27\u4ea7\u54c1\u5217\u8868|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u73b0\u8d27\u5168\u90e8\u4ea7\u54c1\u7684\u4ea4\u6613\u89c4\u5219\n    get_exchangeInfos = okxSPOT.market.get_exchangeInfos()\n    pprint(get_exchangeInfos)\n    # \u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u4ea4\u6613\u89c4\u5219\n    get_exchangeInfo = okxSPOT.market.get_exchangeInfo(symbol='BTC-USDT')\n    pprint(get_exchangeInfo)\n    # \u83b7\u53d6\u53ef\u4ee5\u4ea4\u6613\u7684\u73b0\u8d27\u4ea7\u54c1\u5217\u8868\n    get_symbols_trading_on = okxSPOT.market.get_symbols_trading_on()\n    pprint(get_symbols_trading_on)\n    # \u83b7\u53d6\u4e0d\u53ef\u4ee5\u4ea4\u6613\u7684\u73b0\u8d27\u4ea7\u54c1\u5217\u8868\n    get_symbols_trading_off = okxSPOT.market.get_symbols_trading_off()\n    pprint(get_symbols_trading_off)\n```\n\n#### 4.2.2 \u73b0\u8d27\u5b9e\u65f6\u4ef7\u683c\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_tickers|\u83b7\u53d6\u5168\u90e8\u73b0\u8d27\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5217\u8868|\n|get_tickersMap|\u83b7\u53d6\u5168\u90e8\u73b0\u8d27\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5b57\u5178|\n|get_ticker|\u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e|\n|get_books|\u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u4ea4\u6613\u6df1\u5ea6|\n|get_books_lite|\u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u8f7b\u91cf\u4ea4\u6613\u6df1\u5ea6|\n\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u5168\u90e8\u73b0\u8d27\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5217\u8868\n    get_tickers = okxSPOT.market.get_tickers()\n    pprint(get_tickers)\n    # \u83b7\u53d6\u5168\u90e8\u73b0\u8d27\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5b57\u5178\n    get_tickersMap = okxSPOT.market.get_tickersMap()\n    pprint(get_tickersMap)\n    # \u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\n    get_ticker = okxSPOT.market.get_ticker('BTC-USDT')\n    pprint(get_ticker)\n    # \u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u4ea4\u6613\u6df1\u5ea6\n    get_books = okxSPOT.market.get_books('BTC-USDT', sz=10)\n    pprint(get_books)\n    # \u83b7\u53d6\u5355\u4e2a\u73b0\u8d27\u4ea7\u54c1\u7684\u8f7b\u91cf\u4ea4\u6613\u6df1\u5ea6\n    get_books_lite = okxSPOT.market.get_books_lite('BTC-USDT')\n    pprint(get_books_lite)\n```\n\n#### 4.2.3 \u73b0\u8d27\u5386\u53f2K\u7ebf\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_history_candle|\u83b7\u53d6\u4ea7\u54c1\u7684\u5386\u53f2K\u7ebf\u6570\u636e|\n|get_history_candle_latest|\u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u6570\u91cf\u7684\u6700\u65b0\u5386\u53f2K\u7ebf\u6570\u636e|\n|get_history_candle_by_date|\u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u65e5\u671f\u7684\u5386\u53f2K\u7ebf\u6570\u636e|\n\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u4ea7\u54c1\u7684\u5386\u53f2K\u7ebf\u6570\u636e\n    get_history_candle = okxSPOT.market.get_history_candle(\n        symbol='BTC-USDT',\n        start='2023-01-01 00:00:00',\n        end='2023-01-01 23:59:00',\n        bar='1m',\n    )\n    pprint(get_history_candle)\n\n    # \u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u6570\u91cf\u7684\u6700\u65b0\u5386\u53f2K\u7ebf\u6570\u636e\n    get_history_candle_latest = okxSPOT.market.get_history_candle_latest(\n        symbol='BTC-USDT',\n        length=1440,\n        bar='1m',\n    )\n    pprint(get_history_candle_latest)\n\n    # \u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u65e5\u671f\u7684\u5386\u53f2K\u7ebf\u6570\u636e\n    get_history_candle_by_date = okxSPOT.market.get_history_candle_by_date(\n        symbol='BTC-USDT',\n        date='2023-01-01',\n        bar='1m',\n    )\n    pprint(get_history_candle_by_date)\n```\n\n### 4.3 \u73b0\u8d27\u4ea4\u6613\n\n#### 4.3.1 \u73b0\u8d27\u4ea4\u6613\u57fa\u7840\u8ba2\u5355\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|set_order|\u666e\u901a\u4e0b\u5355\u8d2d\u4e70|  \n|get_order|\u67e5\u8be2\u8ba2\u5355|  \n|get_orders_pending|\u83b7\u53d6\u672a\u6210\u4ea4\u8ba2\u5355\u5217\u8868|\n|get_orders_pending_open|\u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5f00\u4ed3\u8ba2\u5355\u5217\u8868|\n|get_orders_pending_close|\u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5e73\u4ed3\u8ba2\u5355\u5217\u8868|\n|cancel_order|\u64a4\u9500\u8ba2\u5355|\n|wait_order_FILLED|\u7b49\u5f85\u8ba2\u5355\u6210\u4ea4|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u83b7\u53d6\u672a\u6210\u4ea4\u8ba2\u5355\u5217\u8868\n    get_orders_pending = okxSPOT.trade.get_orders_pending()\n    pprint(get_orders_pending)\n    # \u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5f00\u4ed3\u8ba2\u5355\u5217\u8868\n    get_orders_pending_open = okxSPOT.trade.get_orders_pending_open()\n    pprint(get_orders_pending_open)\n    # \u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5e73\u4ed3\u8ba2\u5355\u5217\u8868\n    get_orders_pending_close = okxSPOT.trade.get_orders_pending_close()\n    pprint(get_orders_pending_close)\n    # \u7b49\u5f85\u8ba2\u5355\u6210\u4ea4\n    wait_order_FILLED = okxSPOT.trade.wait_order_FILLED(\n        instId='MANA-USDT',\n        ordId='547717986975911936',\n        timeout=10,\n    )\n    pprint(wait_order_FILLED)\n    # \u83b7\u53d6\u8ba2\u5355\u4fe1\u606f\n    get_order = okxSPOT.trade.get_order(\n        instId='MANA-USDT',\n        ordId='547717986975911936',\n    )\n    pprint(get_order)\n    # \u53d6\u6d88\u8ba2\u5355\n    cancel_order = okxSPOT.trade.cancel_order(\n        instId='MANA-USDT', ordId='547717986975911936'\n    )\n    pprint(cancel_order)\n```\n\n#### 4.3.2 \u73b0\u8d27\u4e0b\u5355\u4ef7\u683c\u4e0e\u6570\u91cf\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|round_quantity|\u5706\u6574\u4e0b\u5355\u6570\u91cf|\n|round_price|\u5706\u6574\u5f00\u4ed3\u4ef7\u683c|\n|get_quantity|\u6839\u636e\u5f00\u4ed3\u91d1\u989d\u3001\u5f00\u4ed3\u4ef7\u683c\u4e0e\u6760\u6746\u8ba1\u7b97\u6700\u5927\u53ef\u5f00\u4ed3\u6570\u91cf|\n|quantity_to_f|\u5c06\u4e0b\u5355\u6570\u91cf\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32|\n|price_to_f|\u5c06\u4e0b\u5355\u4ef7\u683c\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32|\n\n```python\nfrom pprint import pprint\nfrom okx_trade import OkxSPOT\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u5706\u6574\u4e0b\u5355\u6570\u91cf\n    round_quantity_result = okxSPOT.trade.round_quantity(\n        quantity=0.00023234234234,\n        instId='MANA-USDT',\n        ordType='market',  # market | limit\n    )\n    pprint(round_quantity_result)\n    # \u5706\u6574\u4e0b\u5355\u4ef7\u683c\n    round_price_result = okxSPOT.trade.round_price(\n        price=20.123123123,\n        instId='MANA-USDT',\n        type='FLOOR',  # FLOOR:\u5411\u4e0b\u5706\u6574 CEIL:\u5411\u4e0a\u5706\u6574\n    )\n    pprint(round_price_result)\n    # \u6839\u636e\u5f00\u4ed3\u91d1\u989d\u3001\u5f00\u4ed3\u4ef7\u683c\u4e0e\u6760\u6746\u8ba1\u7b97\u6700\u5927\u53ef\u5f00\u4ed3\u6570\u91cf\n    get_quantity_result = okxSPOT.trade.get_quantity(\n        openPrice=2.123123,\n        openMoney=20,\n        instId='MANA-USDT',\n        ordType='limit',\n        leverage=1\n    )\n    pprint(get_quantity_result)\n    # \u5c06\u4e0b\u5355\u6570\u91cf\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32\n    quantity_to_f_result = okxSPOT.trade.quantity_to_f(\n        quantity=get_quantity_result['data'],\n        instId='MANA-USDT',\n    )\n    pprint(quantity_to_f_result)\n    # \u5c06\u4e0b\u5355\u4ef7\u683c\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32\n    price_to_f_result = okxSPOT.trade.price_to_f(\n        price=round_price_result['data'],\n        instId='MANA-USDT',\n    )\n    pprint(price_to_f_result)\n```\n\n#### 4.3.3 \u73b0\u8d27\u9650\u5355\u4ef7\u5f00\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|open_limit|\u9650\u4ef7\u5355\u5f00\u4ed3|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u9650\u4ef7\u5355\u5f00\u4ed3\n    open_limit = okxSPOT.trade.open_limit(\n        instId='MANA-USDT',  # \u4ea7\u54c1\n        openPrice=0.1,  # \u5f00\u4ed3\u4ef7\u683c\n        openMoney=4,  # \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantity\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantity > openMoney\n        # quantity=10,  # \u5f00\u4ed3\u6570\u91cf\n        block=True,  # \u662f\u5426\u4ee5\u5835\u585e\u7684\u6a21\u5f0f\n        timeout=5,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        newThread=False,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n    )\n```\n\n#### 4.3.4 \u73b0\u8d27\u5e02\u4ef7\u5355\u5f00\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|open_market|\u5e02\u4ef7\u5355\u5f00\u4ed3|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u5e02\u4ef7\u5355\u5f00\u4ed3\n    open_market_result = okxSPOT.trade.open_market(\n        instId='MANA-USDT',  # \u4ea7\u54c1\n        quantity=3,  # \u5f00\u4ed3\u6570\u91cf\n        # openMoney=3, \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantity\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantity > openMoney\n        timeout=10,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        newThread=True,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n        meta={},  # \u5411\u56de\u8c03\u51fd\u6570\u4e2d\u4f20\u9012\u7684\u53c2\u6570\u5b57\u5178\n    )\n```\n\n#### 4.3.5 \u73b0\u8d27\u9650\u4ef7\u5355\u5e73\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|close_limit|\u9650\u4ef7\u5355\u5e73\u4ed3|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u5e02\u4ef7\u5355\u5f00\u4ed3\n    open_market_result = okxSPOT.trade.open_market(\n        instId='MANA-USDT',  # \u4ea7\u54c1\n        quantity=3,  # \u5f00\u4ed3\u6570\u91cf\n        # openMoney=3, \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantity\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantity > openMoney\n        timeout=10,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        newThread=True,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n        meta={},  # \u5411\u56de\u8c03\u51fd\u6570\u4e2d\u4f20\u9012\u7684\u53c2\u6570\u5b57\u5178\n    )\n```\n\n#### 4.3.6 \u73b0\u8d27\u5e02\u4ef7\u5355\u5e73\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|close_market|\u5e02\u4ef7\u5355\u5e73\u4ed3|\n\n```python\nfrom okx_trade import OkxSPOT\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSPOT = OkxSPOT(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u9650\u4ef7\u5355\u5e73\u4ed3\n    okxSPOT.trade.close_limit(\n        instId='MANA-USDT',  # \u4ea7\u54c1\n        # closePrice=1000,  # \u5e73\u4ed3\u4ef7\u683c closePrice \u548c tpRate\u5fc5\u987b\u586b\u5199\u5176\u4e2d\u4e00\u4e2a\n        tpRate=0.1,  # \u6302\u5355\u6b62\u76c8\u7387\n        quantity='all',  # \u5e73\u4ed3\u6570\u91cf\n        block=True,  # \u662f\u5426\u5835\u585e\n        timeout=10,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u672a\u5b8c\u5168\u6210\u4ea4\u662f\u5426\u53d6\u6d88\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        newThread=True,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n        meta={},  # \u5411\u56de\u8c03\u51fd\u6570\u4e2d\u4f20\u9012\u7684\u53c2\u6570\u5b57\u5178\n    )\n```\n\n## 5 \u6c38\u7eed\u5408\u7ea6 OkxSWAP\n\n### 5.1 \u6c38\u7eed\u8d26\u6237\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_balance|\u83b7\u53d6\u5e01\u79cd\u7684\u4f59\u989d|\n|set_position_mode|\u8bbe\u7f6e\u6301\u4ed3\u6a21\u5f0f|  \n|set_leverage|\u8bbe\u7f6e\u6760\u6746|\n|get_leverage|\u83b7\u53d6\u6760\u6746|\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u5e01\u79cd\u7684\u4f59\u989d\n    get_balance = okxSWAP.account.get_balance(ccy='USDT')\n    pprint(get_balance)\n    # \u8bbe\u7f6e\u6301\u4ed3\u6a21\u5f0f\n    set_position_mode = okxSWAP.account.set_position_mode(\n        posMode='long_short_mode',\n    )\n    pprint(set_position_mode)\n    # \u8bbe\u7f6e\u9010\u4ed3\u6760\u6746\uff08\u591a\u4ed3\uff09\n    set_leverage_isolated_long = okxSWAP.account.set_leverage(\n        lever=4,\n        instId='MANA-USDT-SWAP',\n        mgnMode='isolated',\n        posSide='long',\n    )\n    pprint(set_leverage_isolated_long)\n    # \u8bbe\u7f6e\u9010\u4ed3\u6760\u6746\uff08\u7a7a\u4ed3\uff09\n    set_leverage_isolated_short = okxSWAP.account.set_leverage(\n        lever=5,\n        instId='MANA-USDT-SWAP',\n        mgnMode='isolated',\n        posSide='short',\n    )\n    pprint(set_leverage_isolated_short)\n    # \u83b7\u53d6\u9010\u4ed3\u6760\u6746\n    get_leverage_isolated = okxSWAP.account.get_leverage(\n        instId='MANA-USDT-SWAP',\n        mgnMode='isolated',\n    )\n    pprint(get_leverage_isolated)\n    # \u8bbe\u7f6e\u5168\u4ed3\u6760\u6746\n    set_leverage_cross = okxSWAP.account.set_leverage(\n        lever=4,\n        instId='MANA-USDT-SWAP',\n        mgnMode='cross',\n        posSide='',\n    )\n    pprint(set_leverage_cross)\n    # \u83b7\u53d6\u9010\u4ed3\u6760\u6746\n    get_leverage_cross = okxSWAP.account.get_leverage(\n        instId='MANA-USDT-SWAP',\n        mgnMode='cross',\n    )\n    pprint(get_leverage_cross)\n```\n\n### 5.2 \u6c38\u7eed\u884c\u60c5\n\n#### 5.2.1 \u6c38\u7eed\u4ea7\u54c1\u89c4\u5219\u4fe1\u606f\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_exchangeInfos|\u83b7\u53d6\u5168\u90e8\u6c38\u7eed\u5408\u7ea6\u4ea4\u6613\u89c4\u5219\u4e0e\u4ea4\u6613\u5bf9|\n|get_exchangeInfo|\u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea4\u6613\u89c4\u5219\u4e0e\u4ea4\u6613\u5bf9|  \n|get_symbols_trading_on|\u83b7\u53d6\u53ef\u4ee5\u4ea4\u6613\u7684\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u5217\u8868|\n|get_symbols_trading_off|\u83b7\u53d6\u4e0d\u53ef\u4ea4\u6613\u7684\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u5217\u8868|\n\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u83b7\u53d6\u6c38\u7eed\u5408\u7ea6\u5168\u90e8\u4ea7\u54c1\u7684\u4ea4\u6613\u89c4\u5219\n    get_exchangeInfos = okxSWAP.market.get_exchangeInfos()\n    pprint(get_exchangeInfos)\n\n    # \u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u4ea4\u6613\u89c4\u5219\n    get_exchangeInfo = okxSWAP.market.get_exchangeInfo(symbol='BTC-USDT-SWAP')\n    pprint(get_exchangeInfo)\n\n    # \u83b7\u53d6\u53ef\u4ee5\u4ea4\u6613\u7684\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u5217\u8868\n    get_symbols_trading_on = okxSWAP.market.get_symbols_trading_on()\n    pprint(get_symbols_trading_on)\n\n    # \u83b7\u53d6\u4e0d\u53ef\u4ee5\u4ea4\u6613\u7684\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u5217\u8868\n    get_symbols_trading_off = okxSWAP.market.get_symbols_trading_off()\n    pprint(get_symbols_trading_off)\n```\n\n#### 5.2.2 \u6c38\u7eed\u5b9e\u65f6\u4ef7\u683c\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_tickers|\u83b7\u53d6\u5168\u90e8\u6c38\u7eed\u5408\u7ea6\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5217\u8868|\n|get_tickersMap|\u83b7\u53d6\u5168\u90e8\u6c38\u7eed\u5408\u7ea6\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5b57\u5178|\n|get_ticker|\u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e|\n|get_books|\u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u4ea4\u6613\u6df1\u5ea6|\n|get_books_lite|\u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u8f7b\u91cf\u4ea4\u6613\u6df1\u5ea6|\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u5168\u90e8\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5217\u8868\n    get_tickers = okxSWAP.market.get_tickers()\n    pprint(get_tickers)\n    # \u83b7\u53d6\u5168\u90e8\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\u5b57\u5178\n    get_tickersMap = okxSWAP.market.get_tickersMap()\n    pprint(get_tickersMap)\n    # \u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u5b9e\u65f6\u884c\u60c5\u6570\u636e\n    get_ticker = okxSWAP.market.get_ticker('BTC-USDT-SWAP')\n    pprint(get_ticker)\n    # \u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u4ea4\u6613\u6df1\u5ea6\n    get_books = okxSWAP.market.get_books('BTC-USDT-SWAP', sz=10)\n    pprint(get_books)\n    # \u83b7\u53d6\u5355\u4e2a\u6c38\u7eed\u5408\u7ea6\u4ea7\u54c1\u7684\u8f7b\u91cf\u4ea4\u6613\u6df1\u5ea6\n    get_books_lite = okxSWAP.market.get_books_lite('BTC-USDT-SWAP')\n    pprint(get_books_lite)\n```\n\n#### 5.2.3 \u6c38\u7eed\u5386\u53f2K\u7ebf\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|  \n|get_history_candle|\u83b7\u53d6\u4ea7\u54c1\u7684\u5386\u53f2K\u7ebf\u6570\u636e|\n|get_history_candle_latest|\u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u6570\u91cf\u7684\u6700\u65b0\u5386\u53f2K\u7ebf\u6570\u636e|\n|get_history_candle_by_date|\u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u65e5\u671f\u7684\u5386\u53f2K\u7ebf\u6570\u636e|\n\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u83b7\u53d6\u4ea7\u54c1\u7684\u5386\u53f2K\u7ebf\u6570\u636e\n    get_history_candle = okxSWAP.market.get_history_candle(\n        symbol='BTC-USDT-SWAP',\n        start='2023-01-01 00:00:00',\n        end='2023-01-01 23:59:00',\n        bar='1m',\n    )\n    pprint(get_history_candle)\n\n    # \u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u6570\u91cf\u7684\u6700\u65b0\u5386\u53f2K\u7ebf\u6570\u636e\n    get_history_candle_latest = okxSWAP.market.get_history_candle_latest(\n        symbol='BTC-USDT-SWAP',\n        length=1440,\n        bar='1m',\n    )\n    pprint(get_history_candle_latest)\n\n    # \u83b7\u53d6\u4ea7\u54c1\u6307\u5b9a\u65e5\u671f\u7684\u5386\u53f2K\u7ebf\u6570\u636e\n    get_history_candle_by_date = okxSWAP.market.get_history_candle_by_date(\n        symbol='BTC-USDT-SWAP',\n        date='2023-01-01',\n        bar='1m',\n    )\n    pprint(get_history_candle_by_date)\n```\n\n\n### 5.3 \u6c38\u7eed\u4ea4\u6613\n\n#### 5.3.1 \u6c38\u7eed\u4ea4\u6613\u57fa\u7840\u8ba2\u5355\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|set_order|\u666e\u901a\u4e0b\u5355\u8d2d\u4e70|  \n|get_order|\u67e5\u8be2\u8ba2\u5355|  \n|get_orders_pending|\u83b7\u53d6\u672a\u6210\u4ea4\u8ba2\u5355\u5217\u8868|\n|get_orders_pending_open|\u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5f00\u4ed3\u8ba2\u5355\u5217\u8868|\n|get_orders_pending_close|\u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5e73\u4ed3\u8ba2\u5355\u5217\u8868|\n|cancel_order|\u64a4\u9500\u8ba2\u5355|\n|wait_order_FILLED|\u7b49\u5f85\u8ba2\u5355\u6210\u4ea4|\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u83b7\u53d6\u672a\u6210\u4ea4\u8ba2\u5355\u5217\u8868\n    get_orders_pending = okxSWAP.trade.get_orders_pending()\n    pprint(get_orders_pending)\n    # \u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5f00\u4ed3\u8ba2\u5355\u5217\u8868\n    get_orders_pending_open = okxSWAP.trade.get_orders_pending_open()\n    pprint(get_orders_pending_open)\n    # \u83b7\u53d6\u672a\u6210\u4ea4\u7684\u5e73\u4ed3\u8ba2\u5355\u5217\u8868\n    get_orders_pending_close = okxSWAP.trade.get_orders_pending_close()\n    pprint(get_orders_pending_close)\n    # \u7b49\u5f85\u8ba2\u5355\u6210\u4ea4\n    wait_order_FILLED = okxSWAP.trade.wait_order_FILLED(\n        instId='MANA-USDT-SWAP',\n        ordId='547717986975911936',\n        timeout=10,\n    )\n    pprint(wait_order_FILLED)\n    # \u83b7\u53d6\u8ba2\u5355\u4fe1\u606f\n    get_order = okxSWAP.trade.get_order(\n        instId='MANA-USDT-SWAP',\n        ordId='547717986975911936',\n    )\n    pprint(get_order)\n    # \u53d6\u6d88\u8ba2\u5355\n    cancel_order = okxSWAP.trade.cancel_order(\n        instId='MANA-USDT-SWAP', ordId='547717986975911936'\n    )\n    pprint(cancel_order)\n```\n\n#### 5.3.2 \u6c38\u7eed\u4e0b\u5355\u4ef7\u683c\u4e0e\u6570\u91cf\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|round_quantity|\u5706\u6574\u4e0b\u5355\u6570\u91cf|\n|round_price|\u5706\u6574\u4e0b\u5355\u4ef7\u683c|\n|get_quantity|\u6839\u636e\u5f00\u4ed3\u91d1\u989d\u3001\u5f00\u4ed3\u4ef7\u683c\u4e0e\u6760\u6746\u8ba1\u7b97\u6700\u5927\u53ef\u5f00\u4ed3\u6570\u91cf|\n|quantity_to_f|\u5c06\u4e0b\u5355\u6570\u91cf\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32|\n|price_to_f|\u5c06\u4e0b\u5355\u4ef7\u683c\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32|\n\n\n```python\nfrom pprint import pprint\nfrom okx_trade import OkxSWAP\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n    # \u5706\u6574\u4e0b\u5355\u6570\u91cf\n    round_quantity_result = okxSWAP.trade.round_quantity(\n        quantity=0.00023234234234,\n        instId='MANA-USDT-SWAP',\n        ordType='market',  # market | limit\n    )\n    pprint(round_quantity_result)\n    # \u5706\u6574\u4e0b\u5355\u4ef7\u683c\n    round_price_result = okxSWAP.trade.round_price(\n        price=20.123123123,\n        instId='MANA-USDT-SWAP',\n        type='FLOOR',  # FLOOR:\u5411\u4e0b\u5706\u6574 CEIL:\u5411\u4e0a\u5706\u6574\n    )\n    pprint(round_price_result)\n    # \u6839\u636e\u5f00\u4ed3\u91d1\u989d\u3001\u5f00\u4ed3\u4ef7\u683c\u4e0e\u6760\u6746\u8ba1\u7b97\u6700\u5927\u53ef\u5f00\u4ed3\u6570\u91cf\n    get_quantity_result = okxSWAP.trade.get_quantity(\n        openPrice=2.123123,\n        openMoney=20,\n        instId='MANA-USDT-SWAP',\n        ordType='limit',\n        leverage=1\n    )\n    pprint(get_quantity_result)\n    # \u5c06\u4e0b\u5355\u6570\u91cf\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32\n    quantity_to_f_result = okxSWAP.trade.quantity_to_f(\n        quantity=get_quantity_result['data'],\n        instId='MANA-USDT-SWAP',\n    )\n    pprint(quantity_to_f_result)\n    # \u5c06\u4e0b\u5355\u4ef7\u683c\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32\n    price_to_f_result = okxSWAP.trade.price_to_f(\n        price=round_price_result['data'],\n        instId='MANA-USDT-SWAP',\n    )\n    pprint(price_to_f_result)\n```\n\n#### 5.3.3 \u6c38\u7eed\u9650\u5355\u4ef7\u5f00\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|open_limit|\u9650\u4ef7\u5355\u5f00\u4ed3|\n\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u9650\u4ef7\u5355\u5f00\u4ed3\n    open_limit = okxSWAP.trade.open_limit(\n        instId='MANA-USDT-SWAP',  # \u4ea7\u54c1\n        tdMode='isolated',  # \u6301\u4ed3\u65b9\u5f0f isolated\uff1a\u9010\u4ed3 cross\uff1a\u5168\u4ed3\n        posSide='long',  # \u6301\u4ed3\u65b9\u5411 long\uff1a\u591a\u5355 short\uff1a\u7a7a\u5355\n        lever=1,  # \u6760\u6746\u500d\u6570\n        openPrice=0.1,  # \u5f00\u4ed3\u4ef7\u683c\n        openMoney=4,  # \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantityCT\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantityCT > openMoney\n        # quantityCT=1,  # \u5f00\u4ed3\u6570\u91cf \u6ce8\u610f\uff1aquantityCT\u662f\u5408\u7ea6\u7684\u5f20\u6570\uff0c\u4e0d\u662f\u8d27\u5e01\u6570\u91cf\n        block=True,  # \u662f\u5426\u4ee5\u5835\u585e\u7684\u6a21\u5f0f\n        timeout=5,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        newThread=False,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n    )\n```\n\n#### 5.3.4 \u6c38\u7eed\u5e02\u4ef7\u5355\u5f00\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|open_market|\u5e02\u4ef7\u5355\u5f00\u4ed3|\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u5e02\u4ef7\u5355\u5f00\u4ed3\n    open_market_result = okxSWAP.trade.open_market(\n        instId='MANA-USDT-SWAP',  # \u4ea7\u54c1\n        tdMode='isolated',  # \u6301\u4ed3\u65b9\u5f0f isolated\uff1a\u9010\u4ed3 cross\uff1a\u5168\u4ed3\n        posSide='long',  # \u6301\u4ed3\u65b9\u5411 long\uff1a\u591a\u5355 short\uff1a\u7a7a\u5355\n        lever=1,  # \u6760\u6746\u500d\u6570\n        openMoney=4,  # \u5f00\u4ed3\u91d1\u989d \u5f00\u4ed3\u91d1\u989dopenMoney\u548c\u5f00\u4ed3\u6570\u91cfquantityCT\u5fc5\u987b\u8f93\u5165\u5176\u4e2d\u4e00\u4e2a \u4f18\u5148\u7ea7\uff1aquantityCT > openMoney\n        # quantityCT=1,  # \u5f00\u4ed3\u6570\u91cf \u6ce8\u610f\uff1aquantityCT\u662f\u5408\u7ea6\u7684\u5f20\u6570\uff0c\u4e0d\u662f\u8d27\u5e01\u6570\u91cf\n        timeout=10,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u8ba2\u5355\u8d85\u65f6\u540e\u662f\u5426\u53d6\u6d88\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        newThread=True,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n        meta={},  # \u5411\u56de\u8c03\u51fd\u6570\u4e2d\u4f20\u9012\u7684\u53c2\u6570\u5b57\u5178\n    )\n```\n#### 5.3.5 \u6c38\u7eed\u9650\u4ef7\u5355\u5e73\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|close_limit|\u9650\u4ef7\u5355\u5e73\u4ed3|\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u9650\u4ef7\u5355\u5e73\u4ed3\n    okxSWAP.trade.close_limit(\n        instId='MANA-USDT-SWAP',  # \u4ea7\u54c1\n        tdMode='isolated',  # \u6301\u4ed3\u65b9\u5f0f isolated\uff1a\u9010\u4ed3 cross\uff1a\u5168\u4ed3\n        posSide='long',  # \u6301\u4ed3\u65b9\u5411 long\uff1a\u591a\u5355 short\uff1a\u7a7a\u5355\n        # closePrice=1000,  # \u5e73\u4ed3\u4ef7\u683c closePrice \u548c tpRate\u5fc5\u987b\u586b\u5199\u5176\u4e2d\u4e00\u4e2a\n        tpRate=0.1,  # \u6302\u5355\u6b62\u76c8\u7387\n        quantityCT='all',  # \u5e73\u4ed3\u6570\u91cf\uff0c\u6ce8\u610f\uff1aquantityCT\u662f\u5408\u7ea6\u7684\u5f20\u6570\uff0c\u4e0d\u662f\u8d27\u5e01\u6570\u91cf\n        block=True,  # \u662f\u5426\u5835\u585e\n        timeout=10,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u672a\u5b8c\u5168\u6210\u4ea4\u662f\u5426\u53d6\u6d88\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        newThread=True,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n        meta={},  # \u5411\u56de\u8c03\u51fd\u6570\u4e2d\u4f20\u9012\u7684\u53c2\u6570\u5b57\u5178\n    )\n```\n\n#### 5.3.6 \u6c38\u7eed\u5e02\u4ef7\u5355\u5e73\u4ed3\n\n\u4fbf\u6377\u51fd\u6570\uff1a\n\n|\u51fd\u6570\u540d|\u8bf4\u660e|\n|:---|:---|\n|close_market|\u5e02\u4ef7\u5355\u5e73\u4ed3|\n\n```python\nfrom okx_trade import OkxSWAP\nfrom pprint import pprint\n\n\ndef callback(information):\n    print('callback')\n    pprint(information)\n\n\ndef errorback(information):\n    print('errorback')\n    pprint(information)\n\n\nif __name__ == '__main__':\n    KEY = '****'\n    SECRET = '****'\n    PASSPHRASE = '****'\n\n    okxSWAP = OkxSWAP(key=KEY, secret=SECRET, passphrase=PASSPHRASE)\n\n    # \u5e02\u4ef7\u5355\u5e73\u4ed3\n    okxSWAP.trade.close_market(\n        instId='MANA-USDT-SWAP',  # \u4ea7\u54c1\n        tdMode='isolated',  # \u6301\u4ed3\u65b9\u5f0f isolated\uff1a\u9010\u4ed3 cross\uff1a\u5168\u4ed3\n        posSide='long',  # \u6301\u4ed3\u65b9\u5411 long\uff1a\u591a\u5355 short\uff1a\u7a7a\u5355\n        quantityCT='all',  # \u5e73\u4ed3\u6570\u91cf\uff0c\u6ce8\u610f\uff1aquantityCT\u662f\u5408\u7ea6\u7684\u5f20\u6570\uff0c\u4e0d\u662f\u8d27\u5e01\u6570\u91cf\n        timeout=10,  # \u7b49\u5f85\u8ba2\u5355\u6210\u529f\u7684\u8d85\u65f6\u65f6\u95f4\n        delay=0.2,  # \u68c0\u6d4b\u8ba2\u5355\u72b6\u6001\u7684\u95f4\u9694 (\u79d2)\n        cancel=True,  # \u672a\u5b8c\u5168\u6210\u4ea4\u662f\u5426\u53d6\u6d88\u8ba2\u5355\n        callback=callback,  # \u5f00\u4ed3\u6210\u529f\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        errorback=errorback,  # \u5f00\u4ed3\u5931\u8d25\u89e6\u53d1\u7684\u56de\u8c03\u51fd\u6570\n        newThread=False,  # \u662f\u5426\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u7ef4\u62a4\u8fd9\u4e2a\u8ba2\u5355\n        tag='',  # \u8ba2\u5355\u6807\u7b7e\n        clOrdId='',  # \u5ba2\u6237\u81ea\u5b9a\u4e49\u8ba2\u5355ID\n        meta={},  # \u5411\u56de\u8c03\u51fd\u6570\u4e2d\u4f20\u9012\u7684\u53c2\u6570\u5b57\u5178\n    )\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Make OKX API Transactions Easier",
    "version": "1.0.2",
    "project_urls": {
        "Homepage": "https://github.com/pyted/okx_trade"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2398fecea8dd7de17a3e69572d5a54d22252494fcc5730c9b14efdfee5b41307",
                "md5": "c72b076b354bda26daf099575db7708a",
                "sha256": "0a6024d553da7522d8c7950da23cf9d40f48e578b5274c17d7d52d72aef9f5f6"
            },
            "downloads": -1,
            "filename": "okx_trade-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c72b076b354bda26daf099575db7708a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6.0",
            "size": 38253,
            "upload_time": "2023-10-21T07:12:58",
            "upload_time_iso_8601": "2023-10-21T07:12:58.849869Z",
            "url": "https://files.pythonhosted.org/packages/23/98/fecea8dd7de17a3e69572d5a54d22252494fcc5730c9b14efdfee5b41307/okx_trade-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ea95d03b01475c12f23f68e458d28a53320f3f39e9137518fa2195995d580563",
                "md5": "56e3490227f34428053fe96b936720f1",
                "sha256": "6859f1d1115dbb81d1be13d39d5948d27476f1d6ece3da200cbcd3b1b0b6ae4c"
            },
            "downloads": -1,
            "filename": "okx_trade-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "56e3490227f34428053fe96b936720f1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6.0",
            "size": 38394,
            "upload_time": "2023-10-21T07:13:01",
            "upload_time_iso_8601": "2023-10-21T07:13:01.086112Z",
            "url": "https://files.pythonhosted.org/packages/ea/95/d03b01475c12f23f68e458d28a53320f3f39e9137518fa2195995d580563/okx_trade-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-21 07:13:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyted",
    "github_project": "okx_trade",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "okx-trade"
}
        
Elapsed time: 0.13155s