金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3282|回复: 14

数据引用问题

[复制链接]

51

主题

164

帖子

164

积分

等级: 免费版

注册:
2023-1-15
曾用名:
发表于 2023-12-7 14:59 | 显示全部楼层 |阅读模式
DL:=if(D=21,0.5,if(D=22,1,0));//初始值
D1:=if(D=21,if(ref(DL,dc)<0,0.5,ref(DL,dc)-0.5),0.5);
D2:=if(D=22,if(ref(DL,dc)<0,-1,ref(DL,dc)-1),1);
DL:=if(D=21,D1,if(D=22,D2,0));//最终值
变量D1、D2:在计算时,ref(DL,dc)中引用的DL是第一次出现时的初始值,实际想引用的是最后一次DL出现的最终值,如何解决?


回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-12-7 15:02 | 显示全部楼层
用BARSLAST 获取最近一次条件满足的位置,然后ref获取值。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

51

主题

164

帖子

164

积分

等级: 免费版

注册:
2023-1-15
曾用名:
 楼主| 发表于 2023-12-7 15:11 | 显示全部楼层
ref(DL,dc)中的dc就是BARSLAST函数获取的DL在上一次条件成立时的位置。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-12-7 15:12 | 显示全部楼层
ref的用法是没问题的。如果你获取到的最开始的值,说明问题不是出在ref的用法上,而是你这个变量值计算本身可能有其他问题。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

51

主题

164

帖子

164

积分

等级: 免费版

注册:
2023-1-15
曾用名:
 楼主| 发表于 2023-12-7 15:24 | 显示全部楼层
代码全在这里了,问题出在哪,请帮忙具体分析一下,谢谢!
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-12-7 15:31 | 显示全部楼层
本帖最后由 技术009 于 2023-12-7 15:32 编辑

你这个代码贴出来没法子复现你说的现象。即无法看出来逻辑,也无法编译。
我建议你直接 把ref(DL,dc)的值输出出来。定义为一个变量来观察它的值来定位问题。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

51

主题

164

帖子

164

积分

等级: 免费版

注册:
2023-1-15
曾用名:
 楼主| 发表于 2023-12-7 16:43 | 显示全部楼层
DL:=if(open=close,0,if(open>close,1,-1));//初始值
D1:=if(open=close,if(ref(DL,1)<0,0.5,ref(DL,1)-0.5),0.5);
D2:=if(open>close,if(ref(DL,1)<0,-1,ref(DL,1)-1),1);
DL:=if(open=close,D1,if(open>close,D2,0));//最终值
当前K线,D1中出现的ref(DL,1)是DL的初始值的前一个,而不是DL最终值的前一个。D1中我想引用的ref(DL,1)是DL的最终值的前一个,怎样实现?

补充内容 (2023-12-7 16:44):
DL是不是需要设置成全局变量?

补充内容 (2023-12-7 16:45):
DL是不是需要设置成全局变量?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-12-7 16:48 | 显示全部楼层
本帖最后由 技术009 于 2023-12-7 16:53 编辑


可以使用全局变量,这种情况下 就不需要ref,全局变量默认在二次赋值之前 就是最近一次的值。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

51

主题

164

帖子

164

积分

等级: 免费版

注册:
2023-1-15
曾用名:
 楼主| 发表于 2023-12-7 17:00 | 显示全部楼层
DL:=if(open>close,1,0);//初始值
D1:=if(open>close,ref(DL,1)+1,0);
DL:=if(open>close,D1,0);//最终值

HH1:D1,COLORred;


补充内容 (2023-12-7 17:03):
可能是我没表达清楚,我想要一个累加的计算,但结果却不是。

本帖子中包含更多资源

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

x
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-12-7 17:03 | 显示全部楼层
你这里:


DL:=if(open>close,1,0);//初始值

这个在每个K上都会重新算的呀。再用ref获取结果得话是获取上一个K上对应的DL值,如果只是当前的DL值,直接用DL就行了。  普通变量有效范围是单根K以内,不跨K的。


ref 不是获取上一个值的函数,它是获取上一个K位置上某个变量的值。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 04:19 , Processed in 0.136216 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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