当前位置: 首页 > news >正文

[量化投资-学习笔记011]Python+TDengine从零开始搭建量化分析平台-MACD金死叉策略回测

在上一章节 MACD金死叉中结束了如何根据 MACD 金死叉计算交易信号。

目录

    • 脚本说明文档(DevChat 生成)
    • MACD 分析脚本
      • 安装依赖库
      • 参数配置
      • 查询与解析数据
      • 计算 MACD 指标
      • 判断金叉和死叉
      • 计算收益
      • 绘制图形
      • 运行脚本

本次将根据交易信号,模拟交易。更加历史数据对MACD金死叉交易策略进行回测,看一下收益如何。

下面进行一个简单的实现:

    1. 定义一个资金池
    1. 当出现买入信号且无仓位时,全仓买入。买入价为第二日收盘价(其实以第二日开盘价计算比较合理)。
    1. 当出现卖出信号且有仓位时,清仓。卖出价为第二日收盘价(同样,也是以第二日开盘价更合理)
    1. 以下程序未计算印花税等交易费用。
    1. 对金额进行了取整,方便展示。
def calculate_profit(prices, signals):capital = 100000  # 初始资金000001shares = 0  # 持有股票数量position = 0  # 0表示空仓,1表示持仓balance = 0profit = []profit.append(capital)for i,singal in signals:if singal == 'buy' and position == 0 :shares = int(capital / prices[i+1] / 100)balance = int(capital - (shares*prices[i+1]*100))position = 1elif singal  == 'sell' and position == 1 :capital = int(shares * 100 * prices[i+1] + balance)shares = 0 position = 0profit.append(capital)return profit

对MACD 和收益进行图形化输出

plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
plt.plot(df.index, df['close'])
plt.title('收盘价')
plt.xlabel('tdate')
plt.ylabel('Price')plt.subplot(3, 1, 2)
plt.title("MACD")
plt.plot(df['DIF'],'r',linewidth=1.0,label='DIF')
plt.plot(df['DEA'],'y',linewidth=1.0,label='DEA')
plt.legend()
plt.grid()plt.subplot(3, 1, 3)
plt.title("收益曲线")
plt.plot(profits,'r',linewidth=1.0,label='Profit')
plt.bar(range(len(profits)),profits)
plt.ylabel('RMB')
plt.legend()
plt.grid()plt.tight_layout()
plt.show()

以下是不同股票的策略回测结果:
平安银行(000001)
在这里插入图片描述

全柴动力(600218)
在这里插入图片描述

中航高科(600862)
在这里插入图片描述

脚本说明文档(DevChat 生成)

再次展示一下 AI 的力量。

MACD 分析脚本

这是一个用于从 TDengine 数据库查询股票收盘价,并进行 MACD 分析的 Python 脚本示例。脚本会绘制收盘价曲线、MACD 指标曲线以及收益曲线图。

安装依赖库

确保您已安装以下依赖库:

  • requests 用于发送 RESTful 请求
  • json 用于解析 JSON 响应
  • matplotlib 用于绘制图形
  • pandas 用于处理数据

您可以使用 pip 在命令行中安装它们:

pip install requests matplotlib pandas

参数配置

在开始之前,请根据您的实际情况设置以下参数:

  • host:TDengine 数据库的主机名或 IP 地址
  • port:TDengine 数据库的端口号
  • username:TDengine 数据库的用户名
  • password:TDengine 数据库的密码
  • db_name:数据库名称
  • table_name:数据表名称
  • fcode:股票代码

查询与解析数据

首先,脚本通过 RESTful 请求从 TDengine 数据库中查询收盘价数据。然后,将查询结果解析为列表,并将时间戳和收盘价分别存储在 timestampsclose_prices 数组中。

计算 MACD 指标

接下来,使用 calculate_macd 函数计算 MACD 和信号线的值。该函数使用指定的周期参数计算指数移动平均线(EMA),然后计算 MACD 和信号线。同时,还计算了 MACD 的柱状图(MACD-Histogram)。

判断金叉和死叉

使用 check_macd 函数判断金叉和死叉的位置。该函数遍历 MACD 和信号线数组,找到金叉和死叉的位置,并将其存储在 crossing_points 数组中。

计算收益

使用 calculate_profit 函数计算根据金叉和死叉信号的策略产生的收益。在此示例中,初始资金为 100,000 RMB,根据买入和卖出信号以及股票价格的变化,计算并存储了每个时刻的资金余额,并返回收益数组 profits

绘制图形

最后,脚本使用 matplotlib 库绘制了三个子图。第一个子图展示了收盘价的曲线图,第二个子图展示了 MACD 指标的曲线图,第三个子图展示了收益曲线。

运行脚本

确保您已正确安装依赖库并设置了正确的参数后,您可以执行此 Python 脚本来运行 MACD 分析并绘制图形。

当脚本运行完毕后,将会在屏幕上打印金叉和死叉的位置以及对应的时间戳和收盘价。此外,图形窗口将显示收盘价、MACD 指标和收益曲线。

请根据您的实际需求对脚本进行自定义和调整。希望这个示例对您有所帮助!

http://www.lryc.cn/news/229151.html

相关文章:

  • tensorboard报错解决:No dashboards are active for the current data set
  • 线性代数本质系列(一)向量,线性组合,线性相关,矩阵
  • python语法之注释
  • React【异步逻辑createAsyncThunk(一)、createAsyncThunk(二)、性能优化、createSelector】(十二)
  • Halcon WPF 开发学习笔记(3):WPF+Halcon初步开发
  • P6入门:项目初始化9-项目详情之资源 Resource
  • Python高级语法----使用Python进行模式匹配与元组解包
  • MySQL安装配置与使用教程(2023.11.13 MySQL8.0.35)
  • 【阿里云数据采集】采集标准Docker容器日志:部署阿里云Logtail容器以及创建Logtail配置,用于采集标准Docker容器日志
  • Django中如何创建表关系,请求生命周期流程图
  • MongoDB副本集配置和创建
  • 使用 `open-uri.with_proxy` 方法打开网页
  • 数据库表的设计——范式
  • Brute Force
  • HTML简单介绍
  • 【Java笔试强训】Day10(CM62 井字棋、HJ87 密码强度等级)
  • C语言求数组中出现次数最多的元素
  • 【Python Opencv】Opencv画图形
  • 了解防抖和节流:提升前端交互体验的实用策略
  • SQL学习之增删改查
  • Ansible角色定制实例
  • ElastaticSearch--- es多字段聚合
  • 本周Github有趣开源项目:Rspress等6个
  • 【华为OD题库-016】字符串摘要-Java
  • 生成式AI - Knowledge Graph Prompting:一种基于大模型的多文档问答方法
  • 深度学习AIR-PolSAR-Seg图像数据预处理
  • 求最大公约数math.gcd()
  • 数据结构之队列
  • MySQL数据库——存储过程-循环(while、repeat、loop)
  • Django路由