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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 在valuewhen中使用valid函数总是取不到值

   

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


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

主题:在valuewhen中使用valid函数总是取不到值

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2018/1/12 10:08:31 [显示全部帖子]

1、drawnull是无法传递的,所以不能通过这种方式来对无效值做判断。另外如果把drawnull换成0,也不合符逻辑,因为0本身也是有效值,那valid(a)是恒成立的了,失去了对无效值的判断。

2、如果cond成立时,则把date传递给a,这是可以的。但是在valuewhen中再嵌套valuewhen就有问题了,可以尝试把外面一层的valuewhen替换成if,例如:

last_a:if(valid(a),if(valid(a)=0,valuewhen(valid(a)=1,a),ref(valuewhen(valid(a)=1,a),1)),valuewhen(valid(a)=1,a)),nodraw,colorwhite;


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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2018/1/12 14:04:18 [显示全部帖子]

1、抱歉,不是无法传递,说错了,是因为valuewhen取值是根据K线连续的,若条件不成立,取前面一根K线的值,而不是取前面一个有效的值。

2、valuewhen(volid(a)=1,a),表示条件成立时,取当根K线a的值,条件不成立时,取上根K线a的值,若上根K线a的值是无效值,则没有输出。

写法:

last_a:if(valid(a),if(valid(a)=0,valuewhen(valid(a)=1,a),ref(valuewhen(valid(a)=1,a),1)),valuewhen(valid(a)=1,a)),nodraw,colorwhite;

 

3、如果你是要表示条件不满足时,取上次条件成立的时候的a的值吗?可以用barslast获取上次有值的位置的距离当前的周期数,通过ref往前偏移相应的周期来取值。

last_a:if(valid(a),if(valid(a)=0,valuewhen(valid(a)=1,a),ref(valuewhen(valid(a)=1,a),barslast(valid(a)=1))),if(valid(a)=1,a,ref(a,barslast(valid(a)=1)))),nodraw,colorwhite;

 


 回到顶部