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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]vba 如何编写出权重平均自定义函数输出数组?

   

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


  共有2780人关注过本帖树形打印复制链接

主题:[求助]vba 如何编写出权重平均自定义函数输出数组?

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


加好友 发短信
等级:论坛游侠 帖子:134 积分:0 威望:0 精华:0 注册:2016/12/8 15:07:32
[求助]vba 如何编写出权重平均自定义函数输出数组?  发帖心情 Post By:2019/4/15 22:13:28 [显示全部帖子]

计算用的历史数据——不想调用图表里的公式历史数据。
不加载框架、不加载图表,只是在后台调用这个函数。
这样写代码可以实现目的吗?另外,怎么样实现WMA输出的值是数组?谢谢各位老师!
'--------------------------------------------------------------------------------
'简称: WMA
'名称: 求权重平均
'参数说明如下:
'myCode:证券代码;myMarket:证券市场;
'CYC:0表示1分钟、1表示5分钟、2表示15分钟、3表示30分钟、4表示60分钟、 
'5表示日线、6表示周线、7表示月线、8表示年线、9表示多日线、10表示分笔成交、 
'11表示多小时、12表示多秒、13表示多分钟线、14表示季度线、15表示半年线、 
'16表示节气线、17表示3分钟、18表示10分钟
'Price:价格(Open、High、Low、Close、Volume、OpenInt);Length:周期
Function WMA(myCode,myMarket,CYC,Price,Length)
Dim i,WtdSum,CumWt,Histoiry
Set Histoiry = MarketData.GetHistoryData("myCode","myMarket",CYC)
WtdSum = 0
For i = 0 To Length - 1
Select Case Price
Case Price = Close
WtdSum = WtdSum + ( Length - i ) * Histoiry.Close(i)
Case Price = Open
WtdSum = WtdSum + ( Length - i ) * Histoiry.Open(i)
Case Price = High
WtdSum = WtdSum + ( Length - i ) * Histoiry.High(i) 
Case Price = Low
WtdSum = WtdSum + ( Length - i ) * Histoiry.Low(i) 
Case Price = Volume
WtdSum = WtdSum + ( Length - i ) * Histoiry.Volume(i) 
Case Price = OpenInt
WtdSum = WtdSum + ( Length - i ) * Histoiry.OpenInt(i)
End Select
Next i
CumWt = ( Length + 1 ) * Length * 1/2 
WMA = WtdSum / CumWt
Set Histoiry = Nothing
End Function
'-----------------------------------------------------------------------------------

 回到顶部