自定義函數如何在逐K模式下返回公式中可以使用的數組,這回有代碼,請管理員幫我看看
作者:金字塔 來源:cxh99.com 發布時間:2014年12月08日
- 咨詢內容:
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線模式是不能返回數組的