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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 如何获得当前窗格(或其名称,序号)?

   

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


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

主题:如何获得当前窗格(或其名称,序号)?

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
如何获得当前窗格(或其名称,序号)?  发帖心情 Post By:2014/7/14 23:12:37 [只看该作者]

如何获得当前窗格(或其名称,序号亦可)?注意,不是获得活动窗格activegrid

应用场景:一个框架分N个窗格,每个窗格加载同一个指标,指标中需要获取,传递当前窗格的品种代码StockLabel

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


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

在当前PEL指标中获取窗格名称?


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

金字塔-技术部

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

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

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/7/15 0:06:50 [只看该作者]

想要实现的目的其实很简单,不知道我这个实现方法是不是太复杂.自己手动写二行代码做价差图,其实很简单,但麻烦的是每个加载的品种都要重写
[此贴子已经被作者于2014/7/15 0:08:00编辑过]

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/7/15 7:59:14 [只看该作者]

这就好比在多个窗格中加载同一个均线指标,你不需要分别告诉它计算哪个框架哪个窗格哪个品种,它自己就知道

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


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

这个不难的吧, 自定义VBS函数里的 Formula 对象中,你可以通过 ParentGrid 方法得到窗格Grid对象, 然后再通过 grid 对象的

StockName         与该窗格关联的证券名称,只读。

StockLabel        与该窗格关联的证券代码,只读。

Market            与该窗格关联的市场代码,只读。

这3个属性就可以直接得到加载的品种了



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

金字塔-技术部

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

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

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By: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


以上返回不成功,不知道哪里不对?

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


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

自定义函数无法传递字符串参数, 你可以论坛搜索一下, 有很多解决方案


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

金字塔-技术部

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

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

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/7/15 19:00:45 [只看该作者]

以下是引用王锋在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编辑过]

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


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

VBA的字符串是双引号,你搞成单引号了,你跟PEL语法上弄混了


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

金字塔-技术部

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

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

Email:service@weistock.com
 回到顶部
总数 17 1 2 下一页