新修改了EMA的计算方法,合并线性回归率的计算。和通达信的结果一模一样
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace myEMA
{
public class myEMA
{
/// <summary>
/// Contains calculation results for EMA indicator
/// </summary>
public class EMAResult
{
public List<double> Values { get; set; }
public int StartIndexOffset { get; set; }
public double EmaR { get; set; }
}
//-------------------------------------------------------------------------------------------------------------------------------
#region 计算MYEMA
/// <summary>
/// Calculates Exponential Moving Average (EMA) indicator
/// </summary>
/// <param name="input">Input signal</param>
/// <param name="period">Number of periods</param>
/// <returns>Object containing operation results</returns>
public static EMAResult EMA(IEnumerable<double> input, int period)
{
var returnValues = new List<double>();
double multiplier = (2.0 / (period + 1));
//double initialSMA = input.Take(period).Average();
//returnValues.Add(initialSMA);
var copyInputValues = input.ToList();
for (int i = 0; i < copyInputValues.Count; i++)
{
if (i < 1)
{
var resultValue = copyInputValues[i];
returnValues.Add(resultValue);
}
else
{
var resultValue = (copyInputValues[i] * multiplier) + (1 - multiplier) * returnValues.Last();
returnValues.Add(resultValue);
}
}
var result = new EMAResult()
{
EmaR=returnValues.Last(),
Values = returnValues,
StartIndexOffset = period - 1
};
return result;
}
#endregion
public class mySlope
{
// public List<double> Values { get; set; }
public double SlopeResult { get; set; }
}
//-------------------------------------------------------------------------------------------------------------------------------
#region 计算slope
/// <summary>
/// Calculates slope()
/// </summary>
/// <param name="input">Input y_signal</param>
/// <param name="period">Number of periods</param>
/// <returns>Object containing operation results</returns>
public static mySlope Slope(IEnumerable<double> input_y, int period)
{ // var returnValues = new List<double>();
List<double> input_x = new List<double>();
for (int i = 1; i <= period; i++)
{
input_x.Add(i);
}
var copyInputValues_x = input_x.ToList();
var copyInputValues_y = input_y.ToList();
List<double> arr_xy=new List<double>();
List<double> arr_xx=new List<double>();
List<double> arr_x = new List<double>();
List<double> arr_y = new List<double>();
arr_x = copyInputValues_x;
for(int j=copyInputValues_y.Count-period;j<copyInputValues_y.Count;j++)
{
//arr_x.Add(copyInputValues_x[j]);
arr_y.Add(copyInputValues_y[j]);
}
double x_arr_dataAv = arr_x.Take(period).Average();
double y_arr_dataAv = arr_y.Take(period).Average();
for(int i=0;i<arr_x.Count;i++)
{
arr_x[i] = arr_x[i] - x_arr_dataAv;
arr_y[i] = arr_y[i] - y_arr_dataAv;
arr_xx.Add( arr_x[i] * arr_x[i]);
arr_xy.Add ( arr_y[i] * arr_x[i]);
}
double sumxx = arr_xx.Sum();
double sumxy = arr_xy.Sum();
var result = new mySlope()
{
SlopeResult = sumxy/sumxx,
// Values = returnValues,
};
return result;
}
#endregion
}
}
新修改了EMA的计算方法,合并线性回归率的计算。和通达信的结果一模一样的更多相关文章
- git 代码分支合并merge提交新修改远程以及本地分支
第一步:创建本地分支 点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中”switch to new branch”则直接转到新分支上,省 ...
- 11_Eclipse中演示Git版本的创建,历史版本的修改,创建分支,合并历史版本和当前版本
1 执行以下案例: 某研发团队2011年初开发了一款名为Apollo的信息系统,目前已发布v1.0版本.此项目初期已有部分基础代码, 研发团队再此基础代码上经过3个月的努力发布了一个功能相对完备 ...
- git 创建新项目,下载工程,合并和更新工程简单应用记录
以前使用SVN很顺手,现在公司使用git来管理代码,因此学习git的基本使用. 一.首先介绍下SVN和git的简单比较: SVN是使用得最多的版本控制管理工具. 1.是一个集中式的版本管理工具.所有的 ...
- CodeForces - 587E[线段树+线性基+差分] ->(线段树维护区间合并线性基)
题意:给你一个数组,有两种操作,一种区间xor一个值,一个是查询区间xor的结果的种类数 做法一:对于一个给定的区间,我们可以通过求解线性基的方式求出结果的种类数,而现在只不过将其放在线树上维护区间线 ...
- 校内模拟赛T5:连续的“包含”子串长度( nekameleoni?) —— 线段树单点修改,区间查询 + 尺取法合并
nekameleoni 区间查询和修改 给定N,K,M(N个整数序列,范围1~K,M次查询或修改) 如果是修改,则输入三个数,第一个数为1代表修改,第二个数为将N个数中第i个数做修改,第三个数为修改成 ...
- HNCU1324:算法2-2:有序线性表的有序合并(线性表)
http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1324 题目描述 已知线性表 LA 和 L ...
- git常用命令速查:创建,修改提交,撤销,切换分支,合并分支,变基解决冲突
创建 $ git init #在当前目录下创建一个空的本地仓库 $ rm -rf .git #删除本地仓库 $ git add . #把当前目录下的所有文件添加到暂存区 $ git commi ...
- TX Text Control X10新特性之图像占位符合并
文档处理控件TX Text Control即将发布的X10版本,将升级重点还是放到了其比较优势的流式布局报表设计和生成上.慧都获得了来自其开发商Text Control GmbH公司的一手资料,迫不及 ...
- luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并
LINK:Eden 的新背包问题 就是一个多重背包 每次去掉一个物品 询问钱数为w所能买到的最大值. 可以对于每次Q暴力dp 利用单调队列优化多重背包 这样复杂度是Qnm的. 发现过不了n==10的点 ...
随机推荐
- hdu 5063 Operation the Sequence
http://acm.hdu.edu.cn/showproblem.php?pid=5063 思路:因为3查询最多50,所以可以在查询的时候逆操作找到原来的位置,然后再求查询的值. #include ...
- C++不能中断构造函数来拒绝产生对象(在构造和析构中抛出异常)
这是我的感觉,具体需要研究一下- 找到一篇文章:在构造和析构中抛出异常 测试验证在类构造和析构中抛出异常, 是否会调用该类析构. 如果在一个类成员函数中抛异常, 可以进入该类的析构函数. /// @f ...
- COJ 2110 Day7-例3
Day7-例3 难度级别:C: 运行时间限制:5000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 输入 输入的第一行包含整数n和k,其中n(2 ≤ n ≤100 ...
- select的使用(一)
单表操作 select Name,Major,InDate from T_Employee as 计算结果 select Name as 姓名,Major,InDate from T_Employee ...
- C数组的相关知识
数组的定义:具有相同数据类型的集合.在内存中开辟连续的存贮空间,从上往下,依次存储 补充:内存是以字节位单位的存储空间,内存中的每一个字节都唯一对应一个编号.这个编号就是地址.只要是存在内存中的数据都 ...
- traits编程技法
看了<stl源码剖析>中关于traits的部分,由于对模板还不是很熟悉,就看了一下还未完工的C++ Template 进阶指南 ,感觉收获很大,推荐一下. 在使用迭代器时,为了知道它的相应 ...
- 《A First Course in Probability》-chaper5-连续型随机变量-均匀随机变量
在连续随机变量这部分,有一种特殊的随机变量X,对于X所有可能取值,P(X)都相等,我们称其为均匀随机变量. 基于均匀随机变量的定义,我们容易看到,其密度函数f(x)必然是一条平行于x轴的直线,因为这样 ...
- Mac下Intellij IDea发布Java Web项目详解五 开始测试
测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...
- convert 时间转换
格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,c ...
- STUCTS LABLE ‘S BENEFIT
{LJ?Dragon}[注]Struts标签的三个好处 RELATED LINKS 0.UTF-8 有无BOM的区别 UTF-8 BOM 06. 几款网页数据抓取软件 SOFTWARE_INTRODU ...