以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  VBA编写的,求N日平均值,请看看,存在什么问题呢?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=1103)

--  作者:dzfp2010
--  发布时间:2010/3/14 11:13:55
--  VBA编写的,求N日平均值,请看看,存在什么问题呢?

现在的主要问题是,怎样才能把计算结果返回给调用这个函数的公式呢?

 

REM 求N日平均值
Function xMAN(Formula,N)
\'创建窗格对象xGrid
Set xGrid=UserFrame1.GetGridByName("Window1")
\'创建历史数据对象xHistoryData
Set xHistoryData=xGrid.GetHistoryData()
\'如果历史数据存在问题
If xHistoryData.Count <N  Then
MsgBox "参数超出可用数据范围!。。。"
Exit Function
End If
Dim i,j,xCount,xArray,y
xCount=0
Set xArray=CreateObject("Stock.Array")
\'通过两个For...Next循环来求N日平均
\'外循环
For i=0 To xHistoryData.Count-1
  xCount=0
  \'内循环
  For j=0 TO N
  \'----------------
  If i>=N Then
  y=i-j
  xCount=xCount+xHistoryData.Close(y)
  Else
  Exit For
  End If
  \'----------------
  Next
  xCount=xCount/N
  xArray.AddBack(xCount)
  \'向调用该函数的公式返回结果
  \'MsgBox "数组值是:"&xArray.GetAt(i)
  \'xMan=xArray.GetAt(i)
Next
  \'MsgBox xArray.Count
  \'xMAN=xArray.Count
  \'得到公式对象
  Set xGrid_1=UserFrame1.GetGridByName("Window5")
  Set xFormula=xGrid_1.GetFormulaByName("XMAN")
  Set xGetFormulaData=CreateObject("Stock.Array")
  xGetFormulaData = xFormula.VARDATA("ccc")
  Call Stock.Array.Copy(xArray,xGetFormulaData,xArray.Count)
  \'把数组值返回给公式对象的公式线:VVV
  xFormula.VarData("vvv") = xGetFormulaData \'将处理完毕得数组序列返回公式中
End Function

[此贴子已经被作者于2010-3-14 16:01:20编辑过]

--  作者:dzfp2010
--  发布时间:2010/3/14 16:01:59
--  
呵呵,在Function这个模块中有个例子,我先看看再说。。。
--  作者:dzfp2010
--  发布时间:2010/3/14 16:16:34
--  [原创]固定1手和百分比1%~100%开仓模块源码
我已看懂,问题解决,谢谢。。。