以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 求助示范,如何在VBS中 编写均线代码,ma(c,n) (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=72515) |
-- 作者:厚德载物生 -- 发布时间:2014/12/1 0:14:44 -- 求助示范,如何在VBS中 编写均线代码,ma(c,n) 求助示范,如何在VBS中 编写均线代码,ma(c,n) 利用实盘或历史数据 如何编写1分钟,3分钟的 ma(C,N)的代码 ,十分感谢,假设N为10也ok,谢谢
|
-- 作者:王锋 -- 发布时间:2014/12/1 9:32:47 -- 请参考自带的MA均线自定义函数代码 |
-- 作者:厚德载物生 -- 发布时间:2014/12/1 12:46:54 -- 请问是这一段吗? 逐周期模式 Function CU_MA2(Formula,cyc) \'防止公式序列模式时调用 If Formula.WorkMode = 1 Exit Function End If \'得到K线数据对象 Set History = Formula.ParentGrid.GetHistoryData() \'若当前周期尚未到计算周期,不参与计算 if Formula.IndexData < cyc-1 then CU_MA2 = 0 exit function end if
DataCount = 0 for i = Formula.IndexData-cyc+1 to Formula.IndexData \'累加收盘价 DataCount = DataCount + history.close(i) next \'因为是每个周期都会调用一次,因此我们只要计算当前被执行的周期的均价即可 CU_MA2 = DataCount / cyc End Function \'序列运行模式 Function CU_MA1(Formula,CLOSE,Cyc) CU_MA1=0
\'防止公式逐周期模式时调用 If Formula.WorkMode = 0 Then Exit Function End If
\'CLOSE数组数据长度一定会与Formula.DataSize-1相等 DataCount = UBound(CLOSE) If DataCount <> Formula.DataSize-1 Then Exit Function End If
\'定义一个计算返回的数组 Dim ResultMa Redim ResultMa(DataCount)
For i = Cyc-1 To Formula.DataSize-1 Count = 0 For k = i-(Cyc-1) To i Count = Count + CLOSE(k) Next ResultMa(i) = Count / Cyc Next
\'返回一个计算完毕的均线数组 CU_MA1 = ResultMa End Function |
-- 作者:FexTel -- 发布时间:2014/12/1 13:10:03 -- 恩,理念一样的 |