Python操作股票,快速计算收益,批量做T必备!

简介: 赶紧试试

大家好,这里是程序员晚枫,小红薯也叫这个名字。

今天继续给大家分享Python金融相关的操作代码,上次给大家分享了:【金融】如何快速计算股票的收益?1行Python代码,高效做T

上次分享的技术有一个缺点:只能计算一笔买卖的收益情况,这是一种比较理想的情况。

然而现实世界中却是:我可能在不同的高价格卖出(买入)多次,然后在一个比较低的价格一次性买回来。

今天我们就来看一下,这种贴近真实情况的操作,如何用1行Python代码快速计算出批量做T的收益。

1、问题 & 解决思路

再上代码之前,先来描述一下我们的思考过程。因为我们最终解决问题的代码非常简单,但使用代码之前,你需要知道它计算的逻辑对不对。

问题

结合上一篇的做T原理,这次引申了一点,逻辑顺序如下:

  1. 对于同1支股票做T,我在12元的时候卖出了900股,在11元的时候卖出了300股,在10元的时候卖出了800股,3次交易一共卖出了2000股。
  2. 在什么价格把这2000股买回来,才能让我这次做T的收益 > 0 呢?

解决思路

我们可以设待求的价格为x,我们需要确保2个条件同时成立

  1. 3次操作单独在x价格的收益总和S > 0,
  2. 这个大于0 的 总收益S需要 > 在x价格一次性买入2000股的手续费,
  3. 同时满足以上2个条件,并且<= x的价格,一次性买入2000股就可以这次批量做T一定是赚的。

如果觉得以上这个思路有漏洞,请在评论区告诉我~

2、上代码

如果觉得以上思路没问题,我们就开始使用这段极简代码了。先上代码再解释:

# pip install pofinance
from pofinance import MakeT

# pip install pofinance

t = MakeT()
"""
加载手续费
Args:
    w_rate: 手续费,默认万2.5
    min_rate: 单笔最低手续费,默认5元
    stamp_tax: 印花税,默认千1
"""
sale_price_num = [(900, 12), (300, 11),(800, 10)]
res=t.batch_t(sale_price_num)
print(res)

运行以上代码,可以得到以下结果(数据是我模拟的):

(2000,11.87)

其中,这次代码中有2处需要注意的地方:

  1. 和上次单次做T的代码相比,这次基于面向对象的思想,多了一个对象MakeT(),用了初始化你自己的手续费参数。具体参数见上面代码中的注释。
  2. 你只需要修改sale_price_num中的数据,交易了几次,就增加几组:(数量,卖出价格)

3、写在后面

使用Python处理股票交易信息很方便,完全免费而且速度很快,但因为开源项目代码是人写的难免出bug,再加上Python本身的一些底层的原因,难免出现计算结果和预期不符的情况。

大家在使用的过程中,一定要对计算出来的结果进行多次验证后,再进行使用!

另外,如对本代码有疑问或者建议,你可以在pofinance这个开源项目的issue中和作者进行讨论~

相关文章
|
6天前
|
Python
高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作
【6月更文挑战第20天】高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作。装饰器如`@timer`接收或返回函数,用于扩展功能,如记录执行时间。`timer`装饰器通过包裹函数并计算执行间隙展示时间消耗,如`my_function(2)`执行耗时2秒。
15 3
|
6天前
|
存储 Go 索引
牢记python对象的操作方式
【6月更文挑战第20天】在Python中,`hash()`和`is`帮助确定对象的相等性。`dir()`和`vars()`揭示对象的属性和内部表示,`__slots__`优化内存使用。列表和字典结构有不同的内存和性能特性,字典使用哈希表进行快速访问。
39 5
牢记python对象的操作方式
|
3天前
|
JSON 数据格式 索引
Python内置函数如`print()`输出信息,`len()`计算长度
【6月更文挑战第23天】Python内置函数如`print()`输出信息,`len()`计算长度,`type()`识别类型,`range()`生成序列,`sum()`求和,`min()`和`max()`找极值,`abs()`取绝对值,`round()`四舍五入,`sorted()`排序,`zip()`和`enumerate()`组合及遍历,`map()`和`filter()`应用函数。标准库如`os`用于操作系统交互,`sys`处理解释器信息,`math`提供数学运算,`re`支持正则表达式,`json`处理JSON数据。学习这些能提升编程效率。
18 5
|
1天前
|
jenkins 持续交付 API
使用Python操作Jenkins的过程详解
Python作为一种简洁、灵活且功能丰富的编程语言,可以与各种API轻松集成,Jenkins的API也不例外。借助于Python中的python-jenkins模块,我们可以轻松地编写脚本来连接到Jenkins服务器,并执行各种操作,如创建、删除、构建Jobs等。这种自动化的方式不仅提高了效率,还使得CI/CD流程更加灵活和可控。
|
7天前
|
Python
Python列表推导式是一种简洁的创建新列表的方式,它允许你在一行代码中完成对数据的操作和转换
【6月更文挑战第19天】Python列表推导式是创建新列表的简洁语法,它在一行内处理数据。表达式如`[expr for item in iterable if cond]`,其中`expr`是对元素的操作,`item`来自`iterable`,`if cond`是可选过滤条件。例如,将数字列表平方:`[x**2 for x in numbers]`。嵌套列表推导处理复杂结构,如合并二维数组:`[[a+b for a,b in zip(row1, row2)] for row1, row2 in zip(matrix1, matrix2)]`。简洁但勿过度复杂化。
14 5
|
7天前
|
Python
Python教程:Python中的输入与输出操作
在编程语言中,输入(Input)和输出(Output),简称I/O,是基础且重要的概念。Python作为一门易于学习且功能强大的编程语言,在处理输入和输出方面提供了多种方式。本文将深入探讨Python中的输入输出操作,包括标准输入输出、文件操作、以及网络I/O等领域
18 4
|
6天前
|
SQL Oracle 关系型数据库
Python连接数据库进行数据查询的操作代码
mysql数据库(mariadb) 连接数据库 首先,你需要使用MySQLdb.connect()函数建立与MySQL数据库的连接。你需要提供数据库服务器的地址(host),用户名(user),密码(passwd),以及你想要操作的数据库名称(db)。 创建Cursor对象 一旦建立了数据库连接,你可以使用连接对象的cursor()方法来创建一个cursor对象。这个方法返回一个cursor实例,你可以使用这个实例来执行SQL查询和命令。
|
8天前
|
Python
【干货】python xlwt写入excel操作
【干货】python xlwt写入excel操作
10 2
|
12天前
|
缓存 Python
[译]Python 和 TOML:新最好的朋友 (2) 使用Python操作TOML
[译]Python 和 TOML:新最好的朋友 (2) 使用Python操作TOML
|
12天前
|
开发者 Python
Python零基础入门-4 使用函数减少重复操作
Python零基础入门-4 使用函数减少重复操作