[量化投资-学习笔记012]Python+TDengine从零开始搭建量化分析平台-策略回测
上一章节《MACD金死叉策略回测》中,对平安银行这只股票,按照金死叉策略进行了回测。
但通常我们的股票池中有许多股票,每完成一个交易策略都需要对整个股票池进行回测。
下面使用简单的轮询,对整个股票池进行回测。
# 计算单只股票的策略收益,返回收益率。
def backtrader(fcode):sql_query = f"SELECT tdate as ts, close FROM {db_name}.{table_name} WHERE fcode='{fcode}' "result = get_request(sql_query)close_prices = [row[1] for row in result]macd_line, signal_line, macd_histogram = calculate_macd(close_prices,12,26,9)crossing_points = check_macd(macd_line, signal_line)profits = calculate_profit(close_prices, crossing_points)capital = profits[0]profit = profits[-1]pro_rate = (profit-capital)*100/capitalreturn pro_rate
# 获取所有股票,按轮询方式进行测试
pfile = open(file,'a',encoding='UTF-8')
sql_code = f"select distinct tbname,fcode,fname from {db_name}.{table_name} order by fcode ;"
result = get_request(sql_code)
df_code = pd.DataFrame(result, columns=['tbname','fcode', 'fname'])
prl = []
for row in df_code.itertuples(index=False):try:profit_rate = backtrader(row.fcode)except:profit_rate = 0prl.append(profit_rate)pfile.write(f"Name:{row.fname}\t Code:{row.fcode}\t Pro_Rate:{profit_rate}\n")
df_code['Profit_Rate'] = prl
pfile.close()
以下是部分股票的收益展示

整个程序实现逻辑如下:
MACD交易策略回测程序
该程序用于进行MACD交易策略的回测。给定一组股票数据,程序会根据MACD指标的金叉和死叉信号进行买入和卖出操作,并计算收益率。
程序功能
- 通过RESTful请求获取股票数据
- 计算MACD指标
- 判断MACD金叉和死叉
- 计算收益率
- 计算所有股票代码的收益率,并输出到文件
程序依赖
该程序依赖以下库:
- requests:用于发送RESTful请求
- json:用于解析RESTful请求返回的结果
- matplotlib:用于结果可视化
- pandas:用于数据处理和分析
- numpy:用于数值计算
使用方法
- 安装所需的Python库:在控制台中运行以下命令安装依赖库:
pip install requests json matplotlib pandas numpy
-
下载程序文件:将程序代码保存为一个Python脚本(例如
macd_all_code.py)。 -
运行程序:在控制台中运行以下命令来执行程序:
python macd_all_code.py
程序细节
get_request(sql)函数用于发送RESTful请求,获取查询结果。calculate_macd(prices, short_period, long_period, signal_period)函数用于计算MACD指标的值。calculate_ema(prices, period)函数用于计算指数移动平均值(Exponential Moving Average,EMA)。check_macd(macd_line, signal_line)函数用于判断MACD金叉和死叉的发生。calculate_profit(prices, signals)函数用于计算收益率。backtrader(fcode)函数用于执行回测策略,并返回收益率。- 基于给定的股票数据,程序使用循环遍历所有股票代码,并计算每个股票的收益率。
- 程序将结果以文件形式输出,输出文件名为
Profit.txt,包含股票的名称、代码和收益率。
相关文章:
[量化投资-学习笔记012]Python+TDengine从零开始搭建量化分析平台-策略回测
上一章节《MACD金死叉策略回测》中,对平安银行这只股票,按照金死叉策略进行了回测。 但通常我们的股票池中有许多股票,每完成一个交易策略都需要对整个股票池进行回测。 下面使用简单的轮询,对整个股票池进行回测。 # 计算单只…...
MySQL 查看 event 执行记录
文章目录 1. 查看 EVENT 执行记录2. 示例3. 结论 MySQL 是一款流行的关系型数据库管理系统,它提供了许多功能来帮助用户管理和操作数据库。其中之一就是 EVENT事件,它允许用户在特定的时间间隔内自动执行指定的操作,类似于计划任务。 在使用 …...
开发知识点-Vue-Electron
Electron ElectronVue打包.exe桌面程序 ElectronVue打包.exe桌面程序 为了不报错 卸载以前的脚手架 npm uninstall -g vue-cli安装最新版脚手架 cnpm install -g vue/cli创建一个 vue 随便起个名 vue create electron-vue-example (随便起个名字electron-vue-example)进入 创建…...
【线性代数】反求矩阵A
...
MyBatis 中的 foreach 的用法
本文将介绍 MyBatis 中的 <foreach> 标签的灵活应用,并结合财经领域的数据处理场景,阐述其在财经系统开发中的重要性和应用价值。 MyBatis中的<foreach>标签简介 MyBatis 是一个优秀的持久层框架,它简化了数据库操作的流程&…...
交叉编译 mysql-connector-c
下载 mysql-connector-c $ wget https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.5-src.tar.gz 注意:mysql-connector 的页面有很多版本,在测试过程中发现很多默认编译有问题,其中上面的 6.1.5 的版本呢是经过测…...
企业如何选择正确的存储服务器租用?
数据时代的发展,让越来越多的企业选择使用存储服务器来存储数据,今天小编就带大家了解一下企业应该怎么正确的选择存储服务器吧,要关注哪些方面的问题呢? 第一点肯定是看自己的需求,不论是选择什么服务器最重要的一点就…...
45.跳跃游戏II
45.跳跃游戏II 题目描述:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i …...
css style、css color 转 UIColor
你能看过来,就说明这个问题很好玩!IT开发是一个兴趣,更是一个挑战!兴趣使你工作有热情。挑战使让你工作充满刺激拉满的状态!我们日复一日年复一年的去撸代码,那些普普通通的功能代码,已经厌倦了…...
C++(20):typename声明类的子类型的简化
C++:typename声明类的子类型_风静如云的博客-CSDN博客 介绍了某些时候需要使用typename来告诉编译器,这是一个类的类型。 C++20简化了对typename的需求,对于明显是类型的地方,可以不再使用typename进行说明: #include <iostream> #include <string>using na…...
一个java文件的JVM之旅
准备 我是小C同学编写得一个java文件,如何实现我的功能呢?需要去JVM(Java Virtual Machine)这个地方旅行。 变身 我高高兴兴的来到JVM,想要开始JVM之旅,它确说:“现在的我还不能进去,需要做一次转换&#x…...
C# wpf 实现任意控件(包括窗口)更多拖动功能
系列文章目录 第一章 Grid内控件拖动 第二章 Canvas内控件拖动 第三章 任意控件拖动 第四章 窗口拖动 第五章 附加属性实现任意拖动 第六章 拓展更多拖动功能(本章) 文章目录 系列文章目录前言一、添加的功能1、任意控件MoveTo2、任意控件DragMove3、边…...
一种ADC采样算法,中位值平均滤波+递推平均滤波
前言 在实际AD采集场景中,会出现周期性变化和偶然脉冲波动干扰对AD采集的影响 这里使用中位值平均滤波递推平均滤波的结合 参考前人写好的代码框架,也参考博主GuYH_下面这篇博客,在此基础上稍作修改,写出这篇博客,能…...
技能培训知识付费服务预约小程序的效果如何
技能、证书往往是很多人生活的基本,行业岗位竞争激烈,每个人都希望有多种技能或工作所需,而需求持续增加下,相关技能培训机构也很多,比如常见的考证、钢琴培训、针灸培训、花艺培训等。 很多行业都需要学习或考证&…...
SparkSQL之Catelog体系
按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念。在关系数据库中,Catalog是一个宽泛的概念,通常可以理解为一个容器或数据库对象命名空间中的一个层次,主要用来解决命名冲突等问题。 在Spark SQL系统中,…...
【操作系统面试题(32道)与面试Linux命令大全】
文章目录 操作系统面试题引论1.什么是操作系统?2.操作系统主要有哪些功能? 操作系统结构3.什么是内核?4.什么是用户态和内核态?5.用户态和内核态是如何切换的? 进程和线程6.并行和并发有什么区别?7.什么是进…...
Qt TCP/IP网络通信
TCP服务器部分: 创建TCP服务器: #include <QTcpServer> QTcpServer *tcpServer; //TCP服务器 tcpServernew QTcpServer(this);TCP服务器来连接的信号与槽: connect(tcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection()…...
全域旅游“一机游”智慧旅游平台解决方案:PPT全文48页,附下载
关键词:智慧文旅解决方案,智慧旅游解决方案,智慧旅游平台建设方案,智慧文旅综合运营平台,智慧文旅建设方案 一、智慧文旅一机游定义 智慧文旅一机游是一种新型的旅游方式,它通过智能化的设备和系统&#…...
Ubuntu 22.04 (WSL2) 安装 libssl1.1
废话不多说!!! 步骤一: echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list 步骤二: sudo apt-get update 步骤三:…...
Unity 跑酷游戏全部脚本(完结)
脚本1 触发器脚本 这个脚本是主角身上的脚本,用于检测是否碰到其他触发器,并做出对应的行为 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ColliidisonTrigger : MonoBehaviour { //触发检测 …...
解密高效目标检测:MobileNet-SSD实战应用全解析
解密高效目标检测:MobileNet-SSD实战应用全解析 【免费下载链接】MobileNet-SSD Caffe implementation of Google MobileNet SSD detection network, with pretrained weights on VOC0712 and mAP0.727. 项目地址: https://gitcode.com/gh_mirrors/mo/MobileNet-S…...
Typora沉浸式写作体验增强:集成Phi-4-mini-reasoning实现智能排版与校对
Typora沉浸式写作体验增强:集成Phi-4-mini-reasoning实现智能排版与校对 1. 写作痛点与解决方案 对于Markdown写作爱好者来说,Typora以其简洁优雅的界面和所见即所得的编辑体验赢得了大量忠实用户。但在实际写作过程中,我们常常会遇到一些影…...
AppleRa1n终极指南:3步轻松绕过iOS 15-16设备激活锁
AppleRa1n终极指南:3步轻松绕过iOS 15-16设备激活锁 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 当你面对一台显示"此iPhone已与物主锁定"的iOS设备时,那种无力感…...
DownKyi视频下载工具:3步快速上手与5大实用技巧
DownKyi视频下载工具:3步快速上手与5大实用技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)…...
Qwen-Image-2512-SDNQ Web服务部署教程:CSDN GPU实例SSH连接与日志实时查看
Qwen-Image-2512-SDNQ Web服务部署教程:CSDN GPU实例SSH连接与日志实时查看 1. 项目概述 Qwen-Image-2512-SDNQ-uint4-svd-r32是一个基于先进AI技术的图片生成服务,通过简单的Web界面就能将文字描述转化为高质量的图像。这个服务特别适合需要快速生成视…...
TranslucentTB完全指南:免费实现Windows任务栏透明化与个性化定制
TranslucentTB完全指南:免费实现Windows任务栏透明化与个性化定制 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB Translucen…...
WeMod增强工具完全指南:解锁高级功能的终极免费方案
WeMod增强工具完全指南:解锁高级功能的终极免费方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer WeMod增强工具(Wand-Enhance…...
CTF流量分析终极指南:5分钟掌握CTF-NetA从入门到精通
CTF流量分析终极指南:5分钟掌握CTF-NetA从入门到精通 【免费下载链接】CTF-NetA CTF-NetA是一款专门针对CTF比赛的网络流量分析工具,可以对常见的网络流量进行分析,快速自动获取flag。 项目地址: https://gitcode.com/gh_mirrors/ct/CTF-Ne…...
零基础入门AudioLDM-S:手把手教你用文字生成雨林鸟鸣、飞船引擎声
零基础入门AudioLDM-S:手把手教你用文字生成雨林鸟鸣、飞船引擎声 想象一下,你正在制作一段关于热带雨林的视频,需要逼真的鸟鸣和流水声作为背景音效。或者你正在开发一款太空游戏,需要各种科幻飞船的引擎轰鸣声。传统方法可能需…...
零基础也能玩转!QWEN-AUDIO智能语音合成系统5分钟快速部署教程
零基础也能玩转!QWEN-AUDIO智能语音合成系统5分钟快速部署教程 想不想让电脑开口说话,而且声音还能像真人一样有感情?今天,我就带你用5分钟时间,把一个专业的智能语音合成系统搬到你自己的电脑上。不需要懂代码&#…...
