金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4848|回复: 11

输出差别很大,从逻辑看是一样的

[复制链接]

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
发表于 2022-5-27 16:25 | 显示全部楼层 |阅读模式
我的变量ZQ_HOLD的数值取决HOLD_P连续6个相等,
而HOLD_P有两次变化的机会, OP_O[BARPOS-1]=1的时候赋值一次,然后不变,一直到 EX_O=1后归0
我用下面公式1,ZQ_HOLD:=EVERY(HOLD_P= HOLD_P【BARPOS-1],5);,发现ZQ_HOLD永远是0;
我改用公式2,因为OP_O等于1发生后,只要连续5K都是0,EVERY(OP_O=0,5,和公式逻辑是一回事
但明显公式1输出不正常,ZQ_HOLD永远是0;公式2和逻辑同,第5天等于1
公式1:

IF BARPOS=1 THEN HOLD_P:=0;
ZQ_HOLD:=EVERY(HOLD_P= HOLD_P【BARPOS-1],5);


......
IF EX_O=1 THEN
BEGIN

HOLD_P:=0;
END

.....
IF OP_O[BARPOS-1]=1 THEN HOLD_P:=OPEN;




回复

使用道具 举报

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
 楼主| 发表于 2022-5-27 16:26 | 显示全部楼层
公式2:
IF BARPOS=1 THEN OP_O:=0;
ZQ_HOLD:=EVERY(OP_O=0,N3);
......
IF EX_O=1 THEN
BEGIN

HOLD_P:=0;
END

.....
IF OP_O[BARPOS-1]=1 THEN HOLD_P:=OPEN;


回复

使用道具 举报

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
 楼主| 发表于 2022-5-27 16:32 | 显示全部楼层
我怀疑是我数组的理解发生错误
按照公式2 op_o这个变量,每根K线都复了职
公式1hold_p这个变量,由于if条件的限制,有时候会跳过去没有执行赋值。那么不像我假设的“没有执行赋值的周期里就把barpos-1的值用于赋值给当前周期”
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-5-27 16:33 | 显示全部楼层
给出能运行且复现 现象的2段代码。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
 楼主| 发表于 2022-5-27 16:38 | 显示全部楼层
公式1

RUNMODE:0;//结果不同
INPUT:P(26);
INPUT:S(12)
INPUT:M(9);
INPUT:N3(10);
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
jyfx:if(DIFF>0,1,-1);
GBFX:=jyfx<>jyfx[BARPOS-1];

GBFX:=jyfx<>jyfx[BARPOS-1];
IF BARPOS=1 THEN HOLD_P:=0;
ZQ_HOLD:=EVERY(HOLD_P= HOLD_P,5);


EX_O:=IF(HOLD_P>0 AND (GBFX[BARPOS-1]=1 OR ZQ_HOLD=1),1,0);

IF EX_O=1 THEN
BEGIN
HOLD_P:=0;
END



OP_O:=GBFX;
IF OP_O[BARPOS-1]=1 THEN HOLD_P:=OPEN;
回复

使用道具 举报

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
 楼主| 发表于 2022-5-27 16:42 | 显示全部楼层
公式2因为内容相同太多,发不上来;
只有2行不同
去掉这两行
IF BARPOS=1 THEN HOLD_P:=0;
ZQ_HOLD:=EVERY(HOLD_P= HOLD_P,5);
用两行替代
IF BARPOS=1 THEN OP_O:=0;
ZQ_HOLD:=EVERY(OP_O=0,N3);

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-5-30 08:35 | 显示全部楼层
ZQ_HOLD:=EVERY(HOLD_P= HOLD_P,5);

这种写法,肯定不对的。恒满足。相同位置的变量,自己肯定等于自己。

ZQ_HOLD2:=EVERY(OP_O=0,5);
这种写法的意义完全不一样。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
 楼主| 发表于 2022-5-30 09:23 | 显示全部楼层
技术009 发表于 2022-5-30 08:35
ZQ_HOLD:=EVERY(HOLD_P= HOLD_P,5);

这种写法,肯定不对的。恒满足。相同位置的变量,自己肯定等于自己 ...

这条语句我做过尝试。
EVERY(HOLD_P= HOLD_P,【barpose-1],5);
结果也一样,
但我增加了一句。
HOLD_P:=HOLD_P[BARPOS-1];
同时改成EVERY(HOLD_P【barpose-1]= HOLD_P,【barpose-2],5);
这个结果似乎可正常。
我怀疑序列变量在有的周期没有赋值的情况,every这种函数会乱。
顺便说下,我发现由于if条件不符合没执行赋值,我把HOLD_P输出,他并不等于(HOLD_P【barpose-1],而是0
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-5-30 09:27 | 显示全部楼层
HOLD_P【barpose-1]= HOLD_P 这又是另一个意思,上一个K和当前K值相等的意思。

你这写的三种,完全是三种意思,只是特定情况下结果可能会相同。。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

41

主题

111

帖子

111

积分

等级: 免费版

注册:
2021-8-12
曾用名:
 楼主| 发表于 2022-5-30 10:06 | 显示全部楼层
技术009 发表于 2022-5-30 09:27
HOLD_P【barpose-1]= HOLD_P 这又是另一个意思,上一个K和当前K值相等的意思。

你这写的三种,完全是三 ...

先确认HOLD_p这个序列。
由于有的周期没有赋值,在调用every函数前,我把HOLD_p,HOLD_p[barpos-1]...输出。
//HP0:HOLD_P[BARPOS];
//HP1:HOLD_P[BARPOS-1];
//HP2:HOLD_P[BARPOS-2];

发现是0而不是HOLD_P[BARPOS-1]的值。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-29 05:29 , Processed in 0.182571 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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