Function vba_HHV2(Formula, Number, ReturnValue)
'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
Dim History '日线数据对象
Dim Max_l '最低价中的最高价
Dim Min_l '最低价中最低价
Dim Max_l_Number '最低价中的最高价_所在的位置
Dim Min_l_Number '最低价中最低价_所在的位置
Dim Max_l_Day '最低价中的最高价_距离当前的天数
Dim Min_l_Day '最低价中最低价距_离当前的天数
Dim Temp_hl '中间变量
Dim Temp_sum '中间变量
Dim ll
Dim L_Arr
Dim k_tmp
vba_HHV2 = 0
If Number <= 10 Then Exit Function
'-===========================================
'-============初始化变量==================
Max_l = 0
Min_l = 0
Max_l_Number = 0
Min_l_Number = 0
Max_l_Day = 0
Min_l_Day = 0
'-===================================
Set History = Formula.ParentGrid.GetHistoryData() '获取日线数据对象
'-===========================
'取最后一天的收盘价
' Close = History.Close(History.Count-1)
'-=========================================
ReDim L_Arr(1)
ll = History.Low(Number)
'-=======下面涉及往前找最高价==================
If Number < 10 Then Exit Function
Max_l = History.Low(Number - 1)
Min_l = History.Low(Number - 1)
For i = Number - 1 To 0 Step -1
Temp_hl = History.Low(i)
p_Temp_hl = Temp_hl * 1.01
Temp_sum = Temp_sum + 1
If p_Temp_hl >= Max_l Then
If Temp_hl >= Max_l Then
Max_l = Temp_hl
Max_l_Day = Temp_sum
k_tmp = 0
Else
k_tmp = k_tmp + 1
End If
Else
k_tmp = k_tmp + 1
End If
If k_tmp > 3 Then Exit For
Next
L_Arr(0) = Max_l
L_Arr(1) = Max_l_Day
vba_HHV2 = L_Arr '返回数组
ReturnValue = 8
End Function
'-====================公式代码========================
VARIABLE: PARR[2]=0;
po:=0;
PARR:=vba_HHV2(Number-1,po);
L_out3:PARR[1];
L_out4:PARR[2];
uy:po;
'-==========上面在公式中的输出均为零!!!!=================
请求管理员看看问题在哪?????????
[此贴子已经被作者于2014/8/30 18:48:14编辑过]