以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- [求助]vba 如何编写出权重平均自定义函数输出数组? (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=169362) |
|
-- 作者:lizhi -- 发布时间:2019/4/15 22:13:28 -- [求助]vba 如何编写出权重平均自定义函数输出数组? 计算用的历史数据——不想调用图表里的公式历史数据。
\'-------------------------------------------------------------------------------- \'简称: 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 \'-----------------------------------------------------------------------------------
|
|
-- 作者:yukizzc -- 发布时间:2019/4/16 9:02:23 -- 论坛中回复您了,不太明白你一定要自己再造算法的原因 pel和vba交互没办法传递数组的
|