金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1818|回复: 4

有关FOR循环语句应用的3个疑问

[复制链接]

9

主题

37

帖子

47

积分

Rank: 2

等级: 标准版

注册:
2022-10-26
曾用名:
发表于 2023-7-18 14:29 | 显示全部楼层 |阅读模式
老师,在:金字塔学院-语言参考-[]数组下标中的例2:”移动平均线可通过如下循环语句和数组操作实现“中,有些问题不明白:
INPUT:N(5,2,500);      //参数申明
VARIABLE:I=0,S=0;
VAR1:=C; //变量申明
//为了加快运算速度,只有最后一个周期时才循环计算
IF NOT(ISLASTBAR) THEN EXIT;
FOR J=1 TO DATACOUNT DO BEGIN
    S:=S+VAR1[J];
    IF J>=N THEN BEGIN
        IF J>N THEN
            S:=S-VAR1[J-N];
        MA1[J]:S/N;        //实现MA(C,N)
        I:=0;
    END;
END;
问题1:第二次的“IF J>N THEN” 控制意义何在呢,逻辑上第一个就已经控制了呀? 问题2:全局变量I并没有参与运算过程,并且从初定义为0和运算后为0,其值也未发生变化,其存在的意义何在? 问题3:金字塔系统提示默认上述运算为序列模式,那么如上述FOR循环要在逐K模式下运行,是否会发生错误?

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-18 14:50 | 显示全部楼层
1.条件不一样,一个是大于,一个是大于等于。
2.I没啥用

[PEL] 复制代码
INPUT:N(5,2,500);      //参数申明
S:=0;
VAR1:=C; //变量申明
//为了加快运算速度,只有最后一个周期时才循环计算
IF NOT(ISLASTBAR) THEN EXIT;
FOR J=1 TO DATACOUNT DO BEGIN
    S:=S+VAR1[J];
    IF J>=N THEN BEGIN
        IF J>N THEN
            S:=S-VAR1[J-N];
        MA1[J]:S/N;        //实现MA(C,N)
        I:=0;
    END;
END;

对照组:ma(c,n);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

37

帖子

47

积分

Rank: 2

等级: 标准版

注册:
2022-10-26
曾用名:
 楼主| 发表于 2023-7-18 15:02 | 显示全部楼层
我对照了下系统的MA5,确实如老师所说,两个if控制的结果不一样,那么第三个问题呢,如for循环一定要在逐K模式下运行,是否会有逻辑错误?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-18 15:35 | 显示全部楼层
循环的使用其实无所谓的,逐K或者序列其实没区别。


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

37

帖子

47

积分

Rank: 2

等级: 标准版

注册:
2022-10-26
曾用名:
 楼主| 发表于 2023-7-18 16:33 | 显示全部楼层
好的,谢谢老师!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-6-17 01:21 , Processed in 0.133777 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表