以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  

恩,理念一样的