如何使用Python三方库CCXT

news/2024/7/3 0:31:00

 

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


如何安装CCXT,如何查询帮助文档

安装CCXT

对于Python语言,安装CCXT与其他Python三分库的方式是一样的。使用语句pip install ccxt即可安装。

安装完成后,我们可以尝试使用import ccxt导入CCXT库,如果运行该语句没有报错,说明CCXT已经成功导入

CCXT Manual (帮助文档)

CCXT提供了详细的帮助文档,帮助文档的侧边栏提供了不同API接口的分类,包括MarketAPI、Implicit API、Unified API、Public API、Private API等类别,方便用户根据自己的需要进行分类查询。

而对于每个API,CCXT不仅给出了调用函数名、参数、示例的说明,也给出了调用后的返回结构数据。图例是Market分类中Currency Structure的返回结构。

CCXT初始化

介绍完CCXT的安装以及如何查找帮助文档,接下来我们开始使用CCXT。CCXT的初始化可以分为三步,其中第三步可选,前两步必做。

第一步,加载ccxt模块

第二步,初始化,调用ccxt

第三步,获取市场信息

# 加载ccxt模块
import ccxt
print(ccxt.exchanges)

# market API
exchange = ccxt.exchange()
markets = exchange.load_markets()
print(exchange.fetch_markets())
print(exchange.fetchCurrencies())

然后通过markets变量的总数我们可以看到,详细交易信息也由CCXT通过dict的数据格式反馈给我们了。

如何调用CCXT行情API

初始化CCXT后,接下来我们再尝试调用CCXT的现货行情API,获取各种各样的行情数据。CCXT帮我们封装好用得到的行情数据,都可以用标准方法,一键调用。

我们通过一个循环,实现对所有数据调用查询,包括:

# quote API
# 设置间隔2秒
delay = 0.5
for symbol in exchange.markets:
    print(symbol)
    print(exchange.fetch_order_book(symbol, 10))
    time.sleep(delay)
    print(exchange.fetch_trades(symbol, limit=5))
    time.sleep(delay)
    print(exchange.fetch_ticker(symbol))
    time.sleep(delay)
    print(exchange.fetch_ohlcv(symbol, '1d'))
    time.sleep(delay)

来看获取后返回的数据结构订单簿(以获取10档盘口数据为例)

公开成交数据

k线数据(以日线为例)

如何调用CCXT交易API

在熟悉了行情API后,我们再来尝试使用CCTX的交易API。但使用交易API前必须注意的是,由于行情API是公有API,而交易API是私有API,所以我们必须调用CCXT的方法,把key传入刚才创建的交易所变量,才能实现调用私有API的权限,传入方法如下

api_key = ""  
secret_key = ""  
exchange.apiKey = api_key
exchange.secret = secret_key

然后,我们可以开始执行一系列与私有API相关的操作,包括:

a. 资产查询

b. 订单查询

c. 成交查询

d. 报单

e. 撤单

# trade API
# 资产查询
exchange.fetch_balance()
# 订单查询(依次是所有、未完成、已完成订单)
exchange.fetchOrders(symbol)
exchange.fetchOpenOrders(symbol)
exchange.fetchClosedOrders(symbol)
# 成交查询
exchange.fetchMyTrades(symbol)
# 报单(依次是市价、限价、买报单、卖报单)
exchange.create_order(symbol, 'market', 'buy', amount)
exchange.createLimitBuyOrder(symbol, amount, orderprice)
exchange.createLimitSellOrder(symbol, amount, orderprice)
exchange.createMarketBuyOrder(symbol, amount)
exchange.createMarketSellOrder(symbol, amount)
# 撤单
exchange.cancel_order(order_id)

对于报单、撤单,如果报单撤单成功,返回的信息是报单的order_id或撤单的order_id,如果错误,会返回相应错误代码及错误原因,在此不一一举例,

CCXT使用小栗子

最后,将我们刚才学习的CCXT初始化、调用行情API、调用交易API结合起来,就可以完成一个简单的从初始化加载Key,到获取最新行情,再到按照该行情价格下单的一个小栗子。栗子虽小,但它打通了整个CCXT的现货API。

# 加载ccxt模块
import ccxt
# 加载Key
exchange = ccxt.xxxx()
api_key = ""  
secret_key = ""  
exchange.apiKey = api_key
exchange.secret = secret_key
symbol = ''
# 获取最新行情
orderbook = exchange.fetch_order_book(symbol)
orderprice = orderbook['asks'][0][0] if len(orderbook['asks']) > 0 else None
# 按照该行情价格下买单
amount = 1
exchange.createLimitBuyOrder(symbol, amount, orderprice)

CCXT实用小技能,你Get到了吗


http://lihuaxi.xjx100.cn/news/1356289.html

相关文章

数组前缀和

前缀和 前缀和就是指前缀的和,例如在数组中,从开始到 i 就是到 i 的前缀和。前缀和一般用来求中间连续某一段的和,例如sum[i] - sum[j - 1]就可以求出j 到 i 这一段的和。 在这一道题目里面,中间某一段连续子数组和为k&#xff0…

gitlab代码merge或push事件触发jenkins job

1. jenkins安装generic webhook trigger plugin并重启服务,这个插件允许通过webhook接收器触发jenkins任务 2. 在jenkins的job配置页面,选择构建触发器-generic webhook trigger,(URL:http://JENKINS_URL/generic-webhook-trigge…

单例模式(java)

目录 概述 结构 代码实现 饿汉式(静态变量) 饿汉式(静态代码块) 懒汉式(双重检查方式) 概述 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式…

doris回归测试

doris提交pull request时一般要包含回归测试&#xff0c;回归测试的目录在doris/regression-test&#xff0c; 有文档较好的说明了回归测试过程: 回归测试 - Apache Doris 跑回归测试就是执行doris目录下的 ./run-regression-test.sh --run <回归测试名> 这个<回…

前端需要知道的三个不常用的函数式编程范式

1、柯里化函数 柯里化函数&#xff08;Currying&#xff09;定义&#xff1a;是把接受多个参数的函数变换成接受一个单一参数的函数**&#xff08;最初函数的第一个参数&#xff09;的函数&#xff0c;能夠返回接受余下的参数而且返回结果的新函数**的技术 作用&#xff1a;减…

【问题总结】Docker环境下备份和恢复postgresql数据库

目录 文章目录 以从备份恢复forest_resources库为例一、备份数据库二、需要还原的数据库准备1 删除掉远程的库。2 重新创建一个空的库。可以使用sql3 找到数据库存放的路径&#xff0c;并将备份文件上传到对应的路径下 三、 进入docker容器内部&#xff0c;执行数据库恢复附录…

Jenkins (一)

Jenkins (一) Docker Jenkins 部署 一. 安装 jenkins $ mkdir -p /home/tester/data/docker/jenkins $ vim jenkins:lts-jdk11.sh./jenkins:lts-jdk11.sh 内容 #! /bin/bash mkdir -p /home/tester/data/docker/jenkins/jenkins_homesudo chown -R 1000:1000 /home/tester/da…

注解和反射:(一)注解

P1 什么是注解 注解 Annotation 作用 不是程序本身&#xff0c;但可以对程序作出解释。&#xff08;这点和**注释Comment没区别&#xff09;可以被其他程序&#xff08;如&#xff1a;编译器&#xff09;读取 格式 // 注释名 Override// 还可以添加一些参数值 SuppressWar…