首页 > 其他分享 >C语言实现MACD指标

C语言实现MACD指标

时间:2023-09-01 23:56:02浏览次数:48  
标签:int32 EMA average value C语言 指标 MACD adc alpha

只有实现了EMA,才能取得MACD

EMA,指数移动平均线是一种 IIR 滤波器,很容易用 C 语言实现,并且使用最少的资源。与简单的移动平均线不同,它不需要 RAM 缓冲区来存储先前的样本。它只需要存储一个值(前一个平均值)。  

指数移动平均线表示为以下等式:avg[n] = (in * alpha) + avg[n-1]*(1-alpha)。使用浮点数学实现这个方程很简单,但使用定点变量有点棘手。此处的代码片段使用 32 位有符号整数作为平均值和输入值。中间值需要使用 64 位数学运算以避免溢出错误。

Alpha 值接近零表示重平均,而 Alpha 值为 1 表示不平均。

//This macros defines an alpha value between 0 and 1
#define DSP_EMA_I32_ALPHA(x) ( (uint16_t)(x * 65535) )
 
int32_t dsp_ema_i32(int32_t in, int32_t average, uint16_t alpha){
  int64_t tmp0; //calcs must be done in 64-bit math to avoid overflow
  tmp0 = (int64_t)in * (alpha) + (int64_t)average * (65536 - alpha);
  return (int32_t)((tmp0 + 32768) / 65536); //scale back to 32-bit (with rounding)
}

//here is a function that uses the averaging code
int32_t my_avg_func(void){
     static int32_t average = 0;
     int32_t adc_value;    
     adc_value = read_the_adc_value();
     average = dsp_ema_i32(adc_value, average, DSP_EMA_I32_ALPHA(0.1));
     return average;
}

来源:https://www.embeddedrelated.com/showcode/304.php

相关资料:

EMA(指数平均数指标)到底是什么?

标签:int32,EMA,average,value,C语言,指标,MACD,adc,alpha
From: https://www.cnblogs.com/yuyanc/p/17673076.html

相关文章

  • TX-Mini项目-指标监控服务重构-总结
    项目概述本项目的背景是,当前企业内部使用的指标监控服务的方案的成本很高,无法符合用户的需求,于是需要调研并对比测试市面上比较热门的几款开源的监控方案(选择了通用的OpenTelemetry协议:Signoz,otel-collector,jaeger;uptrace不能商用),去重构原有服务,实现降本增效:减少监控服务本身的接......
  • C语言拾遗
    ​内存分配​C/C++编译的程序中内存分为5个区,分别为:栈区(stack):指那些由编译器在需要的时候分配,不需要时自动清除的变量所在的储存区,如函数执行时,函数的形参以及函数内的局部变量分配在栈区,函数运行结束后,形参和局部变量去栈(自动释放)。栈内存分配运算内置与处理器的指令集中,效......
  • Python 深度学习目标检测评价指标
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • C语言 字符串分割
    一、简述    记--字符串分割,strtok()函数的使用例子、自己简单实现split()函数。 二、例子代码 #include<stdio.h>#include<string.h> /* *函数:split *描述:按指定分隔符分割字符串 *参数: *str:要分割的字符串 *strLen:要分割的字符串的长......
  • DORA指标:公司业务成果的“占卜师”
    2009年,受JohnAllspaw和PaulHammonds在Velocity上演讲的启发,PatrickDebois组织了一次名为“DevOpsDays”的会议。早期,公众对DevOps持有褒贬不一的看法且大部分企业高层人员对其并不重视。DevOps本应将技术人员们团结在一起,却难以定义,更难以衡量,因此很难提出令人信服......
  • Prometheus监控运维实战十: 主机监控指标
    在上一篇文章中我们学习了如何通过node-exporter获取主机监控信息。但安装好监控只是第一步,我们还需要知道哪些监控指标是我们需要关注的。本文将对Prometheus相关的主机监控指标进行介绍。一.CPU监控CPU负载node_load1node_load5node_load15 以上三个指标为主机的CPU平均......
  • Talib的技术指标
    资料1Talib中的指标主要包括下面几类:OverlapStudies(交叉分析):这种类型的指标使用移动平均线、布林带等技术分析工具,通过计算不同时间段内价格的平均值和标准差等统计量,来判断价格趋势、支撑/阻力位等。MomentumIndicators(动量指标):这种类型的指标可以衡量价格变化的速度和力度......
  • C语言指针进阶
    目录字符指针指针数组数组指针数组指针的定义&数组名VS数组名数组指针的使用数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参一级指针二级指针数组指针函数指针函数指针数组指向函数指针数组的指针回调函数编码的三种境界:1.看代码就是代码2.看代码就是内......
  • sqlite3C语言api
    安装sqliteapt-getinstallsqlite3进入和退出sqlite3//进入sqlite3,内容保存至内存,退出后内容会丢失sqlite3<表名>//保存到文件中,例sqlite3student.exit//退出sqlite3,‘.'不能少创建表#以学生表为例createtablestudent(idinteger,nametext,ageinteger......
  • C语言北邮2023题目[2023-08-28]
    C语言北邮2023题目[2023-08-28]计算机实习李晶杨金翠孙鹏飞李峥参考资料C语言程序设计的教材及相关课堂资料搜索引擎时间表8.28–9.01时间周一周二周三周四周五内容宣讲实践实践实践实践节次1-4节1-5节1-5节1-5节1-5节9.04-9.08时间周一......