如何使用Python三方库CCXT

news2024/10/7 4:27:12

 

数量技术宅团队在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://www.coloradmin.cn/o/767780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<数据结构>NO11.归并排序|递归|非递归|优化

文章目录 归并排序递归写法非递归写法修正方案1.归并一段拷贝一段修正方案2.修正区间 算法优化算法分析 归并排序的应用外排序和内排序 归并排序 递归写法 思路: 如果给出两个有序数组,我们很容易可以将它们合并为一个有序数组。因此当给出一个无序数组时&#xf…

如何解决循环引用的问题

本文已收录于专栏 《Java》 目录 概念说明发现问题解决问题分析问题具体解决注解说明代码实现效果展示 总结提升 概念说明 循环引用是指在对象之间存在相互引用的情况。具体来说,当一个对象A引用了另一个对象B,而对象B又引用了对象A,它们之间…

软件研发开发人员成本计算器

写了个简单的人员工资计算器,用最简单的人天数计算研发投入,其他费用计算稍后补充完善 软件研发成本计算 ——高级工程师中级工程师初级工程师平均日工资项目阶段高级工程师人天中级工程师人天初级工程师人天调研方案产品设计软件开发测试部署培训试运…

操作系统(王道)- 初识操作系统

一、什么是操作系统? 操作系统可以这么理解 操作系统的定义: 操作系统是整个计算机的硬件和软件的管理者!!! 二、操作系统的功能和目标 作为计算机硬件和软件的管理者,操作系统做了什么? 操作系…

安达发|工业系统APS软件与MES软件有哪些区别?

MES 和 APS 有什么区别?MES 是一个制造执行系统,APS 是一个高级计划排程系统系统,两者是互补的关系,APS 和 MES 可以实现计划和车间执行的闭环管理模式。MES 和 APS 有什么区别? mes和aps的区别: MES 是智能化工厂…

【1++的Linux】之进程(一)

👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 文章目录 一,冯诺依曼与操作系统概念1.1 冯诺依曼体系结构1.2 操作系统 二,进程的基本概念 一,冯诺依曼与操作系统概念 1.1 冯诺依曼体系结构 如…

如何关闭网页版【知乎】等页面的登录弹窗(以谷歌浏览器为例)

如何关闭网页版【知乎】等页面的登录弹窗(以谷歌浏览器为例) 在不登陆知乎的情况下仍然可以正常浏览页面,可是每次打开新页面会重复出现弹窗要求用户登录。如何屏蔽掉这一弹窗呢? 在浏览器中把知乎网址设置为禁止使用javascript 在chrome的…

C#盯盘小工具,“监”

也是一个小工具,用来看大A股票和主要指数行情的。 如果你是一个上班族,同时你也是一颗小韭菜,a股在开市交易盘中时刻惦记着股票是涨了还是跌了,却不能时刻盯着手机看行情,也不能在电脑上开着同花顺来回切窗口&#xff…

4.CSS(一)

目录 一、CSS简介 二、CSS基础选择器 (一)标签选择器 (二)类选择器 类选择器-多类名 (三)id选择器 (四)通配符选择器 (五)总结 三、CSS字体属性 &…

Acwing.906 区间分组(贪心)

题目 给定N个闭区间[ai,bi],请你将这些区间分成若千组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。 输出最小组数。 输入格式 第一行包含整数N,表示区间数。 接下来N行,每行包含两个整数ai…

【算法基础】2.2 字典树/前缀树 Trie

文章目录 知识点cpp结构体模板 模板例题835. Trie字符串统计❤️❤️❤️❤️❤️143. 最大异或对😭😭😭😭😭(Trie树的应用) 相关题目练习208. 实现 Trie (前缀树)1804. 实现 Trie (…

轮转数组——左旋数组,右旋数组

题目链接:力扣 左旋转字符串:【1234567】—左旋3下—>【4567123】 反转区间为前n的子串【3214567】反转区间为n到末尾的子串【3217654】反转整个字符串【4567123】 右旋转字符串:【1234567】—右旋3下—>【5671234】 反转整个字符…

一图看懂 pandas 模块(1):提供高性能、易用的数据结构和数据分析工具,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pandas 模块:提供高性能、易用的数据结构和数据分析工具,资料整理笔记(大全) 🧊摘要🧊模块图&#x…

SAP-MM-物料版次

业务背景介绍 UF公司其产成品会根据客户需求进行细节上零件变更,每次都需新增物料主数据以及搭建新的BOM和对应的工艺路线进行数据处理(即对客户A0001的产成品从A0010到B0010的变化,但物料描述还是原来的描述) 新增物料编号进行库存管控是较为合理的需求,但是因UF销售业务员…

在LLM的支持下使游戏NPC具有记忆化的方法

问题 使用GPT这样的LLM去处理游戏中的NPC和玩家的对话是个很好的点子,那么如何处理记忆化的问题呢。 因为LLM的输入tokens是有限制的,所以伴随着问题的记忆context是有窗口大小限制的,将所有的记忆输入LLM并不现实。 所以这里看到了stanfo…

Damiler EDI 项目 Excel 方案开源介绍

准备下载和运行 Daimler EDI 到 Excel 使用 Excel 生成一系列 EDI 文档与 Daimler 通信。 下载工作流 下载示例文件 Daimler EDI & Excel 方案简介 本文将继续分享Daimler示例工作流:使用Excel端口和Email端口生成一系列文件,完成与Daimler的…

解锁编程世界的魔法密码:探索算法的奥秘与应用

一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~* 一:引言 算法是解决问题和优化程序性能的核心,它是一…

Redis实战案例20-优化秒杀(一人一单)

查询优惠券判断秒杀库存;查询订单;校验一人一单;减库存、创建订单; 以上均为串行操作,执行效率不高,在高并发的场景下性能很一般 问题引出:如何在Redis中完成秒杀判断和校验一人一单的问题&…

【LeetCode热题100】打卡第39天:数组中第K个最大元素最大正方形

文章目录 【LeetCode热题100】打卡第39天:数组中第K个最大元素&最大正方形⛅前言 数组中的第K个最大元素🔒题目🔑题解 最大正方形🔒题目🔑题解 【LeetCode热题100】打卡第39天:数组中第K个最大元素&…

若依(Ruoyi)前后端分离版项目部署到服务器(Linux环境)后,刷新页面报错:404 Not Found

原文章:若依(ruoyi)前后端分离版使用教程之若依后端部署阿里云服务器步骤(超详细)_蓝多多的小仓库的博客-CSDN博客 问题: 在若依项目部署服务器后,可以正常运行,但如果执行刷新页面操作,便会出现404 Not Found。 原因: Nginx未正确配置。由于后台路由采用History模式…