请教For循环语句的问题 [博易POBO]
咨询内容:
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语句执行的问题。然后就特地写以上代码来做明显的对比,好说明问题。请认真比较!! 来源 程序化久久网
请教For循环语句的问题
用for语句,想求出五周期内,到最后一个周期斜率最大的那个周期KMMSR:=(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是不对的,请教这是哪里出了问题}
<!-- 咨询内容:
附件 :
-->
来源:程序化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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容