以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教怎么实现列移动平均的计算?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=22186)

--  作者:雪浪千寻
--  发布时间:2012/8/5 10:06:00
--  请教怎么实现列移动平均的计算?

比如说我要计算如下收盘列的10日移动平均值,在foxtable里具体怎么实现,我是菜鸟,要一步一步说清楚呀,谢谢!

 

代码,     名称,      日期,       开盘, 最高, 最低, 收盘, 成交量,        成交金额
601988,中国银行,20110104,2.95,2.97,2.91,2.96,469783.00,138068016.00
601988,中国银行,20110105,2.95,2.95,2.92,2.93,335951.00,98434256.00
601988,中国银行,20110106,2.93,2.94,2.90,2.92,238222.00,69546560.00
601988,中国银行,20110107,2.92,3.00,2.91,2.97,757344.00,224426816.00
601988,中国银行,20110110,2.95,2.97,2.92,2.93,350350.00,103136848.00
601988,中国银行,20110111,2.92,2.96,2.92,2.95,230288.00,67726280.00
601988,中国银行,20110112,2.96,2.97,2.94,2.97,246762.00,72857576.00
601988,中国银行,20110113,2.97,2.98,2.96,2.97,315358.00,93616520.00
601988,中国银行,20110114,2.97,2.97,2.94,2.95,258811.00,76635040.00
601988,中国银行,20110117,2.93,2.95,2.88,2.90,401289.00,116942952.00
601988,中国银行,20110118,2.89,2.91,2.88,2.91,234921.00,68092120.00
601988,中国银行,20110119,2.91,2.91,2.87,2.91,420423.00,121595224.00
601988,中国银行,20110120,2.90,2.90,2.86,2.88,350363.00,100842592.00
601988,中国银行,20110121,2.88,2.94,2.86,2.91,435769.00,126549224.00
601988,中国银行,20110124,2.90,2.92,2.89,2.90,306618.00,89037040.00
601988,中国银行,20110125,2.90,2.95,2.89,2.93,395764.00,115796456.00
601988,中国银行,20110126,2.93,2.94,2.91,2.94,193738.00,56744204.00
601988,中国银行,20110127,2.93,2.95,2.90,2.95,282241.00,82683528.00
601988,中国银行,20110131,2.93,2.95,2.90,2.94,383149.00,112131712.00
601988,中国银行,20110201,2.94,2.95,2.92,2.94,234453.00,68838696.00
601988,中国银行,20110209,2.92,2.94,2.91,2.92,198990.00,58242148.00

[此贴子已经被作者于2012-8-5 10:06:27编辑过]

--  作者:雪浪千寻
--  发布时间:2012/8/6 19:23:00
--  

所谓列移动平均值就是:比如收盘列十日移动平均值,就是将十天的收盘数据加起来再除以十,得出的值就是第十天的移动平均值,以此类推十天十天地算下去,每次计算都要去掉最前面的一天收盘数据,再加上后面第十一天的收盘数据,再除以十,如此这般算下去。


--  作者:czy
--  发布时间:2012/8/6 21:16:00
--  

加个辅助列行不行?

 

For i As Integer = 0 To Tables("表A").rows.count -1
    Tables("表A").Rows(i)("辅助") = i+1
Next
For Each dr As DataRow In DataTables("表A").DataRows
    If dr("辅助") > 9 Then
        dr("移动平均值") = DataTables("表A").Compute("Avg(收盘)","辅助 >= " & dr("辅助")-9 & " And 辅助 <= " & dr("辅助"))
    End If
Next