金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 5815|回复: 35

IF语句用法问题

[复制链接]

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
发表于 2022-12-7 02:02 | 显示全部楼层 |阅读模式
问题1:示例里有IF COND THEN EXPR1 ELSE EXPR2,这段代码。
实际使用过程中,我用if dif>0 then 执行A代码(多行)  else 执行B代码(多行)
为什么编译时提示else 前面缺少 if,哪里写错了?


问题2:
需求:当A成立时执行一段代码,当A不成立时执行另一段代码
if A 信号(如dif>0) then begin
输出信号A:=A代码
end
else then begin
输出信号B:=B代码
end
输出信号:=输出信号A or 输出信号B
为什么当dif<0时,显示没有执行B代码?

哪里写错了?

回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-12-7 02:11 | 显示全部楼层
问题3:
同问题2的需求,当dif>0时执行代码A,当dif<=0时执行代码B,写成
if dif>0 then begin
输出信号A:=A代码
end
if dif<0 then begin
输出信号B:=B代码
end
输出信号:=输出信号A or 输出信号B;
这样写,也发现dif<0时,没有执行代码,输出信号B及过程变量全部显示#
哪里写错了?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-12-7 09:18 | 显示全部楼层
if c>o then
begin
        a:=1;
END
else
begin
        a:=2;
END
dd:a

这么写,另外程序要运行在逐k模式不要用序列模式
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-12-7 13:34 | 显示全部楼层
资深技术02 发表于 2022-12-7 09:18
if c>o then
begin
        a:=1;

那我又有疑问,为什么输出全局变量的时候,用序列模式就可以?
比如
if c>0 and c<10 then begin
输出全局变量a;
end
if c>=10 and c<20 then begin
输出全局变量b;
end
if c>=20 and c<30 then begin
输出全局变量c;
end

回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-12-7 13:40 | 显示全部楼层
什么叫输出全局变量,如果你这个是图表程序运行的那么就用逐k模式就可以了
https://www.weistock.com/bbs/for ... thread&tid=1116
这里是逐k模式和序列模式的区别,看下其中第三条,对于if语句在逐k和序列下是有差别的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-12-7 13:55 | 显示全部楼层
资深技术02 发表于 2022-12-7 13:40
什么叫输出全局变量,如果你这个是图表程序运行的那么就用逐k模式就可以了
https://www.weistock.com/bbs/ ...

就是我用后台,然后用序列模式。
用如下代码,输出全局变量是可以:
if c>0 and c<10 then begin
EXTGBDATASET(STKLABEL&'a',1);
end
if c>=10 and c<20 then begin
EXTGBDATASET(STKLABEL&'b',1);
end
if c>=20 and c<30 then begin
EXTGBDATASET(STKLABEL&'c',1);
end
这样写,就能输出a\b\c 三个全局变量

为什么一楼写信号就不行?
回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-12-7 14:01 | 显示全部楼层
资深技术02 发表于 2022-12-7 13:40
什么叫输出全局变量,如果你这个是图表程序运行的那么就用逐k模式就可以了
https://www.weistock.com/bbs/ ...

我都是用后台的,没有图表
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-12-7 14:12 | 显示全部楼层
EXTGBDATASET
这种全局变量本身只会在最新一根k上进行计算,和序列模式说明里if只判断最后一根k的条件一样
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

56

主题

221

帖子

231

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2022-12-9 13:41 | 显示全部楼层
105130 发表于 2022-12-7 13:34
那我又有疑问,为什么输出全局变量的时候,用序列模式就可以?
比如
if c>0 and c=10 and c=20 and c

你的意思是,序列模式,如果用if then begin 的话
仅在最后一根K线上有用,中间的历史K线是无效的?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-12-9 13:43 | 显示全部楼层
是得,看上面给你得链接
里面有说明如图
你用图表策略情况下本身就必须是逐k

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 23:58 , Processed in 0.288696 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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