c# MACD 算法实现
2014-02-25 19:11
549 查看
此算法在自己WP7应用中 用到
同花顺 算法
DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA : EMA(DIFF,M);
MACD : 2*(DIFF-DEA);
Zero : 0;
关键点是第一天的数据
如果是区间的数据,区间第一天的DIF DEA MACD 都是0
View
Code
1 /// <summary>
2 /// MACD算法
3 /// </summary>
4 /// <param name="n1">12</param>
5 /// <param name="n2">26</param>
6 /// <param name="n3">9</param>
7 /// <param name="day">K线数据</param>
8 /// <returns></returns>
9 public static List<KLinfo> ComputationMACD2(int SHORT, int LONG, int M, List<KLinfo> KLStocklist)
10 {
11 for (int i = 0; i < KLStocklist.Count;i++ )
12 {
13
14 if (KLStocklist[i].KID == 1)
15 {
16 KLStocklist[i].Ema12Value = KLStocklist[i].ClosePrice;
17 KLStocklist[i].Ema26Value = KLStocklist[i].ClosePrice;
18 KLStocklist[i].DifValue = KLStocklist[i].Ema12Value - KLStocklist[i].Ema26Value;
19 KLStocklist[i].DeaValue = KLStocklist[i].DifValue;
20 KLStocklist[i].MacdValue = 2.0 * (KLStocklist[i].DifValue - KLStocklist[i].DeaValue);
21 }
22 else
23 {
24 KLStocklist[i].Ema12Value = (2 * KLStocklist[i].ClosePrice + (SHORT - 1) * KLStocklist[KLStocklist[i].KID - 2].Ema12Value) / (SHORT + 1);
25 KLStocklist[i].Ema26Value = (2 * KLStocklist[i].ClosePrice + (LONG - 1) * KLStocklist[KLStocklist[i].KID - 2].Ema26Value) / (LONG + 1);
26 KLStocklist[i].DifValue = KLStocklist[i].Ema12Value - KLStocklist[i].Ema26Value;
27 KLStocklist[i].DeaValue = (2 * KLStocklist[i].DifValue + (M - 1) * KLStocklist[KLStocklist[i].KID - 2].DeaValue) / (M + 1);
28 KLStocklist[i].MacdValue = 2.0 * (KLStocklist[i].DifValue - KLStocklist[i].DeaValue);
29
30 }
31 }
32
33 return KLStocklist;
34 }
同花顺 算法
DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
DEA : EMA(DIFF,M);
MACD : 2*(DIFF-DEA);
Zero : 0;
关键点是第一天的数据
如果是区间的数据,区间第一天的DIF DEA MACD 都是0
View
Code
1 /// <summary>
2 /// MACD算法
3 /// </summary>
4 /// <param name="n1">12</param>
5 /// <param name="n2">26</param>
6 /// <param name="n3">9</param>
7 /// <param name="day">K线数据</param>
8 /// <returns></returns>
9 public static List<KLinfo> ComputationMACD2(int SHORT, int LONG, int M, List<KLinfo> KLStocklist)
10 {
11 for (int i = 0; i < KLStocklist.Count;i++ )
12 {
13
14 if (KLStocklist[i].KID == 1)
15 {
16 KLStocklist[i].Ema12Value = KLStocklist[i].ClosePrice;
17 KLStocklist[i].Ema26Value = KLStocklist[i].ClosePrice;
18 KLStocklist[i].DifValue = KLStocklist[i].Ema12Value - KLStocklist[i].Ema26Value;
19 KLStocklist[i].DeaValue = KLStocklist[i].DifValue;
20 KLStocklist[i].MacdValue = 2.0 * (KLStocklist[i].DifValue - KLStocklist[i].DeaValue);
21 }
22 else
23 {
24 KLStocklist[i].Ema12Value = (2 * KLStocklist[i].ClosePrice + (SHORT - 1) * KLStocklist[KLStocklist[i].KID - 2].Ema12Value) / (SHORT + 1);
25 KLStocklist[i].Ema26Value = (2 * KLStocklist[i].ClosePrice + (LONG - 1) * KLStocklist[KLStocklist[i].KID - 2].Ema26Value) / (LONG + 1);
26 KLStocklist[i].DifValue = KLStocklist[i].Ema12Value - KLStocklist[i].Ema26Value;
27 KLStocklist[i].DeaValue = (2 * KLStocklist[i].DifValue + (M - 1) * KLStocklist[KLStocklist[i].KID - 2].DeaValue) / (M + 1);
28 KLStocklist[i].MacdValue = 2.0 * (KLStocklist[i].DifValue - KLStocklist[i].DeaValue);
29
30 }
31 }
32
33 return KLStocklist;
34 }
相关文章推荐
- c#音乐播放器(欣赏)
- C#子线程创建新窗体心得(对Windows窗体控件进行线程安全调用)
- C#实现多线程讲解
- C# 内存管理和指针
- 【C#】编码史记
- C#删除程序自身【总结】
- 10行代码在C#中获取页面元素布局信息
- {Reship}{C#}{GDI+}GDI+画笔,线,区域类型
- C#滚动字幕的实现
- c# Invoke和BeginInvoke 区别
- C# Dynamic 关键字学习
- C#统计文章中单词的重复次数,并且按照次数从高到低排序返回(无法处理中文)
- dll错误等笔记
- C# 7个读写Excel文件的类库
- 【WinForm】C# 采用POST登录京东
- C# 日期格式化(从别人处收藏,记下,方便自己使用)
- C# 正则表达式
- C#核心语法
- 示例 - 10行代码在C#中获取页面元素布局信息
- C# 的时间戳转换