以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  
 是