欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → VBA编写的,求N日平均值,请看看,存在什么问题呢?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5182人关注过本帖平板打印复制链接

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

帅哥哟,离线,有人找我吗?
dzfp2010
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 元帅
等级:论坛游民 帖子:100 积分:948 威望:0 精华:2 注册:2010/3/8 20:28:24
VBA编写的,求N日平均值,请看看,存在什么问题呢?  发帖心情 Post By: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编辑过]

 回到顶部