欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 自定义函数如何在逐K模式下返回公式中可以使用的数组,这回有代码,请管理员帮我看看

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2768人关注过本帖树形打印复制链接

主题:自定义函数如何在逐K模式下返回公式中可以使用的数组,这回有代码,请管理员帮我看看

帅哥哟,离线,有人找我吗?
ywbab
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:22 积分:0 威望:0 精华:0 注册:2014/8/16 15:06:38
自定义函数如何在逐K模式下返回公式中可以使用的数组,这回有代码,请管理员帮我看看  发帖心情 Post By:2014/8/30 18:46:30 [只看该作者]

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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
马良
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2014/8/30 23:09:11 [只看该作者]

逐k线模式是不能返回数组的

 回到顶部