您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 其他期货软件知识>>正文内容

关于系统自带的CU_MA2函数的问题?我把它赋给一个变量,输出结果怎么一直是0 [金字塔]

  • 咨询内容:

    我的问题

    1. ma2(逐周期模式),在逐周期模式下调用为什么得到的结果为0 .应该是MA的历史均值才对啊.

    2. 如果在序列模式下调用应该是出错,还是得到的最后一根K线的算术平均值.

     

    M2:=CU_MA2(3);

    msgout(1,'M2为'+NUMTOSTR(M2,1));

     

  • 金字塔客服:

    通常自定义函数只能执行一种模式的运算,不要在序列和逐周期这两种模式下混用。

     

     如果在序列模式下调用会不执行该函数体

    [此贴子已经被作者于2011-8-5 10:03:01编辑过]

     

  • 用户回复:

    找到问题所在

    下面是程序的源代码,其中

    “若当前周期尚未到计算周期,不参与计算”

    这一段注释对应的程序一直在执行所以返回为0

    我再进一步查看

    '计算逐周期模式下指定周期长度的收盘价均价
    Function CU_MA2(Formula,cyc)
        '得到K线数据对象
     Set History = Formula.ParentGrid.GetHistoryData()
     '若当前周期尚未到计算周期,不参与计算
     if Formula.IndexData < cyc-1 then
     application.MsgOut Formula.IndexData &"  "&cyc-1
      CU_MA2 = 0
      exit function
     end if
      DataCount = 0
        for i = Formula.IndexData-cyc+1 to Formula.IndexData
         '累加收盘价
         DataCount = DataCount + history.close(i)
        next
     CU_MA2 = DataCount / cyc
    End Function

     

  • 网友回复:

    逐K线下有数据 就是数据比较多

    你是不是用的序列模式 返回为0

     

  • 网友回复:

    这个函数属于统计性的函数,应该运行在逐周期模式下,如果你只想在最后一个周期获得他的数值,那么你可以在指标开头加一句:

    IF NOT(ISLASTBAR) THEN EXIT;


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容