计算用的历史数据——不想调用图表里的公式历史数据。
不加载框架、不加载图表,只是在后台调用这个函数。 这样写代码可以实现目的吗?另外,怎么样实现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
'-----------------------------------------------------------------------------------
论坛中回复您了,不太明白你一定要自己再造算法的原因
pel和vba交互没办法传递数组的