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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → inblock函数有时返回不正确的结果

   

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


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

主题:inblock函数有时返回不正确的结果

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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
inblock函数有时返回不正确的结果  发帖心情 Post By:2015/5/15 8:54:26 [只看该作者]

我想检测当前品种是否在某个自建的板块当中,使用方法如下

建新板块A,这个板块把已经退市的品种都过滤掉了;
建立一个独立公式“检测”,仅一行代码:通过:=inblock('A');
在当前品种中执行 stkindi('','A.通过',0,6,0);

绝大部分品种的结果都是对的,但总是有些不在板块中的品种却莫名其妙地通过了检测。这会导致我的策略总是有出错的地方,因为不知道哪里出了问题,想容错都不知道从哪着手。

为何inblock函数会出现这样的结果?

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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2015/5/15 9:16:04 [只看该作者]

还补充一个更无法理解的问题,为了节省计算资源,我限定仅当todaybar=2的时候进行检测,结果返回至某个全局变量并显示,到收盘时间自动重置该全局变量。大部分品种的运行结果都是稳定的,但那些inblock返回结果不正确的品种的返回值在todaybar>2的时候会莫名其妙地无规则跳动,我仔细观察了,仅仅是inblock返回值不正确的品种会出现这种情况,返回值正常的都不会这样。情况很吓人,甚至你不动光标,光标停在任何一根K线上时,该全局变量也会自己不断上下跳动。你inblock执行结果不对也就算了,怎么todaybar>2的时候它的值还会变?那if todaybar=2 then语句为什么不起作用?

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/5/15 9:34:57 [只看该作者]

你直接通过:=inblock('A');这个输出到那些品种上看呢,输出结果是1还是0

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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2015/5/15 9:45:03 [只看该作者]

直接到那些品种上看时结果是对的,是0,而且也不会自己跳。见图。
此主题相关图片如下:未命名图片_1.png
按此在新窗口浏览图片

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/5/15 10:05:37 [只看该作者]

我这边用了没发现不对额

总是有些不在板块中的品种却莫名其妙地通过了检测,您把你这边设置的板块以及里面品种说下,并注明在哪个品种下返回结果不对。

我们这边看下。


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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2015/5/15 10:53:00 [只看该作者]

行,我把步骤罗列如下,请你复制代码到你电脑上重复一遍看看结果是否跟我说的一样。出问题的不止一个品种,这里只提了其中一个,J03,焦炭1603,为简单化查找错误的过程,我简化了公式。

 

1、建立公式”筛选“,在条件选择中以该公式的结果建立板块A,代码如下。执行公式的时候不要点选”停牌的品种“。

 

非连续:=not(strfind(stkname(),'连续',1)),nodraw;
非指数:=not(strfind(stkname(),'指数',1)),nodraw;
通过:非连续 and 非指数;

 

2、建立公式”检测“,检测当前品种是否包括于板块A当中,代码如下。

 

通过:inblock('A'),nodraw;

 

3、另建公式”读结果“,在1分钟线下运行于任何连续合约都行,代码如下:

variable:AA=drawnull;

 

if todaybar=2 then AA:=stkindi('J03','检测.通过',0,6,0);

 

通过:AA,nodraw;

 

if time()=closetime(0) then AA=drawnull;

 

4、观察结果,我这里的情况就是上面说的那样,”通过“字段返回的结果是很奇怪的数字,而且不断自己跳动,即时光标不动,它也时不时自己在那里跳动。

 

 


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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2015/5/15 10:55:58 [只看该作者]

上面第3步那句if...then的代码还可以改成这样,你就能更清楚看到J03通过了检测,并且返回结果不断自己跳。

 

if todaybar=2 then AA:=if(stkindi('J03','检测.通过',0,6,0),stkindi('J03','检测.通过',0,6,0),drawnull);


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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2015/5/15 10:59:17 [只看该作者]

上面“读结果”公式最后一行AA后面我打漏了一个冒号,但系统里的公式是对的。

 

if time()=closetime(0) then AA:=drawnull;


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


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2015/5/15 11:07:44 [只看该作者]

忘了说,筛选品种进A板块的时候,范围全选上期,郑期和大期三个交易所。

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


加好友 发短信
等级:超级版主 帖子:5960 积分:0 威望:0 精华:2 注册:2014/6/12 11:29:04
  发帖心情 Post By:2015/5/15 11:11:39 [只看该作者]

好的,我们会安排具体工作人员测试后回复您


金字塔—专业程序化交易量化投资平台

产品部

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

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
总数 37 1 2 3 4 下一页