我定义了一个自定义函数,里面加入如下代码:
Function MyFun(Formula,StockIDStr)
'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
Set Formula1 = marketdata.STKINDI("600217","SH","ma(5,10,20,60)",0,5)
MyFun = Formula1.GetBufData("ma1",Formula1.DataSize-1)
End Function
我在逐K线模型下运行的交易系统中调用了MyFun,为什么在测试的时候,函数 返回的结果总是一个数,没有变化
你的代码就是返回的一个数,如果你需要一个数组变量,那么你应该在循环语句中使用。
我把完整代码贴出来吧,代码如下:
// 以下代码为PLA语言代码,在逐K线模式下运行
VARIABLE:clo[] = 0;
VARIABLE:clo2[] = 0;
clo := STKINDIEX('600000','MA.MA1(5)',0,6,0,1000);
clo2 := MyFun(); // MyFun为 VBA写的自定义函数
VBA函数如下:
Function MyFun(Formula)
'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
Set Formula1 = marketdata.STKINDI("600000","SH","ma(5)",0,5)
MyFun = Formula1.GetBufData("ma1",Formula1.DataSize-1)
End Function
问题是:我用产品600000的日K线下进行调试,发现clo数组和clo2数组的内容不一致,应该一样才对啊
PEL中你使用STKINDIEX对引用的数据做了1000根限定。
而你VBA的marketdata.STKINDI未作限定,请仔细看看marketdata.STKINDI的帮助说明,加上数量限定就好了。