以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp)
-- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4)
---- 上面的公式如何修改才能让9:31分这根线的值为0?? (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=159442)
|
-- 作者:代人发贴
-- 发布时间:2017/11/13 10:24:46
-- 上面的公式如何修改才能让9:31分这根线的值为0??
公式Vaaa a:sum(buyvol,todaybar);
公式Vbuyvol a1:=stkindiex(\'\',\'Vaaa.a\',0,0,0,todaybar);
a2:=ref(a1,1);
if todaybar>1 then ans:=(a1-a2) ;
xx:ans;
公式Vbuyvol-2 a1:=stkindiex(\'\',\'Vaaa.a\',0,0,0,todaybar);
a2:=ref(a1,1);
if todaybar>1 then ans:=(a1-a2);
else ans:=0;
xx:ans;
如图: Vbuyvol的线输出正常,于是想在Vbuyvol中想办法去掉每天9:31分的这根线的输出值,让这一分钟的值=0,加入else语句后,输出的图线上面看这两个公式的线型没有任何区别,未实现我的想法.请教一下上面的公式如何修改才能让9:31分这根线的值为0??
此主题相关图片如下:88888888888.jpg

|
-- 作者:FireScript
-- 发布时间:2017/11/13 10:38:54
--
试下这样呢:
if todaybar>1 then ans:=(a1-a2) ; else if then ans:=0;
|
-- 作者:500178
-- 发布时间:2017/11/13 10:55:48
--
版主好,这个帖子是我请客服MM代发的,经过测试将
if todaybar>1 then ans:=(a1-a2);
else ans:=0;
改为
if todaybar>1 then ans:=(a1-a2) ;
else if then ans:=0;
输出结果和图线如原图,还是没有改变~请再帮忙想想办法~
|
-- 作者:FireScript
-- 发布时间:2017/11/13 13:02:20
--
你的公式的模式是序列模式吧。 你换成用逐K模式试下。
|
-- 作者:500178
-- 发布时间:2017/11/13 13:49:52
--
选择逐K模式的话,线图就没有任何输出了,这是逐K的说明,是否这个模式用REF会有问题?
逐K线执行模式虽然效率要比序列模式低,但是他的执行语法更加灵活,可以执行到我们在每个周期上做到的各种操作,TB就是这种模式运行的,BUY等新交易系统只能在逐K线计算模式下运行。 像例如REF,MA等带有统计性质的函数逐K线运行时无法直接使用在IF语句之中(序列运行模式可以),因为带变量判断的IF语句会在某些周期无法调用这些统计函数而导致计算结果出现错误,关于 逐K线模式下统计函数如何工作在控制语句之中用户可以参考帮助。
|
-- 作者:500178
-- 发布时间:2017/11/13 13:54:04
--
换用逐K后,公式在9:31分点上面输出可以得到0这个值,但是其他的位置的线没有输出了.
|
-- 作者:FireScript
-- 发布时间:2017/11/13 14:19:05
--
以下是引用500178在2017/11/13 13:54:04的发言:
换用逐K后,公式在9:31分点上面输出可以得到0这个值,但是其他的位置的线没有输出了.
1.ref的使用只要注意不使用未来引用就OK。
2.我注意到你用了stkindiex。 你换下stkind试下。因为你引用的是分笔的原因,分笔数比较多,你原先那样限制使用K线数量,数据是不够用的。a1:=stkindiex(\'\',\'Vaaa.a\',0,0,0,todaybar); 这里加入当前周期的todaybar是100,那你引用分笔的时候就是引用100个分笔,根本就不够用。
|