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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → [求助]可能夜盘导致bug,关于涨跌停计算表示

   

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


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

主题:[求助]可能夜盘导致bug,关于涨跌停计算表示

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


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
[求助]可能夜盘导致bug,关于涨跌停计算表示  发帖心情 Post By:2015/1/30 21:27:55 [只看该作者]

 涨跌停默认似乎只能靠动态函数,那么历史图表数据就错误了。

 

我搜索论坛发觉有个写法,于是我拿来用了下,在历史数据下是可以的。

 公式如下:

 

以下内容为程序代码:

1 INPUT:DDD(6,4,20,1);
2 结算价:TRIMPRICE(AMOUNT/VOL/MULTIPLIER);//日周期下有效
3 前结算价:ref(结算价,1);//日周期下有效
4 当日涨停:INTPART((1+DDD/100)*前结算价);
5 当日跌停:INTPART((1-DDD/100)*前结算价);

 

以上是对应白银6%幅度

 

然后我通过在交易公式调用

以下内容为程序代码:

1 涨停:STKINDIEX(STKLABEL,'前结.当日涨停',0,6,0,0),NODRAW;
2 跌停:STKINDIEX(STKLABEL,'前结.当日跌停',0,6,0,0),NODRAW;
3

 

ok ,完美获得 涨跌停计算模式。 交易所乱放开缩小日子毕竟是少数,可以覆盖多数周期测试。

 

看上去它是如此完善。。。

 

  "注意这是北京时间模式下"

 

21:00开盘我观察了下于是就悲剧了

 

在21:00之后 依据交易所规矩这是第二天的开盘价,也就是夜盘21:00开始的涨跌停新的才对。

  于是在公式调用就会出现一会是昨日(下午3:00收盘时刻涨跌停), 一会是今日21:00后得到新数据。

这在历史数据时刻是可以发现的, 一直持续到 0:00分 涨跌停数据才稳定住成新的。

 

当然我知道这一问题是夜盘时间关系。

 

   我是来寻求改善写法。

 

 


版主评定:好评,获得5个金币奖励好评,获得5个金币奖励
(理由:确实有问题)
 回到顶部
帅哥哟,离线,有人找我吗?
netfox
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/1/30 22:01:24 [只看该作者]

图片点击可在新窗口打开查看  所有非日线时刻之下  5,15,30,60 分 在 21:00-23:59  历史数据都是"调用前一天"  盘中则数据闪烁。

  在 0:00 则立即稳定 到 15:00

 

北京时间问题?


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


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

你这边调用当天日线,今天晚上去调用当天日线的话自然还是今天了(虽然交易所把晚上的日算到明天了)

所以程序化建议用金字塔时区,你这个恰好也是用北京时区情况下会出现的意外。


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


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/2/1 12:39:47 [只看该作者]

以下是引用yukizzc在2015/1/31 17:32:08的发言:

你这边调用当天日线,今天晚上去调用当天日线的话自然还是今天了(虽然交易所把晚上的日算到明天了)

所以程序化建议用金字塔时区,你这个恰好也是用北京时区情况下会出现的意外。

 

有可能在“北京时区”把这问题解决吗?  我跑不是一个,改时区要把别跑程序也改过,这出bug概率就大大增加了

我试图去解决问题

以下内容为程序代码:

1 时间:=time>=210500 and time<=235500;
2 ZZ1:=涨停1<>ref(涨停1,1) and 时间;
3 DD1:=跌停1<>ref(跌停1,1) and 时间;
4 涨停:if(ZZ1,涨停1,ref(涨停1,1)),NODRAW;
5 跌停:if(DD1,跌停1,ref(跌停1,1)),NODRAW;

 

定义时间区间,之后我考虑用IF判断。 上述代码没有实现目标。


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


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

这样看下呢,晚上的引用日线向后便宜一位

if 时间:=time>=210500 and time<=235500 THEN
begin
涨停:=STKINDIEX(STKLABEL,'前结.当日涨停',0,6,1,0),NODRAW;
跌停:=STKINDIEX(STKLABEL,'前结.当日跌停',0,6,1,0),NODRAW;
end
else
begin
涨停:=STKINDIEX(STKLABEL,'前结.当日涨停',0,6,0,0),NODRAW;
跌停:=STKINDIEX(STKLABEL,'前结.当日跌停',0,6,0,0),NODRAW;
end


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


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/2/2 21:13:37 [只看该作者]

以下是引用yukizzc在2015/2/1 17:06:16的发言:

这样看下呢,晚上的引用日线向后便宜一位

if 时间:=time>=210500 and time<=235500 THEN
begin
涨停:=STKINDIEX(STKLABEL,'前结.当日涨停',0,6,1,0),NODRAW;
跌停:=STKINDIEX(STKLABEL,'前结.当日跌停',0,6,1,0),NODRAW;
end
else
begin
涨停:=STKINDIEX(STKLABEL,'前结.当日涨停',0,6,0,0),NODRAW;
跌停:=STKINDIEX(STKLABEL,'前结.当日跌停',0,6,0,0),NODRAW;
end

 

 

  3Q 楼上代码,几乎堪称完美。(无交易时刻。)

 

在非交易时段特别就是上面说明晚上阶段,楼上代码完美实现,就是说如果测试应该是可靠的。  好吧起码基本解决了。 在一次万分感谢。

   然后然后我就知道实盘下是悲剧,果然如同最初观察这是夜盘统计问题。

 

回复楼上: 这段代码在晚上21:00-23:55是必定闪烁的。

以下内容为程序代码:

1 涨停观测:涨停,NODRAW;
2 跌停观测:跌停,NODRAW;

  今晚观察了,与我最初试图REF一个状态,只要是过去数据就没事,“当下状态必然闪烁”


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


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

不会啊,你公式属性都用逐k。我这把看了下21点后数值就变了

 


图片点击可在新窗口打开查看此主题相关图片如下:q4`t6vxztgowm%x)6orf}f.jpg
图片点击可在新窗口打开查看

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


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/2/2 22:16:34 [只看该作者]

以下是引用yukizzc在2015/2/2 22:02:03的发言:

不会啊,你公式属性都用逐k。我这把看了下21点后数值就变了

 


图片点击可在新窗口打开查看此主题相关图片如下:q4`t6vxztgowm%x)6orf}f.jpg

 

我自然是实验过才来牢骚的。

 

我的意思你看我今晚写那一行, 我用来观察5分钟白银。  它依旧是一会是刚好今天数值一会是明天的。 这个1会大概5-20秒会变换数值。

 

那么写详细点

 

以下内容为程序代码:

1 INPUT:DDD(6,4,20,1);
2 结算价:TRIMPRICE(AMOUNT/VOL/MULTIPLIER);//日周期下有效
3 前结算价:ref(结算价,1);//日周期下有效
4 当日涨停:INTPART((1+DDD/100)*前结算价);
5 当日跌停:INTPART((1-DDD/100)*前结算价);

 

这个公式"前结" 是作为“技术指标” 序列模式

 

以下内容为程序代码:

1 if 时间:=time>=210500 and time<=235500 THEN
2 begin
3 涨停:=STKINDIEX(STKLABEL,'前结.当日涨停',0,6,1,0);
4 跌停:=STKINDIEX(STKLABEL,'前结.当日跌停',0,6,1,0);
5 end
6 else
7 begin
8 涨停:=STKINDIEX(STKLABEL,'前结.当日涨停',0,6,0,0);
9 跌停:=STKINDIEX(STKLABEL,'前结.当日跌停',0,6,0,0);
10 end
11 涨停观测:涨停,NODRAW;
12 跌停观测:跌停,NODRAW;

 

这部分代码是写在“交易公式” 逐K模式下。

 

   表现症状是当下 21:00-23:55 时刻。 因为北京时间夜盘关系。  我上述 “涨停观察、跌停观察”出现闪烁,即一会是今日涨跌停一会是昨日的涨跌停。这个闪烁幅度是依据行情速度的就是行情慢时刻就闪的慢点,但肯定是必须闪。

 

然后就是前面说全部"逐K模式" 这个意思是引用最初指标“前结” 也要改模式, 这个从一开始是彻底不对的,因为换了模式后引用还是闪烁而数值直接变成了"0"。

[此贴子已经被作者于2015/2/2 22:17:22编辑过]

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


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/2/2 22:19:46 [只看该作者]

楼上几位别双击出可移动是自光标,这个时候数据是对的。

  你别选等几秒看看观察到数据就会发现是闪烁的


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


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

我这边都正常,我想了个验证的方法。工具-数据管理-全局变量,这里把涨停和跌停的正确数值都设定好。然后通过如下代码判断今天21点后如果有发现aa和bb的值与全局变量里定义好的不符合,就输出并且来个开多。接着只要看test这个是否生成就知道了

 

aa:涨停;
bb:跌停;
if date=1150202 and time>=210500 and ((EXTGBDATA('涨停' )<>aa) or (EXTGBDATA('跌停' )<>bb)) THEN
begin
DEBUGFILE('D:\TEST.TXT','当前资产为%.2f',aa);
buy(1,1,market);
end


 回到顶部
总数 26 1 2 3 下一页