金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4623|回复: 9

后台序列运行公式输出错误

[复制链接]

171

主题

475

帖子

485

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
发表于 2022-8-18 11:46 | 显示全部楼层 |阅读模式
如下公式:后台程序化,3秒K线,走完K线模式,序列模式。
GLOBALVARIABLE:DP1:=0,DP1点位:=10000;
IF TODAYBAR=1 THEN
BEGIN
        DP1:=1
        DP1点位:=10000
JD:=LLV(L,TODAYBAR);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
IF 不高开 AND 弱 and CURRENTTIME>093100 and DP1=0 THEN DP1:=1;
IF REF(DP1,1)=0 AND DP1=1 AND c-jd<0.06*昨收 THEN DP1点位:=jd;
DP1J:count(c<DP1点位,15)=15;
当“不高开”与“弱”刚同时满足时,DP1点位应该是JD就是当天的最低值了,当时的C是大于JD的,这时候本来DP1J应该输出0,实际还是输出的1.
上面的公式只是把GLOBALVARIABLE改为VARIABLE,CURRENTTIME改为TIME,在图表逐笔运行DP1J输出就是0;
请问上面后台序列公式的错误输出原因是什么?应该怎么修改?

回复

使用道具 举报

171

主题

475

帖子

485

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2022-8-18 12:54 | 显示全部楼层
完整的是这样的,上楼少了END,实际公式是有的
GLOBALVARIABLE:DP1:=0,DP1点位:=10000;
IF TODAYBAR=1 THEN
BEGIN
        DP1:=1;
        DP1点位:=10000;
        END
JD:=LLV(L,TODAYBAR);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
SUMA:=SUM(AMOUNT,TODAYBAR);
SUMV:=SUM(VOL,TODAYBAR);
JJ:=SUMA/SUMV/100;
弱:=COUNT(C<JJ-0.01,55)=55;
今开:=CALLSTOCK(STKLABEL,VTOPEN,6,0);
不高开:今开<昨收*1.02;
IF 不高开 AND 弱 and CURRENTTIME>093100 and DP1=0 THEN DP1:=1;
IF REF(DP1,1)=0 AND DP1=1 AND c-jd<0.06*昨收 THEN DP1点位:=jd;
DP1J:count(c<DP1点位,15)=15;
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2022-8-18 13:13 | 显示全部楼层
序列模式是不刷历史的,下面这段话只有你开盘前就启动时候他会满足todaybar=1这个条件,如果现在运行时不会触发这个条件的
逐k模式,则是每一根k都会刷历史,你现在启动他依然回执行到todaybar=1这个条件

GLOBALVARIABLE:DP1:=0,DP1点位:=10000;
IF TODAYBAR=1 THEN
BEGIN
        DP1:=1
        DP1点位:=10000
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

171

主题

475

帖子

485

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2022-8-18 14:16 | 显示全部楼层
我是开盘就启动的;同时如果不是开盘启动GLOBALVARIABLE:DP1:=0,DP1点位:=10000;这一段也是会执行DP1:=0,DP1点位:=10000;问题是在这里:
IF REF(DP1,1)=0 AND DP1=1 AND c-jd<0.06*昨收 THEN DP1点位:=jd;
DP1J:count(c<DP1点位,15)=15;
后面这条的C与DP1点位的比较,最新应该是DP1点位已经是JD(今天的最低值),不应该再输出1.是不是序列模式没按着顺序执行公式的代码?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-18 14:50 | 显示全部楼层
你意思是根据输出结果 这一句可能没执行到赋值的位置是吧 “IF REF(DP1,1)=0 AND DP1=1 AND c-jd<0.06*昨收 THEN DP1点位:=jd;”
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-18 14:55 | 显示全部楼层
本帖最后由 技术009 于 2022-8-18 14:59 编辑

因为  GLOBALVARIABLE 不迭代。  你这里有一句REF(DP1,1)  实际上没啥用,DP1 实际上始终是最新值。也就是ref获取的结果也还是1.

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

使用道具 举报

171

主题

475

帖子

485

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2022-8-18 15:25 | 显示全部楼层
明白了,我怎么样才能在后台序列模式中实现,在DP1从0到1这根K线上,让DP1点位取值为JD?是不是只能用VARIABLE做一个逐笔K线运行的公式,再在序列模式后台公式中调用过来?有其他简单方法吗?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-18 15:39 | 显示全部楼层
我尝试用一个普通变量在接受下这个全局变量,然后再尝试ref 这个普通变量。能不能奏效我得明天盘中试试 。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-18 15:57 | 显示全部楼层
或者 你这样,DP1 你用time来标记它。


GLOBALVARIABLE:DP1:=0,DP1点位:=10000;
IF TODAYBAR=1 THEN
BEGIN
        DP1:=time;
        DP1点位:=10000;
        END

IF 不高开 AND 弱 and CURRENTTIME>093100 and DP1=0 THEN DP1:=time;
IF REF(time,1)<DP1 AND c-jd<0.06*昨收 THEN DP1点位:=jd;


这样应该也可以。 DP1点位 被赋值之后。REF(time,1)  DP1 至多是等于关系。后续不会再触发对 DP1点位的赋值操作了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

171

主题

475

帖子

485

积分

Rank: 2

等级: 标准版

注册:
2021-5-31
曾用名:
 楼主| 发表于 2022-8-18 17:19 | 显示全部楼层
收到,谢谢!


GLOBALVARIABLE:DP1:=0,DP1点位:=10000;
IF TODAYBAR=1 THEN
BEGIN
        DP1:=time;(请问这里是不是应该:=0?)
        DP1点位:=10000;
        END

IF 不高开 AND 弱 and CURRENTTIME>093100 and DP1=0 THEN DP1:=time;
IF REF(time,1)<DP1 AND c-jd<0.06*昨收 THEN DP1点位:=jd;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-7 06:28 , Processed in 0.111180 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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