金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4667|回复: 7

X 会采用哪个值?

[复制链接]

79

主题

190

帖子

200

积分

Rank: 2

等级: 标准版

注册:
2022-1-10
曾用名:
发表于 2022-11-25 17:18 | 显示全部楼层 |阅读模式
LAST1:=INTPART(NUMPROFIT(1));
LAST2:=INTPART(NUMPROFIT(2));
LAST3:=INTPART(NUMPROFIT(3));
X:=IF(LAST1<0,1,1.03);//
X:=IF(LAST1<0 AND LAST2<0,1,1.05);//
X:=IF(LAST1<0 AND LAST2<0 AND LAST3<0,1,1.07);


请问如果这么写,最终X 是 会取哪个值?
思路: X 在不同 条件下,取不同的值。
如果改的话,请问如何改?

回复

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-11-25 17:31 | 显示全部楼层
本帖最后由 技术006 于 2022-11-25 17:32 编辑

最终x就是最后那一句。你这种方式等同于是无论if条件是否成立都会有一个返回值给x。就像函数一样。
如果想形成逻辑关联,应该是采用下面的形式。并且你各个条件之间不要有交集,否者以最后一个为赋值结果。就像你三个x的条件,前者都是包含后者的(存在交集)。类似于我们要分段处理问题一样。

if  条件  then begin

end
else if  条件 then  beign

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

使用道具 举报

79

主题

190

帖子

200

积分

Rank: 2

等级: 标准版

注册:
2022-1-10
曾用名:
 楼主| 发表于 2022-11-27 16:34 | 显示全部楼层
//交易条件
LAST1:=INTPART(NUMPROFIT(1)); // 上次交易盈亏统计
LAST2:=INTPART(NUMPROFIT(2));
LAST3:=INTPART(NUMPROFIT(3));

XCOND1:LAST1<0;
XCOND2:LAST1<0 AND LAST2<0;
XCOND3:LAST1<0 AND LAST2<0 AND LAST3<0;

VARIABLE:X:=0;

IF XCOND1 THEN BEGIN
        X=1.2;
END
IF XCOND2 THEN BEGIN
        X=1.5;
END
IF XCOND3 THEN BEGIN
        X=2;
END

我这种写法,最终X 的取值是0, 请问问题出在哪里?
回复

使用道具 举报

79

主题

190

帖子

200

积分

Rank: 2

等级: 标准版

注册:
2022-1-10
曾用名:
 楼主| 发表于 2022-11-27 18:31 | 显示全部楼层
//交易条件
LAST1:=INTPART(NUMPROFIT(1)); // 上次交易盈亏统计
LAST2:=INTPART(NUMPROFIT(2)); // 上上次交易盈亏统计
LAST3:=INTPART(NUMPROFIT(3)); // 上上上次交易盈亏统计

XCOND1:LAST1<0 AND LAST2>0 AND LAST3>0; // 前三次 只有最近1次亏损
XCOND2:LAST1<0 AND LAST2<0 AND LAST3>0; // 前三次 最近1 2 次亏损
XCOND3:LAST1<0 AND LAST2<0 AND LAST3<0; // 前三次 全部 次亏损

VARIABLE:X:=1; // X 初始取值为 1

IF XCOND1 THEN BEGIN
         X:=1.1; ELSE X:=1; // X 取值为 1,1 否则取值为 初始值
END
IF XCOND2 THEN BEGIN
         X=1.5; ELSE X:=1// X 取值为 1,1 否则取值为 初始值
END
IF XCOND3 THEN BEGIN
         X=2; ELSE X:=1// X 取值为 1,1 否则取值为 初始值
END

能否帮我改的合乎规范?
回复

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-11-28 08:08 | 显示全部楼层
这是因为你条件因子不成立。如果上述代码如果是完整的代码。那么应该是NUMPROFIT返回值横为0造成的。
这个函数是图表交易函数之一,只有出现平仓信号它才会有非0的结果。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

79

主题

190

帖子

200

积分

Rank: 2

等级: 标准版

注册:
2022-1-10
曾用名:
 楼主| 发表于 2022-11-28 09:03 | 显示全部楼层
能否帮我改成完整代码, 我很久没写代码了,手生,思维不清晰。

回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-11-28 09:16 | 显示全部楼层
不需要用else,直接这样就可以。
LAST1:=INTPART(NUMPROFIT(1)); // 上次交易盈亏统计
LAST2:=INTPART(NUMPROFIT(2)); // 上上次交易盈亏统计
LAST3:=INTPART(NUMPROFIT(3)); // 上上上次交易盈亏统计

XCOND1:LAST1<0 AND LAST2>0 AND LAST3>0; // 前三次 只有最近1次亏损
XCOND2:LAST1<0 AND LAST2<0 AND LAST3>0; // 前三次 最近1 2 次亏损
XCOND3:LAST1<0 AND LAST2<0 AND LAST3<0; // 前三次 全部 次亏损

VARIABLE:X:=1; // X 初始取值为 1

IF XCOND1 THEN BEGIN
         X:=1.1;  // X 取值为 1,1 否则取值为 初始值
END
IF XCOND2 THEN BEGIN
         X:=1.5; // X 取值为 1,否则取值为 初始值
END
IF XCOND3 THEN BEGIN
         X:=2; // X 取值为 1.5,否则取值为 初始值
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

79

主题

190

帖子

200

积分

Rank: 2

等级: 标准版

注册:
2022-1-10
曾用名:
 楼主| 发表于 2022-11-28 09:35 | 显示全部楼层
感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-2 12:47 , Processed in 0.089457 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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