欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → marketdata.STKINDI 在自定义函数中的使用问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2886人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
wangguanjin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2013/12/5 22:57:18
marketdata.STKINDI 在自定义函数中的使用问题  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/12/22 1:13:54 [只看该作者]

600217 看看你引用的这个品种的历史数据补齐了没有


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
wangguanjin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2013/12/5 22:57:18
  发帖心情 Post By:2013/12/22 20:31:17 [只看该作者]

你好,boss, 600217 数据已经补齐了的,啥子问题捏?

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/12/23 18:21:09 [只看该作者]

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
wangguanjin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2013/12/5 22:57:18
  发帖心情 Post By:2013/12/23 21:17:11 [只看该作者]

boss,您好!

在逐K线模式下,每根K线调用它的时候,返回的应该是对应当前K线的值, 我的意思是它返回的值不会发生变化,是固定的。

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/12/23 22:32:46 [只看该作者]

你还是好好检查 marketdata.STKINDI 你的参数引用吧


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
wangguanjin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2013/12/5 22:57:18
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/12/25 16:27:26 [只看该作者]

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

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

 



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部