看了系统的自定义函数后写了下面这个(公式名称test):
C1:CU_MA1(CLOSE,15);
显示的时候为什么是一条0的直线?
请教版主和各位高手
你的那条语句是不可以放在自定义函数里的
是公式里的语句
自定义函数中的语句格式是VBA的语法格式
请仔细确认。
我是在新建的公式TEST中调用系统的自定义函数CU_MA1,在公式编辑框内调用,这个语句没有错误,编译通过
而且按照金字塔的说明,公式中调用自定义函数与在公式中调用系统函数是一样的,所以"C1:CU_MA1(CLOSE,5);"应该是没有问题的吧?!
为什么不显示图形?
如果上面我的调用有错,那么要显示图形,在公式编辑中应该如何调用自定义函数呢?不吝赐教!谢谢
你有没有编辑你自定义的函数呢?
没有编辑的话,就不会数据,默认数据为0;
“自定义函数”都建在模块Function中,该函数为后台VBA编写,先将它右键--运行--执行,
就可以在公式编辑里调用了,注意K线图中,X坐标上右键--仅随K线变动
我想发个截图给你们看下,这个话题编辑框偏偏不能插入本地图片,你们说的问题我都没有错误,但就是输出不了
发下代码你们看,系统自己带的,不是我写的,看看有没有问题,我的版本是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
另外FLY说的X轴应该是说Y轴吧,X轴没有你说的选项
是的Y轴,手误.
本地测过,可以的.
(1)
“自定义函数”都建在模块Function中,该函数为后台VBA编写,先将它右键--运行--执行, |
(2)公式编辑里 新建指标
//序列计算
C1:CU_MA1(CLOSE,15);
(3)K线图中,Y坐标上右键--仅随K线变动