以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]为什么自定义函数不输出图形?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=9620)

--  作者:RES00
--  发布时间:2012/1/9 12:58:00
--  [求助]为什么自定义函数不输出图形?

看了系统的自定义函数后写了下面这个(公式名称test):

C1:CU_MA1(CLOSE,15);

显示的时候为什么是一条0的直线?

请教版主和各位高手

[此贴子已经被作者于2012-1-9 13:19:44编辑过]

--  作者:26327756l
--  发布时间:2012/1/9 13:33:01
--  

你的那条语句是不可以放在自定义函数里的

是公式里的语句

 自定义函数中的语句格式是VBA的语法格式

 

请仔细确认。


--  作者:RES00
--  发布时间:2012/1/9 15:42:24
--  回复:(26327756l)你的那条语句是不可以放在自定义函...

我是在新建的公式TEST中调用系统的自定义函数CU_MA1,在公式编辑框内调用,这个语句没有错误,编译通过

而且按照金字塔的说明,公式中调用自定义函数与在公式中调用系统函数是一样的,所以"C1:CU_MA1(CLOSE,5);"应该是没有问题的吧?!

为什么不显示图形?

如果上面我的调用有错,那么要显示图形,在公式编辑中应该如何调用自定义函数呢?不吝赐教!谢谢


--  作者:26327756l
--  发布时间:2012/1/9 15:54:01
--  

你有没有编辑你自定义的函数呢?

没有编辑的话,就不会数据,默认数据为0;

 


--  作者:RES00
--  发布时间:2012/1/9 15:56:36
--  回复:(26327756l)你有没有编辑你自定义的函数呢?...
CU_MA1函数是系统自带的自定义函数,我只是直接引用,并没有编辑
--  作者:fly
--  发布时间:2012/1/9 16:18:15
--  

自定义函数都建在模块Function中,该函数为后台VBA编写,先将它右键--运行--执行,

 

就可以在公式编辑里调用了,注意K线图中,X坐标上右键--仅随K线变动


--  作者:王锋
--  发布时间:2012/1/9 17:15:23
--  
经过测试,是可以工作的,请确认你的VBA代码是否被修改过,或者你的VBA是否开启
--  作者:RES00
--  发布时间:2012/1/10 14:17:09
--  回复:(fly)“自定义函数”都建在模块Function中,该...

我想发个截图给你们看下,这个话题编辑框偏偏不能插入本地图片,你们说的问题我都没有错误,但就是输出不了

发下代码你们看,系统自己带的,不是我写的,看看有没有问题,我的版本是2.75:

\'计算逐周期模式下指定周期长度的收盘价均价
Function CU_MA2(Formula,cyc)
    \'得到K线数据对象
 Set History = Formula.ParentGrid.GetHistoryData()
 \'若当前周期尚未到计算周期,不参与计算
 if Formula.IndexData < cyc-1 then
  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

\'计算序列模式下指定周期长度的收盘价均价
Function CU_MA1(Formula,CLOSE,CYC)
   CU_MA1=0

    \'防止公式逐周期模式时调用
    If Formula.WorkMode = 0 Then
        Exit Function
    End If

    \'CLOSE数组数据长度一定会与Formula.DataSize-1相等
    DataCount = UBound(CLOSE)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

    \'定义一个计算返回的数组
    Dim ResultMa
    Redim ResultMa(DataCount)

    For i = Cyc-1 To Formula.DataSize-1
        Count = 0
        For k = i-(Cyc-1) To i
            Count = Count + CLOSE(k)
        Next
        ResultMa(i) = Count / Cyc
    Next

    \'返回一个计算完毕的均线数组
    CU_MA1 = ResultMa
End Function

 


--  作者:RES00
--  发布时间:2012/1/10 14:31:27
--  回复:(fly)“自定义函数”都建在模块Function中,该...

另外FLY说的X轴应该是说Y轴吧,X轴没有你说的选项


--  作者:fly
--  发布时间:2012/1/10 14:41:10
--  

是的Y轴,手误.

 

本地测过,可以的.

(1)

自定义函数都建在模块Function中,该函数为后台VBA编写,先将它右键--运行--执行,

 

(2)公式编辑里 新建指标

//序列计算

C1:CU_MA1(CLOSE,15);

(3)K线图中,Y坐标上右键--仅随K线变动