自定义函数如何在逐K模式下返回公式中可以使用的数组,这回有代码,请管理员帮我看看 [金字塔]
- 咨询内容:
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 = 8End 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编辑过]
- 金字塔客服: 逐k线模式是不能返回数组的
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容