Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共3 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:VBA编写的,求N日平均值,请看看,存在什么问题呢?

1楼
dzfp2010 发表于:2010/3/14 11:13:55

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

 

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编辑过]
2楼
dzfp2010 发表于:2010/3/14 16:01:59
呵呵,在Function这个模块中有个例子,我先看看再说。。。
3楼
dzfp2010 发表于:2010/3/14 16:16:34
我已看懂,问题解决,谢谢。。。
共3 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.