Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:marketdata.STKINDI 在自定义函数中的使用问题

1楼
wangguanjin 发表于:2013/12/21 23:19:45

我定义了一个自定义函数,里面加入如下代码:

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,为什么在测试的时候,函数 返回的结果总是一个数,没有变化

2楼
王锋 发表于:2013/12/22 1:13:54
600217 看看你引用的这个品种的历史数据补齐了没有
3楼
wangguanjin 发表于:2013/12/22 20:31:17
你好,boss, 600217 数据已经补齐了的,啥子问题捏?
4楼
王锋 发表于:2013/12/23 18:21:09

你的代码就是返回的一个数,如果你需要一个数组变量,那么你应该在循环语句中使用。

5楼
wangguanjin 发表于:2013/12/23 21:17:11
boss,您好!

在逐K线模式下,每根K线调用它的时候,返回的应该是对应当前K线的值, 我的意思是它返回的值不会发生变化,是固定的。
6楼
王锋 发表于:2013/12/23 22:32:46
你还是好好检查 marketdata.STKINDI 你的参数引用吧
7楼
wangguanjin 发表于:2013/12/24 22:52:20

我把完整代码贴出来吧,代码如下:

 

// 以下代码为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数组的内容不一致,应该一样才对啊


[此贴子已经被作者于2013/12/24 22:53:06编辑过]
8楼
王锋 发表于:2013/12/25 16:27:26

PEL中你使用STKINDIEX对引用的数据做了1000根限定。

而你VBA的marketdata.STKINDI未作限定,请仔细看看marketdata.STKINDI的帮助说明,加上数量限定就好了。

 

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.00781 s, 2 queries.