涨跌停默认似乎只能靠动态函数,那么历史图表数据就错误了。
我搜索论坛发觉有个写法,于是我拿来用了下,在历史数据下是可以的。
公式如下:
以上是对应白银6%幅度
然后我通过在交易公式调用
ok ,完美获得 涨跌停计算模式。 交易所乱放开缩小日子毕竟是少数,可以覆盖多数周期测试。
看上去它是如此完善。。。
"注意这是北京时间模式下"
21:00开盘我观察了下于是就悲剧了
在21:00之后 依据交易所规矩这是第二天的开盘价,也就是夜盘21:00开始的涨跌停新的才对。
于是在公式调用就会出现一会是昨日(下午3:00收盘时刻涨跌停), 一会是今日21:00后得到新数据。
这在历史数据时刻是可以发现的, 一直持续到 0:00分 涨跌停数据才稳定住成新的。
当然我知道这一问题是夜盘时间关系。
我是来寻求改善写法。
所有非日线时刻之下 5,15,30,60 分 在 21:00-23:59 历史数据都是"调用前一天" 盘中则数据闪烁。
在 0:00 则立即稳定 到 15:00
北京时间问题?
你这边调用当天日线,今天晚上去调用当天日线的话自然还是今天了(虽然交易所把晚上的日算到明天了)
所以程序化建议用金字塔时区,你这个恰好也是用北京时区情况下会出现的意外。
你这边调用当天日线,今天晚上去调用当天日线的话自然还是今天了(虽然交易所把晚上的日算到明天了)
所以程序化建议用金字塔时区,你这个恰好也是用北京时区情况下会出现的意外。
有可能在“北京时区”把这问题解决吗? 我跑不是一个,改时区要把别跑程序也改过,这出bug概率就大大增加了
我试图去解决问题
定义时间区间,之后我考虑用IF判断。 上述代码没有实现目标。
这样看下呢,晚上的引用日线向后便宜一位
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
这样看下呢,晚上的引用日线向后便宜一位
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是必定闪烁的。
今晚观察了,与我最初试图REF一个状态,只要是过去数据就没事,“当下状态必然闪烁”
不会啊,你公式属性都用逐k。我这把看了下21点后数值就变了
此主题相关图片如下:q4`t6vxztgowm%x)6orf}f.jpg
我自然是实验过才来牢骚的。
我的意思你看我今晚写那一行, 我用来观察5分钟白银。 它依旧是一会是刚好今天数值一会是明天的。 这个1会大概5-20秒会变换数值。
那么写详细点
这个公式"前结" 是作为“技术指标” 序列模式
这部分代码是写在“交易公式” 逐K模式下。
表现症状是当下 21:00-23:55 时刻。 因为北京时间夜盘关系。 我上述 “涨停观察、跌停观察”出现闪烁,即一会是今日涨跌停一会是昨日的涨跌停。这个闪烁幅度是依据行情速度的就是行情慢时刻就闪的慢点,但肯定是必须闪。
然后就是前面说全部"逐K模式" 这个意思是引用最初指标“前结” 也要改模式, 这个从一开始是彻底不对的,因为换了模式后引用还是闪烁而数值直接变成了"0"。
楼上几位别双击出可移动是自光标,这个时候数据是对的。
你别选等几秒看看观察到数据就会发现是闪烁的
我这边都正常,我想了个验证的方法。工具-数据管理-全局变量,这里把涨停和跌停的正确数值都设定好。然后通过如下代码判断今天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