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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]循环递增取值问题求助。

   

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


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

主题:[求助]循环递增取值问题求助。

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


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
[求助]循环递增取值问题求助。  发帖心情 Post By:2012/7/3 0:25:09    Post IP:114.135.13.33[只看该作者]

公式如下,需要在while循环语句中根据i值递增循环判断,但用如下公式貌似bb数值不会变,一直是1,不会进入循环?求教,怎么写能实现类似功能。
是要用在逐K线模式下。
variable:i1=1;
value2:=(Close-llv(L, 4))/(Hhv(H, 4)-llv(L, 4)) * 100;
bb:=ref(value2,i1);
while bb<=75 and bb>=25  DO
   begin
    i1:=i1+1;
   end;
i:i1;
x:value2;
[此贴子已经被作者于2012-7-3 0:26:02编辑过]

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


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2012/7/3 0:45:05    Post IP:114.135.13.33[只看该作者]

貌似上面在逐K线下,可以运行了,但为什么这个公式要陷入死循环,bb值不会随i值变化:
Input: RISK(8);
Variable:i1=0;
value10:=3 + RISK*2 ;
x1:=67 + RISK;
x2:=33 - RISK;
value11:=value10;

value12:=BARSLAST(abs(o-ref(c,1))>= ma((h-l),10)*2);
if value12<=9 then value11:= 3;
  else value11:=value10;

value13:=BARSLAST(abs(ref(c,3)-c)>= ma((h-l),10)*4.6);
if value13<=6 then value11:=4;
  else value11:=value10;
value2:=(Close-llv(L, value11))/(Hhv(H, value11)-llv(L, value11)) * 100;

aa:=High+ma((h-l), 10)*0.5;
aa1:=l-ma((h-l), 10)*0.5;
bb:=ref(value2,i1);
if value2 < x2 then begin
i1:=1;
while bb>=x2 and bb<=x1 DO
   begin
    i1:=i1+1;
   end;
end;
 i:i1;

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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2012/7/3 8:47:29    Post IP:58.246.57.26[只看该作者]

在逐k线模式里你用递增,这个软件要卡死的。运算的太多了


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


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2012/7/3 12:21:17    Post IP:114.135.13.33[只看该作者]

不是这个原因,主要是这句 bb:=ref(value2,i1);中的bb在循环判断语句中调用时,不能更新i1值,造成死循环。

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2012/7/3 12:32:07    Post IP:58.246.57.26[只看该作者]

i1:=1;
while bb>=x2 and bb<=x1 DO
   begin
    i1:=i1+1;
   end;

 

这句话肯定是有问题的,因为循环内部,你没有跳出循环的条件



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2012/7/3 12:33:10    Post IP:58.246.57.26[只看该作者]

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 参考问题4,里面的调试技巧,使用断点及单步跟踪来调试你的代码


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
cthlj
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2012/7/3 16:43:17    Post IP:58.42.31.36[只看该作者]

版主,初看下面的语句肯定有问题,但是while判断里面的bb是等于ref(value2,i1)的,也就死随i1值的增加,不断取前i1天的value2的值。也就是说bb的值按想法是要随i1的累加变化,实际却不变化,造成死循环。暂时没有想到解决的办法。

bb:=ref(value2,i1);
if value2 < x2 then begin
i1:=1;
while bb>=x2 and bb<=x1 DO
    begin
     i1:=i1+1;
    end;
end;

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2012/7/3 22:04:01    Post IP:58.33.125.90[只看该作者]

while bb>=x2 and bb<=x1 DO
   begin
    i1:=i1+1;
   end;

 

仔细看看这个代码,用单步跟踪自己看看吧。

循环内部你只对i1做了赋值,i1的变化对bb>=x2 and bb<=x1 这个条件是没有任何作用的,会直接导致在循环里无法跳出来



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
cthlj
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2012/7/4 10:38:42    Post IP:58.42.31.36[只看该作者]

以下是引用王锋在2012-7-3 22:04:01的发言:
while bb>=x2 and bb<=x1 DO
   begin
    i1:=i1+1;
   end;

 

仔细看看这个代码,用单步跟踪自己看看吧。

循环内部你只对i1做了赋值,i1的变化对bb>=x2 and bb<=x1 这个条件是没有任何作用的,会直接导致在循环里无法跳出来

感谢大大回复,实际我要实现的是这样的功能,但在if语句内,不能使用ref函数,请问有折中的方法没有?

while ref(value2,i1)>=x2 and ref(value2,i1)<=x1 DO
   begin
    i1:=i1+1;
   end;

 


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


加好友 发短信
等级:金字塔养老院 帖子:1323 积分:6764 威望:0 精华:0 注册:2011/6/14 17:27:11
  发帖心情 Post By:2012/7/4 10:58:31    Post IP:58.246.57.26[只看该作者]

但在if语句内,不能使用ref函数的解决办法

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130

 



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
总数 12 1 2 下一页