如何获得当前窗格(或其名称,序号亦可)?注意,不是获得活动窗格activegrid
应用场景:一个框架分N个窗格,每个窗格加载同一个指标,指标中需要获取,传递当前窗格的品种代码StockLabel
我用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编辑过]
想要实现的目的其实很简单,不知道我这个实现方法是不是太复杂.自己手动写二行代码做价差图,其实很简单,但麻烦的是每个加载的品种都要重写
[此贴子已经被作者于2014/7/15 0:08:00编辑过]
这就好比在多个窗格中加载同一个均线指标,你不需要分别告诉它计算哪个框架哪个窗格哪个品种,它自己就知道
这个不难的吧, 自定义VBS函数里的 Formula 对象中,你可以通过 ParentGrid 方法得到窗格Grid对象, 然后再通过 grid 对象的
StockName 与该窗格关联的证券名称,只读。
StockLabel 与该窗格关联的证券代码,只读。
Market 与该窗格关联的市场代码,只读。
这3个属性就可以直接得到加载的品种了
我写了这么几句代码:
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 9:45:54的发言:
这个不难的吧, 自定义VBS函数里的 Formula 对象中,你可以通过 ParentGrid 方法得到窗格Grid对象, 然后再通过 grid 对象的
StockName 与该窗格关联的证券名称,只读。
StockLabel 与该窗格关联的证券代码,只读。
Market 与该窗格关联的市场代码,只读。
这3个属性就可以直接得到加载的品种了
我写了这么一段代码:
ss:=GETGRID(); //自定义函数,需要传入参数吗?传入什么?
aa:=GETINIFILESTRING('D:\SystemSet.INI','Gen','StockLabel');
DRAWTEXT(1,0,aa,COLORRED,0);
====================
Function getgrid(Formula)
getgrid=0
set aa=Formula.ParentGrid '这里Formula好像没有set对象呀
bb=aa.StockLabel
Document.WritePrivateProfileString 'Gen','StockLabel',bb,'D:\SystemSet.INI'
End Function
以上代码没有写入ini文件任何内容,pel指标也没有输出.请王兄帮忙检查一下怎么回事?
[此贴子已经被作者于2014/7/15 19:02:31编辑过]
VBA的字符串是双引号,你搞成单引号了,你跟PEL语法上弄混了