以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 如何获得当前窗格(或其名称,序号)? (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=67383) |
-- 作者:dwjgwsm -- 发布时间:2014/7/14 23:12:37 -- 如何获得当前窗格(或其名称,序号)? 如何获得当前窗格(或其名称,序号亦可)?注意,不是获得活动窗格activegrid 应用场景:一个框架分N个窗格,每个窗格加载同一个指标,指标中需要获取,传递当前窗格的品种代码StockLabel
|
-- 作者:王锋 -- 发布时间:2014/7/14 23:21:07 -- 在当前PEL指标中获取窗格名称? |
-- 作者:dwjgwsm -- 发布时间:2014/7/15 0:03:45 -- 我用vba写了一段比较同一品种的合约强弱的代码,用于比较同一品种中持仓量最大和第二大合约的强弱,然后我想返回这二个合约的StockLabel,令其显示在各个窗格的副图中.我设想的per指标代码是这样(当然也可能不对): strongercode:StongCode() ,nodraw; //自定义函数StongCode,最好什么参数也不用传入,实在要传入参数,那就传入框架名称,在vba中自动判断指标所在窗格的名称或者序号,进而获得该窗格相关联的StockLabel,以便下一步运算,整个代码的思路、步骤如下: ①(自动)获取currentframe.name→②自动获取currentgrid.name→③前二步最终目的是自动获取currentStockLabel→④遍历该品种所有合约、筛选出持仓量最大的StockLabel(MaxOpenintLabel)和持仓量次大的StockLabel(SecondOpenintLabel)→⑤比较二者强弱→⑥返回strongerLabel和weakerLabel. 考虑到自定义函数只能返回单值,因此,新建二个自定义函数StongCode和WeakCode,分别返回strongerLabel和weakerLabel.其中,我已经把第④步到第⑥步的vba代码都写好了,但是就是不知道该如何实现前三步 weakercode:WeakCode(),nodraw; [此贴子已经被作者于2014/7/15 0:05:29编辑过]
|
-- 作者:dwjgwsm -- 发布时间:2014/7/15 0:06:50 -- 想要实现的目的其实很简单,不知道我这个实现方法是不是太复杂.自己手动写二行代码做价差图,其实很简单,但麻烦的是每个加载的品种都要重写 [此贴子已经被作者于2014/7/15 0:08:00编辑过]
|
-- 作者:dwjgwsm -- 发布时间:2014/7/15 7:59:14 -- 这就好比在多个窗格中加载同一个均线指标,你不需要分别告诉它计算哪个框架哪个窗格哪个品种,它自己就知道 |
-- 作者:王锋 -- 发布时间:2014/7/15 9:45:54 -- 这个不难的吧, 自定义VBS函数里的 Formula 对象中,你可以通过 ParentGrid 方法得到窗格Grid对象, 然后再通过 grid 对象的 StockName 与该窗格关联的证券名称,只读。 StockLabel 与该窗格关联的证券代码,只读。 Market 与该窗格关联的市场代码,只读。 这3个属性就可以直接得到加载的品种了 |
-- 作者:dwjgwsm -- 发布时间:2014/7/15 9:49:22 -- 我写了这么几句代码: yy:=PINGZHONG(STKLABEL); //新建自定义函数PINGZHONG STRINGTOFILE(\'d:\\111.txt\',yy); /////////////////////////////// Function pingzhong(Formula,daima) aa=daima //把品种代码daima传递给aa xxx aa,bb //再把aa传递给宏xxx pingzhong=bb //最终把品种代码变成自定义函数返回值 End Function ////////////////////////////// Sub xxx(sss,bb) bb=sss //把品种代码再传给bb,bb返回回去 End Sub 以上返回不成功,不知道哪里不对? |
-- 作者:王锋 -- 发布时间:2014/7/15 10:09:18 -- 自定义函数无法传递字符串参数, 你可以论坛搜索一下, 有很多解决方案 |
-- 作者:dwjgwsm -- 发布时间:2014/7/15 19:00:45 -- 以下是引用王锋在2014/7/15 9:45:54的发言:
这个不难的吧, 自定义VBS函数里的 Formula 对象中,你可以通过 ParentGrid 方法得到窗格Grid对象, 然后再通过 grid 对象的 StockName 与该窗格关联的证券名称,只读。 StockLabel 与该窗格关联的证券代码,只读。 Market 与该窗格关联的市场代码,只读。 这3个属性就可以直接得到加载的品种了
我写了这么一段代码: ss:=GETGRID(); //自定义函数,需要传入参数吗?传入什么? ==================== Function getgrid(Formula) getgrid=0
以上代码没有写入ini文件任何内容,pel指标也没有输出.请王兄帮忙检查一下怎么回事?
[此贴子已经被作者于2014/7/15 19:02:31编辑过]
|
-- 作者:王锋 -- 发布时间:2014/7/16 0:34:25 -- VBA的字符串是双引号,你搞成单引号了,你跟PEL语法上弄混了 |