用vb.net写的计算macd、dif、dea的方法。
来自:MACD论坛(bbs.shudaoyoufang.com)
作者:linzi53770
浏览:12296
回复:4
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
'首先将一只或多只股票的数据,最高价、最低价、收盘价等数据存入数据库或写入到数组。
'N为将要读入股票的k线长度。
Dim Ema12(N) , Ema26(N) As Double
Dim Dif(N), Dea(N), Macd(N) as Double
For t = N- 1 To 0 Step -1
DI = Math.Round((2 * C(t) + H(t) + L(t)) / 4, 3) '2倍第t日收盘价+最高价+最低价,除以4
If t =N - 1 Then '第n日数据
Ema12(t) = DI 'DI值
Ema26(t) = DI
Dif(t) = Ema12(t) - Ema26(t)
Dea(t) = Dif(t)
Macd(t) = 2 * (Dif(t) - Dea(t))
Else
Ema12(t) = Math.Round((2 * DI + (S - 1) * Ema12(t + 1)) / (S + 1), 5)
Ema26(t) = Math.Round((2 * DI + (L - 1) * Ema26(t + 1)) / (L + 1), 5)
Dif(t) = Math.Round(Ema12(t) - Ema26(t), 3) '快线
Dea(t) = Math.Round((2 * Dif(t) + (M - 1) * Dea(t + 1)) / (M + 1), 3) '慢线
Macd(t) = Math.Round(2 * (Dif(t) - Dea(t)), 3)
End If
Next
'如此循环后macd(0)、dif(0)、dea(0)为最近一日的macd的数值。以此类推macd(1)、dif(1)、dea(1)为前一日macd的相关数值,macd(N)....为前n+1的macd相关数值。
根据该数组的值,我们就可以判断用机器判断macd金叉、死叉,以及该金叉、死叉的位置。
|