C#/.NET量化开发实现财富自由【4】实现EMA、MACD技术指标的计算

news2024/11/10 19:57:56

听说大A又回到了2950点以下,对于量化交易来说,可能这些都不是事儿。例如,你可以预判到大A到顶了,你可能早就跑路了。判断逃顶还是抄底,最简单的方式就是判断是否顶背离还是底背离,例如通过MACD,你可以编写指标用来判断是顶背离还是底背离,集成到股票软件上,例如:

2bdc540a452c87f634754b68e0db978a.jpeg

当然,交易软件上面的指标,还是有局限性,因为不能帮助咱们自动交易。要自动交易,还是需要写代码,然后通过代码判断一些技术指标或者其他自定义指标。而上面的顶底背离,就需要用到MACD指标来进行计算。于是就进入到今天的主场内容,使用.NET开发实现对MACD数据的计算。

先祝各位看这个文章的大佬们,早日实现股票账户余额超过下图那样冰冷的数字,实现自由。

f6e15127bb10fa4b2c98f7e6721a82a7.png

废话不多说,开始重点。先创建一个基础技术指标类,用来后续处理多种基础技术指标使用。例如今天要说的EMA指标实现算法。算法实现如图所示。

10d2aee9e251f78c27d2fb74441a5235.png

EMA可以用来干嘛呢?EMA(指数移动平均)可以用来计算出MACD、DIFF、DEA、背离等等。可以说是各种技术指标里面最经常要用到的指标。

EMA的数学公式如下:

a53c5ddef43297c906271f9ef9e27c30.png

例如下面咱们使用EMA基础指标,来计算出MACD指标数据。控制器里面新增一个测试EMA的api接口,用来计算EMA和MACD使用。

e0b8c56ecdebce4fc9856ed7c8a48ee5.png

然后计算MACD、DIF、DEA等数据,并输出最新的两天的数据做验证。

9e2381b889f64d1bddb16077e52d0e75.png

运行程序,并调用api接口执行一下,获取到最近两天的数据

2902df7efc834ee3e8fe1e8460e6243c.png

{
  "todayMacd": -0.04443251288908123,
  "todayDea": -0.32544380570976894,
  "todayDif": -0.34766006215430956,
  "lastMacd": -0.07166991643366516,
  "lastDea": -0.3198897415986338,
  "lastDif": -0.3557246998154664
}

现在随便打开一个行情网站或者软件查看该股票的这两天的数据做对比。例如我打开的雪球,查看该个股数据:

21a1a50834866170406bd9d24f762e29.png

DIF=-0.35

DEA=-0.33

MACD=-0.04

刚好和上面数据对应的上,一般行情软件都会四舍五入保留两位数。

现在看前一天的数据:

6375f88c8572a7280c8179cbb7e77b89.png

DIF=-0.36

DEA=-0.32

MACD=-0.07

也可以和上面的数据的四舍五入后的对应上,说明咱们的MACD计算是正确的。

EMA计算:

var returnValues = new List<double>();
double multiplier = 2.0 / (period + 1); // 确保进行浮点数计算
double initialSMA = input.Take(period).Average();


returnValues.Add(initialSMA);


var copyInputValues = input.ToList();


// 从index=period开始,因为我们已经计算了第一个EMA值为initial SMA
for (int i = period; i < copyInputValues.Count; i++)
{
    double lastEMA = returnValues.Last(); // 获取上一个EMA值
    double newEMA = (copyInputValues[i] - lastEMA) * multiplier + lastEMA;
    returnValues.Add(newEMA);
}


var result = new EmaResult()
{
    Values = returnValues,
    StartIndexOffset = period - 1
};

MACD计算:

List<double> ema12List = BasicIndicators.CalculateEMA(total, 12).Values;
 List<double> ema26List = BasicIndicators.CalculateEMA(total, 26).Values;
 // 计算DIF
 var dif = ema12List.Zip(ema26List, (x, y) => x - y).ToList();


 // 计算DEA
 var dea = BasicIndicators.CalculateEMA(dif, 9).Values.ToList();
 // 计算MACD
 var macd = dif.Zip(dea, (difValue, deaValue) => (difValue - deaValue) * 2).ToList();

如果觉得有帮助,欢迎点赞、留言、转发或关注。谢谢各位大佬,祝大佬们早日财富自由。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1872688.html

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

相关文章

C语言基础笔记(全)

一、数据类型 数据的输入输出 1.数据类型 常量变量 1.1 数据类型 1.2 常量 程序运行中值不发生变化的量&#xff0c;常量又可分为整型、实型(也称浮点型)、字符型和字符串型 1.3 变量 变量代表内存中具有特定属性的存储单元&#xff0c;用来存放数据&#xff0c;即变量的值&a…

Java基础知识-线程

Java基础知识-线程 1、在 Java 中要想实现多线程代码有几种手段&#xff1f; 1. 一种是继承 Thread 类 2. 另一种就是实现 Runnable 接口 3. 最后一种就是实现 Callable 接口 4. 第四种也是实现 callable 接口&#xff0c;只不过有返回值而已 2、Thread 类中的 start() 和 …

有序充电在新能源行业的前景与应用

作为新能源汽车的基础动力装置&#xff0c;交流充电桩也是可以促使新能源汽车正常行驶的关键内容。近年来我国新能源汽车的增长速度出现明显的上升趋势&#xff0c;但是其充电桩的发展还比较缓慢。目前在充电桩系统设计期间仍存在一些问题&#xff0c;主要表现在充电设施短缺、…

2024年6月京东睡眠呼吸暂停和低通气事件检测赛题-baseline

赛题地址&#xff1a;DC竞赛-大数据竞赛平台 (datacastle.cn) 一、数据集介绍 train_x训练数据集特征描述&#xff0c;其样本分布不均匀&#xff0c;0样本29808&#xff0c;1样本3221&#xff0c;2样本4520&#xff0c;共计37549条样本 第一维度&#xff1a;60 位受试样本数总…

SSL证书在网站访问中的核心作用及快速申请指南

在当今的互联网时代&#xff0c;数据安全与用户隐私保护成为了网站运营不可或缺的一部分。SSL证书作为一种重要的网络安全协议&#xff0c;它在网站访问中扮演着至关重要的角色&#xff0c;主要体现在以下几个方面&#xff1a; 一、加密通信内容&#xff1a;SSL证书通过建立安…

2024年【G1工业锅炉司炉】考试及G1工业锅炉司炉考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年G1工业锅炉司炉考试为正在备考G1工业锅炉司炉操作证的学员准备的理论考试专题&#xff0c;每个月更新的G1工业锅炉司炉考试题库祝您顺利通过G1工业锅炉司炉考试。 1、【多选题】TSGG0001-2012《锅炉安全技术监察…

MySQL实训

项目名称与项目简介 股票交易系统是一个综合性的金融服务平台&#xff0c;它提供了股票买卖、交易查询、用户管理、股票信息管理以及资金账户管理等功能。系统旨在为用户提供一个安全、高效、便捷的股票交易环境&#xff0c;让用户能够实时掌握市场动态&#xff0c;做出合理的…

golang项目基于gorm框架从postgre数据库迁移到达梦数据库的实践

一、安装达梦数据库 1、登录达梦数据库官网&#xff0c;下载对应系统版本的安装包。 2、下载地址为&#xff1a;https://www.dameng.com/list_103.html 3、达梦数据库对大小写敏感&#xff0c;在安装初始化数据库实例时建议忽略大小写&#xff1b;具体安装教程可参考以下博客: …

知不知行不行?

老树新芽&#xff0c; 结合最近几个观点&#xff0c;再拓展&#xff1a; Prompt & “Prompt—生成—选择” 事前提要求&#xff0c;事后决定满意不满意&#xff0c;中间尽量少干涉——老板对员工不也是这样吗&#xff1f;甲方对乙方不也是这样吗&#xff1f;都是后者在生…

VMware虚拟机移植保姆级教程

文章目录 前言:一、打包与备份二、VMware移植1. 文件介绍2. 移植过程总结:前言: 前几日对电脑做了一个大的更新升级,不仅将硬件进行了升级,还对电脑的软件进行了升级也就是我从Win10今家庭版升级到Win11专业版啦,之前没有升级是因为数据量很多,怕升级后找不到自己需要的…

vue-cli搭建过程

1.vue-cli 概述 vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff0c;预先定义好的目录结构及基础代码 举个例子吧&#xff01; 比如之前学过的Maven,在创建 Maven 项目时可以选择创建一个骨架项目&#xff0c;这个骨架项目就是脚手架&#x…

goLang小案例-打印99乘法表

goLang小案例-打印99乘法表 1. 打印99乘法表 func Print99multiplication1() {//横向9排for i : 1; i < 9; i {//竖向9列//第一批第一个 和第一列比较 如果大于排就结束//假设第三排i3 最走有三列 1*3 2*3 3*3//j3打印完 j 当j4就要结束 以此类推for j : 1; j < i; j …

东兴市金顺心贸易有限公司联合越南名厨研发的阿吉贡河粉灵魂汤底料

东兴市金顺心贸易有限公司联合越南名厨研发的阿吉贡河粉灵魂汤底料&#xff0c;一包汤底料竟然就能撑起一家店的灵魂&#xff01;&#x1f372; 简单的食材&#xff0c;却散发出不平凡的美味&#xff0c;仿佛带我穿越千里之外。每一口都是满满的幸福与满足&#xff0c;真心推荐…

Detailed Steps for Troubleshooting ORA-00600 [kdsgrp1] (文档 ID 1492150.1)

Detailed Steps for Troubleshooting ORA-00600 [kdsgrp1] (文档 ID 1492150.1)​编辑转到底部 In this Document Purpose Troubleshooting Steps References APPLIES TO: Oracle Database - Enterprise Edition Oracle Database Cloud Schema Service - Version N/A and lat…

Stateflow快速入门系列(五): 通过广播事件同步并行状态

局部事件允许一个状态触发同一个 Stateflow图中另一个状态的转移或动作&#xff0c;从而使您能够协调并行状态。要将事件从一个状态广播到另一个状态&#xff0c;请使用 send 运算符以及事件的名称和激活状态的名称&#xff1a; send(eventName,stateName) 当您广播事件时&am…

2024年【建筑电工(建筑特殊工种)】模拟试题及建筑电工(建筑特殊工种)作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)模拟试题为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题&#xff0c;每个月更新的建筑电工(建筑特殊工种)作业考试题库祝您顺利通过建筑电工(建筑特殊工种)考试。 1、…

FastGPT 手动部署错误:MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo

在运行 FastGPT 时&#xff0c;mongodb 报如下错误&#xff1a; MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo 这是因为 mongo 没有解析出来&#xff0c;在 hosts 文件中添加如下信息&#xff1a; 127.0.0.1 mongo 重新运行 FastGPT 即可。 参考链接&#xff…

庆祝东兴市金顺心贸易有限公司代理越南三原竹系列产品五周年

&#x1f389;庆祝金顺心贸易代理越南三原竹系列产品五周年&#xff01;这五年&#xff0c;我们共同成长&#xff0c;每一份产品都承载着越南的美味与匠心。感恩有你们&#xff0c;未来的路&#xff0c;我们继续携手前行&#xff0c;品味更多美好&#xff01;&#x1f962;&…

“骑友应小心“杀猪盘”,骑行圈也是小社会”

在数字时代&#xff0c;自媒体平台上的信息传播迅速而广泛&#xff0c;人们的社交活动也愈加多元化。骑行圈&#xff0c;作为一个集体育、休闲与社交于一体的圈子&#xff0c;其独特的魅力吸引着无数热爱生活、享受自然的人们。然而&#xff0c;在享受共同的爱好与乐趣之时&…

Dom4j的基本使用 , XML解析方式和解析器 ,Dom4J结合XPath解析XML

第二章 Dom4j 1 XML解析 1.1 解析概述 ​ 当将数据存储在XML后&#xff0c;我们就希望通过程序获取XML的内容。我们使用Java基础所学的IO知识是可以完成的&#xff0c;不过需要非常繁琐的操作才可以完成&#xff0c;且开发中会遇到不同问题&#xff08;只读、读写&#xff0…