以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 循环语句问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=155743) |
-- 作者:rockyan -- 发布时间:2017/7/6 12:38:03 -- 循环语句问题 循环语句,逐K,好像有问题,请教如何改写
s:=count(某条件1,barslast(某条件2)); for i=1 to s do begin b1:=barslast(count(某条件1),barslast(某条件2))=i; li0:=ref(l,b1); li:=ifelse(li0<2500,0,li0); lz:=max(li,0); end
谢谢
|
-- 作者:rockyan -- 发布时间:2017/7/6 12:38:47 -- 应该是ref barslast 等引起的问题吧 |
-- 作者:wenarm -- 发布时间:2017/7/6 13:42:31 -- 你想实现什么样的逻辑处理 [此贴子已经被作者于2017/7/6 13:42:58编辑过]
|
-- 作者:rockyan -- 发布时间:2017/7/6 13:45:49 -- 逻辑已经写的很清楚了啊 |
-- 作者:rockyan -- 发布时间:2017/7/6 13:59:06 -- 逻辑或者可以这样描述: 在最近的条件2成立的K线到现在,一共发生了条件1,S次 然后,找出这S次每一次的Low,如果low比2500小,直接赋值为0,再对这S个L进行比较,最后,取出最大的L |
-- 作者:rockyan -- 发布时间:2017/7/6 14:04:36 -- 实际问题比这个要复杂一些,所以逻辑实际不是重点,重点是这种问题,count barslast ifelse 怎么把他们放到循环外面去,包括ref,虽然ref可以用数组,但是因为本例ref必须在循环里得出b1的情况才可求出来,故,不知怎么解决。 如果不把他们放到循环外面,结果是能够编译,但实际出错 谢谢 |
-- 作者:wenarm -- 发布时间:2017/7/6 14:38:10 -- 找出这S次每一次的Low,如果low比2500小,直接赋值为0,再对这S个L进行比较。 上述内容,你要排除小于2500的、是不想低于这个2500的参与计算最大值? [此贴子已经被作者于2017/7/6 14:43:53编辑过]
|
-- 作者:rockyan -- 发布时间:2017/7/6 14:39:31 -- 先能告诉我一下,ifelse可以正常的用在FOR里吗 |
-- 作者:wenarm -- 发布时间:2017/7/6 14:45:16 -- 不可以 你的需求等价于下面的处理方式 CC:VALUEWHEN(条件1,low);hhv(low,barslast(条件2));
|
-- 作者:rockyan -- 发布时间:2017/7/6 14:46:34 -- 是 |