以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  分时段振幅指标  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=181834)

--  作者:cairibbon
--  发布时间:2020/8/22 10:02:54
--  分时段振幅指标
请问:想分时段统计品种振幅,然后把他综合输出成一个指标,可是无法实现。
aa:VALUEWHEN(todaybar=1,time),nodraw;
xx:SUMBARS(time<OPENTIME(2),1)-1,nodraw;
zz:sumbars(time<opentime(4),1)-1,nodraw;
yy:TODAYBAR,nodraw;

if aa>OPENTIME(2) then BEGIN
 
  bb:=yy,nodraw; 
 
end
else BEGIN
 bb:=xx,nodraw;
end
cc:=bb;//日盘K线数目
dd:=zz;//午盘K线数目
ee:=yy;//夜盘K线数目
早盘振幅:(HHV(H,cc)-LLV(L,cc))/REF(C,yy)*100,nodraw;
午盘振幅:(HHV(H,dd)-LLV(L,dd))/REF(C,yy)*100,nodraw;
夜盘振幅:(HHV(H,ee)-LLV(L,ee))/REF(C,yy)*100,nodraw;
fs:=valuewhen((time>opentime(2) and time<opentime(4)),早盘振幅);
fs:=valuewhen((time>opentime(4) and time<opentime(1)),午盘振幅);
fs:=valuewhen((time>opentime(1) and time<opentime(2)),夜盘振幅);

分时段振幅:fs;

请帮忙修改

--  作者:FireScript
--  发布时间:2020/8/24 8:45:52
--  
 把 你的思路详细说明下吧。上面的描述,并不足充足。

--  作者:cairibbon
--  发布时间:2020/8/24 8:57:09
--  
我想做一个分时段的振幅指标,夜盘期间的振幅,早盘期间的振幅,午盘期间的振幅。
即以这个时段开始为起点,求这个时段的(最高价-最低价)/除以前一天的收盘价。
最好能兼顾没有夜盘的品种和节假日无夜盘交易的情况。
目前我写的只能满足在有夜盘的情况下的夜盘品种,分别以三个时段为起点的振幅,画出3条线,没办法归结成一条。无夜盘品种和节假日情况也无法满足。

--  作者:cairibbon
--  发布时间:2020/8/24 9:48:22
--  
另外,我用这个指标进行指标排序,大部分品种都不改变数值。而且我设定了刷新率,但是基本不刷新,一直都是开盘显示的情况,请问为什么?


--  作者:FireScript
--  发布时间:2020/8/24 12:23:17
--  
 参考下面这个方式

LastDayc:=CALLSTOCK(\'\',\'vtclose\',6,-1);//昨日收盘价

IsNight:=OPENTIME(1)>40000;//判断是否有夜盘 ,有夜盘返回0,没有夜盘返回1
d:=STRLEFT(NUMTOSTR(time,0),2);//截取K线字符串前2位
cd1:d=\'13\' and not(ref(d=\'13\',1)) and time>=130000;//白盘开盘位置
cd2:d=\'17\';//下午盘开盘位置判断
cd3:ref(time,1)=CLOSETIME(4) and time<130000;//夜盘开盘位置判断

Len:=BARSLAST(cd1 or cd2 or cd3)+1;//最近一个开盘节点的距离

zf:(hhv(h,len)-llv(l,len))/LastDayc;//计算最近节点以来的振幅


//这部分是为了标识开盘K位置,方便校验
DRAWICON(cd1,h,1);
DRAWICON(cd2,h,2);
DRAWICON(cd3,h,3);
--  作者:FireScript
--  发布时间:2020/8/24 12:25:29
--  
然后你那个振幅不刷新,你要看下行情走势是怎样的。如果最高,最低值没有更新,那么这个振幅按理来说是不会更新的。

--  作者:cairibbon
--  发布时间:2020/8/24 13:34:36
--  
排序以后是这样 只有部分品种显示。不知道什么原因


--  作者:cairibbon
--  发布时间:2020/8/24 14:04:32
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200824133235.png
图片点击可在新窗口打开查看
谢谢版主,你这个思路简单太多了。可是之前的帖子确实没有类似思路的介绍。
目前还有两个疑问,第一个就是加载后部分品种没有数据,一直显示0,按理来说,即便午盘开始计算,午盘后首K出现就应该有数据变化,可是如图,没有,而且有的品种数据数据在开盘后还在变小,我检查了一下逻辑肯定是不应该出现这种情况。我都截图了。

第二是关于程序中,北京时区和金字塔时区。我看到你写程序中取得time对应时间是金字塔时区,可是opentime函数我看注解应该是北京时区。我以后再写有关程序的时候,如果系统时区用的金字塔时区,那我就默认适用金字塔时区写程序吗?感谢。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片123.png
图片点击可在新窗口打开查看


--  作者:FireScript
--  发布时间:2020/8/24 14:56:50
--  
1. 时区建议采用金字塔时区。我上面代码也是针对金字塔时区的。如果你换其北京时区是不行的。
2.原先的代码有些BUG。我需要更新下。你稍等下。


--  作者:FireScript
--  发布时间:2020/8/24 15:02:52
--  
opentime 函数 是2个时区都有返回值的。返回值情况不一样。