自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

六月闻君

好好学习,自娱自乐

  • 博客(252)
  • 收藏
  • 关注

原创 Backtrader、Zipline、PyAlgoTrade 三个开源量化回测工具比较

Backtrader、Zipline、PyAlgoTrade 三个开源量化回测工具比较

2025-03-28 14:11:50 857

原创 用随机数模拟K线

模拟K线图,思路是用正弦和余弦曲线,叠加做出波动,以此为基础,做成OLHC ,绘图,经过调整,基本上实现了模拟的K线图波动。绘图后,就是上下影线比较长。

2025-03-26 15:50:09 122

原创 凯利公式在仓位管理的模拟计算

凯利公式(Kelly Criterion)是一种用于确定在有利赌局或投资中最佳下注比例的数学公式,其核心思想是通过最大化长期资本增长率来优化投资决策。以下是详细解释及Excel模拟说明:一、凯利公式原理与公式核心思想在胜率已知的赌局中,通过计算最优下注比例,使得长期收益最大化,同时避免破产风险。公式通过平衡风险与收益,给出一个理性的投注比例。公式形式凯利公式的基本形式为:其中:f = 最优下注比例(应投入资金的百分比)b = 赔率(净收益与下注金额的比率,不含本金)

2025-03-25 15:03:35 191

原创 MySQL报错:2003, “Can‘t connect to MySQL server on ([WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次

Python 并行访问数据库,执行一段时间后,程序报错:2003, "Can't connect to MySQL server on '192.168.8.8' ([WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。调整注册表中TCPIP参数解决。

2024-12-17 14:09:50 280

原创 MySQL临时表在Python调用过程中的生命周期

MySQL的临时表的生命周期,在Python调用过程中,可以看到生命周期是和db对象一致,如果db对象关闭后,临时表也就不存在了。如果db对象不关闭,只关闭cursor对象,再次打开cursor ,MySQL的会话没有结束,临时表对象还存在。

2024-11-28 14:03:55 372

原创 MySQL 两个数据库之间数据交互——Federated Tables

虚拟机中的MySQL数据库需要与外部的物理机MySQL数据库,进行数据交互。通过MySQL的FEDERATED存储引擎允许创建一个指向远程数据库表的本地表。

2024-11-26 18:49:27 618

原创 Oracle12c数据泵备份提示ORA-31626: 作业不存在

Oracle12c数据泵备份提示ORA-31626: 作业不存在

2024-11-26 08:21:00 514

原创 MySQL 报错:1137 - Can‘t reopen table

MySQL中出现错误1137 "Can't reopen table "通常是由于在同一个查询中多次引用了同一个临时表。根据MySQL的限制,不能在同一查询中多次引用一个临时表,即使是使用不同的别名,这个限制也适用于存储过程中对临时表的多次引用。

2024-11-22 18:07:56 850

原创 Backtrader探讨如何处理除权分红

在Backtrader回测过程中,回测过程中,如果策略是使用价格均线,就会产生误差,特别是除权分红比例比较大的情况下,也会对回测计算的结果造成不小的影响。如果希望从市场历史数据中获取更多关于股票真实价值的信息,并且是在考虑长期投资效果,回测周期是在一年以上,甚至更长,希望能够反映股票在分红和除权后的实际表现,后复权可能更适合。如果是三个月左右的中短期投资回测,就直接用市价即可。前复权,实际上是将未来的除权分红信息倒推到过去,以此为基准回测计算,应该就是使用了未来函数,是不准确的。用数据测试验证。

2024-11-21 15:25:20 1038

原创 A process in the process pool was terminated abruptly while the future was running or pending

在使用 Python 的 multiprocessing 模块时遇到错误 “A process in the process pool was terminated abruptly while the future was running or pending”,意味着某个子进程在执行任务时发生了异常或被意外终止 。为了保证代码能够全量执行完,再通过日志,解决处理并行过程中出现的问题。

2024-11-05 14:41:33 1471

原创 MySQL:Can‘t change size of file (OS errno 28 - No space left on device)

Can't change size of file (OS errno 28 - No space left on device) ,问题原因和处理过程

2024-11-05 14:08:43 578

原创 MySQL中用with as 解决临时表的问题

写存储过程中,经常需要做过渡的临时表,主要是字段多,但是MySQL不支持,提示1786 - Statement violates GTID consistency: CREATE TABLE ... SELECT. 或者MySQL调整参数。WITH 子句,称为 Common Table Expressions(CTE),是一种在 SQL 查询中创建临时结果集的方法,存在于单个语句的范围内,以便在查询中多次引用。

2024-09-11 15:14:15 622

原创 MySQL 变量查询如何使用索引

在存储过程中,有通过变量进行数据查询,执行时间长,不符和预期,经过分析,发现是有一个变量查询的效率低,不走索引造成的。经过分析,通过使用预处理语句允许你指定查询模板,并在执行时传入参数,才能够使用索引,大幅提高查询效率。

2024-09-11 10:14:20 1338

原创 timedatectl /date /hwclock 命令

timedatectl date hwclock 命令在Linux系统中都用于修改系统时间,但它们在功能、使用方式和适用场景上存在一些区别。

2024-09-11 08:54:45 772

原创 Backtrader实现三层滤网策略‌

例如,在日线图上,当周线趋势向上时,日线图上的下跌可以被视为买入机会。‌第一层滤网‌:在大周期(如周线图)中,使用趋势型指标来判断主要趋势的运行方向,这被称为“市场潮汐”或“大周期的趋势”。从策略角度看,三重滤网,可以做成四重,多重滤网,提高交易的稳定性和可靠性,大大降低交易的频率。还存在另外一个情况,如果股票没有明显的波段,大的趋势,比如601169.SH,那么策略就是在波动中不断交易和亏损。可以看出交易长度短的交易,都是横盘波动时产生的虚假信号,造成频繁交易,频繁交易的持股时长都短,都是亏损交易。

2024-09-03 09:24:53 762

原创 Backtrader 实现和理解海龟交易法

跟海龟交易法,从资金管理,买入/加仓,止盈,止损,四个方面,用backtrader实现,通过两版的代码,优化前和优化后的对比,做全量市场的回测比较,充分理解海龟交易法的理念。

2024-08-26 20:22:58 1627

原创 fastdtw计算两个股票序列之间的相似性(最小距离)

Dynamic time warping:动态时间扭曲 (DTW) 是一种在两个时间序列之间找到最佳对齐的技术,其中一个时间序列可以通过拉伸或收缩其时间轴来非线性地“扭曲”。在语音波形中,每个语音的持续时间和声音之间的间隔是允许变化的,但整体语音波形必须相似。下面做点有趣的测试,用沪深300的指数,测试范围两年的数据,在股票中寻找走势与之相似的股票。既然是时间序列的数据对比,分析相似度,那么当然也可以用于分析两个股票走势的相似度。通过两个图示对比,走势的相似度还是比较接近的,拟合的比较完美。

2024-08-23 11:44:19 707

原创 plt绘图提示:findfont: Generic family ‘sans-serif‘ not found because none of the following families were

缓存字符集文件,fontlist-v330.json ,查询文件中没有显示 SimHei.ttf。由于使用anaconda3 ,在虚拟环境中的字符集路径下,增加SimHei.ttf字符文件。删除 字符集缓存文件 : fontlist-v330.json。fontlist-v330.json ,已经有字体的配置信息了。所有的输出都清理了,再次运行代码,不再报错!,然后在菜单中选择重启内核,清理输出。但是在jupyter中,还是报错。安装 fontconfig。执行代码,还是报错。

2024-08-21 11:33:01 1247

原创 Linux 安装TA_Lib采坑记录

重新安装了一个Linux环境,需要重新安装TA_Lib ,忘记了上次如何安装的,花了不少时间。重新记录一下安装过程,和遇到的问题。在Linux环境下,Python == 3.7 ,用pip直接安装TA_Lib主要错误:错误描述如下:检查需要的C++都正常。直接用conda安装直接报错:提示问题,SSL证书问题。关闭证书SSL再次执行,报错:最后通过源文件安装,安装成功。详细记录安装过程。

2024-08-19 16:01:41 551

原创 MySQL 窗口函数OVER实现均线计算

在MySQL数据库中,需要计算均线数据,通过over窗口函数实现。MySQL从8.0开始支持窗口函数,也叫分析函数。窗口函数分为静态窗口和滑动窗口,静态窗口的大小是固定的,滑动窗口的大小可以根据设置进行变化,在当前窗口下生成子窗口。通用的语法格式:核心语句:三个排名函数:聚合函数取值函数在between and 语句中定义,分为两类 rows 和 range:举例说明:说明:当order by后面缺少窗口从句条件,窗口规范默认是rows between unbounded preceding a

2024-08-16 11:06:39 828 1

原创 MySQL预处理语句(PREPARE)和动态SQL

通过存储过程接收一个字符串形式的SQL条件(where后的条件),并将其直接用于SELECT语句的WHERE子句中,使用预处理语句(PREPARE)和动态SQL来实现这一功能。通过存储过程,将处理结果返回。

2024-08-09 11:16:15 933 1

原创 Python的并行任务(进程池、线程池)

在Python中,进程(Process)和线程(Thread)是并发编程的两种主要方式,它们各自适用于不同的场景。了解何时使用进程或线程,可以帮助你更有效地设计并发程序。使用内置基本库concurrent.futures来实现并发,简单使用这个模块,包括并行线程和并行进程执行器 。

2024-08-05 19:57:48 2010

原创 理解函数参数中的*(星号)和**(双星号)

序列类型:如‌列表(List)、‌元组(Tuple)、‌字符串(String)等。这些对象内部包含了一系列按顺序排列的元素,可以通过索引访问其中的元素。集合类型:如集合(Set)和‌冻结集合(Frozen Set)。可变数量的关键字参数:在函数定义时,**kwargs可以接受可变数量的关键字参数,参数被封装为一个字典。生成器类型:通过生成器函数或生成器表达式创建的对象,可以逐个生成值。对象,将其元素分配给函数的参数或在列表、元组等数据结构中进行拼接。,将其键值对传递给函数的参数或在字典中进行拼接。

2024-08-05 14:25:44 687

原创 CentOS安装Oracle11g客户端

在centos 环境安装oracle的客户端环境,用rpm包安装环境,访问oracle的数据库。

2024-07-24 14:49:09 547

原创 Anaconda下安装配置Jupyter

Linux Anaconda 下安装配置jupyter ,参数设置,全流程。

2024-07-22 17:20:07 1698

原创 MySQL 删除重复记录

SELECT语句复制表可能会遇到问题,因为这种操作会生成一个新的事务,而这个事务在复制环境中需要保持一致性。如果源表中包含有GTID信息的列,或者表结构中包含某些特性(如自动递增的ID),这种复制方式可能会影响GTID的一致性。一个表中有600多万数据,其中在字段ts_code和trade_date上有索引,根据ts_code和trade_date 综合查询,有17多万的重复记录。如果有足够的权限,并且在复制完成后能够确保GTID的一致性,可以在复制期间暂时禁用GTID。千万不能用 in 删除,太慢!

2024-07-19 16:46:47 380

原创 impdp导入数据ORA-39142: 版本号 5.1不兼容错误

源数据库12.2导出的dmp文件版本是5.1,目标数据库的版本12.1,dmp版本位4.1,因此在导入时出现ORA-39142: 版本号 5.1 不兼容。从源数据库中重新增加version参数的dump文件,再次导入到12.1的数据库中,开始导入数据正常,不再报错ORA-39142。估计原因是在导出的时候,统计信息就没有能够正常的导出,在导入的时候,就发生了致命错误。是索引的统计信息,可以暂时不予理会,数据和表结构能够正常导出,就可以了。

2024-06-28 20:00:44 1518

原创 Backtrader 量化回测实践(7)——在jupyter中执行bt的samples

Backtrader提供了大量的测试用例,在samples目录下,测试程序主要都是用argparse解析参数,但是不能在jupyter中直接执行。找到一个解决方法,可以方便在jupyter中执行samples中的示例。

2024-04-11 09:07:31 624

原创 Backtrader 量化回测实践(6)——量化回测评价工具Quantstats

quantstats主要有三个功能,对每个功能进行解读和测试,提供测试用例: 1.统计功能,计算各类性能指标,夏普率,胜率,波动率等; 2.绘图功能,可视化性能指标,最大回撤,滚动统计,月度回报率等; 3.报告功能,生成度量报告,批量绘图,创建HTML报告;

2024-04-09 10:29:57 4668 1

原创 Windows下Oracle表死锁处理过程

在Windows下Oracle锁表后的处理过程,回顾Oracle锁的定义。

2024-04-07 15:26:22 1131

原创 Backtrader 量化回测实践(5)—— Datafeed 增加列数据

在官网上的拓展示例是 GenericCSVData ,没有拓展pandas数据加载的示例,实际中数据库读取到pandas中,从pandas中加载到Cerebro中,需要解决pandas拓展Cerebro的数据加载的默认列。

2024-03-22 10:13:44 1182

原创 Backtrader 量化回测实践(4)—— 投资组合股票回测同一策略

需要将一组股票作为一个投资组合,验证一个策略。观察操作是否具有一致性。比如在某一段时间,组合中的买卖操作,有一定的相似度。对所有股票依次做单独的策略回测,不好对比,不好直观验证策略的优劣。基于backtrader,编写多股票同时回测程序。以MACD简单策略演示。需要关注理解策略中的四个关键点 。

2024-03-15 08:50:56 2470

原创 落入datetime.date 和 numpy.datetime64 的使用大坑

梳理 datetime.date / numpy.datetime64 / pandas.Timestamp 的特点,关系和区别 ,不同格式之间日期转换。

2024-03-08 10:53:30 4104 1

原创 Python遍历文件夹包括特定字符的文件名和路径

遍历文件夹和子文件夹,并找出文件名中包含特定字符串 。

2024-03-07 11:00:34 878

原创 用pandas高效合并文本文件

通过pandas合并两个文本文件,按文本文件中的字段进行合并,组合成新的文本文件。用pandas的 merge方法,简洁流畅,效率高。

2024-03-07 08:26:35 517

原创 DataFrame空值的判断和处理

DataFrame查询空值的判断和处理的问题,对dataframe的索引查询定位的理解有进了一步。

2024-03-06 09:47:04 1457

原创 Backtrader 量化回测实践(3)—— 主要对象理解

在策略中使用的大部分数据形式:包括Indicator 、signal 、逻辑操作符、数学计算、切片访问的研究测试。重新回顾一下使用的主要对象,理解对象的性质,如何在实践中应用 。

2024-03-04 11:19:22 1137

原创 Python使用pymysql和cx_Oracle插入数据的对比

使用Python向MySQL和Oracle数据库插入数据,常用的数据类型字符串,日期,数字,insert命令的拼接异同之处进行对比。

2024-02-29 07:58:59 642

原创 Python多层嵌套的dict递归解析

遇到多层嵌套的dict ,如何能解析为只有一维的dict ,方便后续数据处理。

2024-02-24 15:59:52 656

原创 mplfinance 使用make_addplot做复杂股票走势图

关于make_mpf_style()函数中的marketcolors参数。不是ndarray类型,直接把报错,折腾了半天才找到原因!

2024-02-22 15:04:11 2728 1

Backtrader 文档学习-Target Orders

Value 计算方法,用Excel模拟

2024-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除