您现在的位置:程序化交易>> 期货公式>> 博易大师>> 博易大师知识>>正文内容

请教For循环语句的问题 [博易POBO]

咨询内容:

请教For循环语句的问题

用for语句,想求出五周期内,到最后一个周期斜率最大的那个周期KM
 
MSR:=(REF(C,1)-C);
KM:=1;
FOR II:=2 TO 4 DO
BEGIN
SR:=(REF(C,II)-C)/II;
MSR:=IF(SR>MSR,SR,MSR);
KM:=IF(SR>MSR,II,KM);
END {用循环语句比较斜率SR,得到斜率最大值MSR,同时记录最大斜率的周期数KM}
DRAWNUMBER(1,0,KM,0);

SR1:(REF(C,1)-C)/1;
SR2:(REF(C,2)-C)/2;
SR3:(REF(C,3)-C)/3;
SR4:(REF(C,4)-C)/4;
{用暴力直接计算这四个斜率,直接画图。如图所示,显然循环方法得到的KM是不对的,请教这是哪里出了问题}

For语句问题.jpg
  <!-- 咨询内容:

附件 :

-->

 

 来源:程序化99网( WWW.CXH99.COM )

博易技术人员: 运行是没有问题的,但可能跟你预想的不一样。 就是运行有问题,但程序算法没有问题的。为了比较直观看到是循环语句的问题,我特意写了上下两段程序,上段是用循环方法,下段是直接计算法,求同一结果。程序如下,运行后结果如下图:
MSR:=(REF(C,1)-C);
KM:=1;
FORII:=2TO4DO
BEGIN
SR:=(REF(C,II)-C)/II;[b]{分别计算过去第II周期到当前周期的斜率}[/b]
MSR:=IF(SR>MSR,SR,MSR);
KM:=IF(SR>MSR,II,KM);
END
[b]{以上用循环语句的方法比较斜率SR,得到五周棋内斜率最大值MSR,同时记录最大斜率所在周期KM}
{以下用直接法求最大斜率所在周期}[/b]
SR1:(REF(C,1)-C)/1;
SR2:(REF(C,2)-C)/2;
SR3:(REF(C,3)-C)/3;
SR4:(REF(C,4)-C)/4;
MSR2:=MAX(SR1,SR2,SR3,SR4);
KM2:=IF(MSR2=SR1,1,IF(MSR2=SR2,2,IF(MSR2=SR3,3,4)));
[b]{两种方法的算法是等价的,比较两种方法的结果,显然,循环语句计算结果有问题,但程序算法没问题的}
[/b]DRAWNUMBER(1,12,KM,0);[b]
{结果显示全是1}[/b]
DRAWNUMBER(1,9,KM2,0);
[b][attach]5642[/attach][/b]

因为是想在指标中必须用到循环的方法,发现结果总是不对,才发现是for语句执行的问题。然后就特地写以上代码来做明显的对比,好说明问题。请认真比较!! 来源 程序化久久网

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容