如何使用 Jupyter Notebook 进行现货交易?
本文将指导您如何通过Jupyter Notebook调用 python-okx 库中的函数来进行简单的现货交易。
1. 如何在 Jupyter Notebook 上运行 Python 代码?

Jupyter Notebook是一个功能强大且易于使用的Python开发和数据分析工具。它支持Windows、MacOS和Linux系统。
如果您还不熟悉 Jupyter Notebook,可以参考官方指南进行安装和启动。
2. 如何安装 python-okx 包?
在 Jupyter Notebook 中运行以下命令即可安装 python-okx
包:

3. 如何创建 API 密钥?
打开官网登录账户,前往【交易】- 【模拟交易】创建 API 密钥进行测试。

2. 点选【个人资料】头像,选择【模拟交易API】,然后创建 API 密钥。

3. 为不同的主账户或子账户创建 API 密钥。

4. 在权限设置中勾选【交易】权限。

5. 创建成功后,保存好您的 API 密钥、密钥密码和 API 密码短语。
1 api_key = "xxxxx"
2 secret_key = "xxxxx"
3 passphrase = "xxxxxx"
4. 如何导入欧易模块?
python-okx 库是基于 REST API 提供不同的模块(欲知更多可点击这里)当中涵盖了:
交易
大宗交易
资金
账户
兑换
收益
子账户
市场数据
公共数据
交易数据
状态
ND 经纪商
FD 经纪商
例如,导入交易模块:
1 import okx.Trade as Trade
5. 如何获取市场数据?
可以点击这里了解更多,或参考以下信息:
1 import okx.MarketData as MarketData
2 flag = "1" # live trading: 0, demo trading: 1
3 marketDataAPI = MarketData.MarketAPI(flag=flag)
4 result = marketDataAPI.get_tickers(instType="SPOT")print(result)
6. 如何查看可用的交易对?
可以点击这里了解更多,或参考以下信息:
1 import okx.Account as Account
2
3 # API initialization
4 apikey = "YOUR_API_KEY"
5 secretkey = "YOUR_SECRET_KEY"
6 passphrase = "YOUR_PASSPHRASE"
7
8 flag = "1" # Production trading: 0, Demo trading: 1
9
10 accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
11
12 result = accountAPI.get_instruments(instType="SPOT")
13 print(result)
7. 如何查询账户余额?
要了解如何读取您的账户余额,请查看我们的专属指南。注意: 在现货交易的“cash” tdMode 模式下,您主要需要查看每种币种的 cashBal
(可用余额)、frozenBal
(冻结余额)参数,以及 totalEq
(总资产)参数。
1 import okx.Account as Account
2 flag = "1" # live trading: 0, demo trading: 1
3
4 accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
5
6 result = accountAPI.get_account_balance()
7 print(result)
8. 如何访问四种不同的账户模式?
平台支持四种账户模式:
现货模式
现货和合约模式
跨币种保证金模式
组合保证金模式
有关账户模式介绍可参阅:统一交易账户介绍在保证金模式或交易模式下,参数 tdMode 决定了您的持仓如何进行保证金管理,您需要在每次下新订单时进行设置。在现货或现货与合约模式下进行现货交易时,请设置 tdMode='cash'。在跨币种保证金或组合保证金模式下进行现货交易时,请设置 tdMode = 'cross'。
9. 如何判断当前账户模式?
要了解如何查看您当前账户的模式配置,请阅读我们的指南并输入 acctLv 参数。
1 import okx.Account as Account
2
3 flag = "1" # live trading: 0, demo trading: 1
4
5 accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
6 result = accountAPI.get_account_config()
7 print(result)
8
9 if result['code'] == "0":
10 acctLv = result["data"][0]["acctLv"]
11 if acctLv == "1":
12 print("Simple mode")
13 elif acctLv == "2":
14 print("Single-currency margin mode")
15 elif acctLv == "3":
16 print("Multi-currency margin mode")
17 elif acctLv == "4":
18 print("Portfolio margin mode")
10. 如何在现货/现货和合约模式下单?
10.1 如何下限价委托单?
欲了解更多请查看我们的专属指南。请参考以下示例:以 19,000 USDT 的价格买入 0.01 BTC。
1 # limit order
2 result = tradeAPI.place_order(
3 instId="BTC-USDT",
4 tdMode="cash",
5 side="buy",
6 ordType="limit",
7 px="19000",
8 sz="0.01"
9 )
10 print(result)
11
12 if result["code"] == "0":
13 print("Successful order request,order_id = ",result["data"][0]["ordId"])
14 else:
15 print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])
10.2 如何下市价委托单?
欲了解更多请查看我们的专属指南。
请参考以下示例:按当前市场价格购买价值 100 美元的 BTC。
1 # market order
2 result = tradeAPI.place_order(
3 instId="BTC-USDT",
4 tdMode="cash",
5 side="buy",
6 ordType="market",
7 sz="100",
8 )
9 print(result)
10.3 在现货交易中,如何使用目标货币参数 tgtCcy
?
在现货交易中,参数 tgtCcy
决定了数量参数 sz
的单位,它可以是交易对的基础货币或计价货币。例如,在交易对 BTC-USDT 中,基础货币是 BTC,计价货币是 USDT。
默认情况下,tgtCcy = quote_ccy
(计价货币)用于买单,这意味着您指定的 sz
是以计价货币为单位的。而对于卖单,tgtCcy
的默认值为 base_ccy
,这意味着您指定的 sz
是以基础货币为单位的。
在以下示例中,您将以市价单买入价值 100 USD 的 BTC。
1 # market order
2 result = tradeAPI.place_order(
3 instId="BTC-USDT",
4 tdMode="cash",
5 side="buy",
6 ordType="market",
7 sz="100",
8 tgtCcy="quote_ccy" # this determines the unit of the sz parameter.
9 )
10 print(result)
10.4 如何使用客户端订单 ID 参数 clOrdId
?
在下单时,您可以通过指定参数 clOrdId 来设置自己的客户端订单 ID。该 ID 可以在后续调用订单取消、修改或查询接口时,作为标识符替代 ordId 使用。
1 # market order
2 result = tradeAPI.place_order(
3 instId="BTC-USDT",
4 tdMode="cash",
5 side="buy",
6 ordType="market",
7 sz="100",
8 clOrdId="003" # you can define your own client defined order ID
9 )
10 print(result)
11. 如何获取某个订单的详细信息?
欲了解更多请查看我们的专属指南。
11. 1使用 ordId
1 result = tradeAPI.get_order(instId="BTC-USDT", ordId="497819823594909696")
2 print(result)
11.2 使用clOrdId
1 result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
2 print(result)
12. 如何取消订单?
欲了解更多请查看我们的专属指南,或通过以下方式操作:
您也可以使用 clOrdId
来替代 ordId
1 result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
2 print(result)
13. 如何修改订单?
欲了解更多请查看我们的专属指南,或通过以下方式操作:
您也可以使用 clOrdId
来替代 ordId
1 result = tradeAPI.amend_order(
2 instId="BTC-USDT",
3 ordId="489103565508685824",
4 newSz="0.012"
5 )
6 print(result)
14. 如何获取当前委托列表?
欲了解更多请查看我们的专属指南,或通过以下方式操作:
1 result = tradeAPI.get_order_list()
2 print(result)
15. 如何获取历史委托?
15.1 过去 7 天的历史委托
欲了解更多请查看我们的专属指南,或通过以下方式操作:
1 result = tradeAPI.get_orders_history(
2 instType="SPOT"
3 )
4 print(result)
15.2 过去 3 个月的历史委托
欲了解更多请查看我们的专属指南,或通过以下方式操作:
1 result = tradeAPI.get_orders_history_archive(
2 instType="SPOT"
3 )
4 print(result)
16. 如何使用 Jupyter Notebook 进一步探索欧易 API?
如需更多示例,请点击此处下载完整的 Jupyter Notebook。
备注:如中英文版本存在不一致,以英文版本为准。