以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4)
---- [求助]为什么初始化数据异常? (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=159567)
|
-- 作者:lizhi
-- 发布时间:2017/11/15 15:06:32
-- [求助]为什么初始化数据异常?
为什么初始化数据异常?请指导,谢谢!
此主题相关图片如下:tim截图20171115150432.png
RUNMODE:0; //VARIABLE:XG=0,XD=0; XGIF:=REF(H,1)>REF(H,2),NODRAW;//新高条件
XDIF:=REF(L,1)<REF(L,2),NODRAW;//新低条件
IF BARPOS=1 THEN BEGIN XG:=H; XD:=L; END XG:=VALUEWHEN(XGIF,REF(H,1)),COLORGREEN; XD:=VALUEWHEN(XDIF,REF(L,1)),COLORRED; SH:XG; SL:XD;
|
-- 作者:FireScript
-- 发布时间:2017/11/15 15:34:38
--
XG:=VALUEWHEN(XGIF,REF(H,1)),COLORGREEN; XD:=VALUEWHEN(XDIF,REF(L,1)),COLORRED;
这段调整下位置,调整到
IF BARPOS=1 THEN BEGIN XG:=H; XD:=L; END
前面。
VALUEWHEN有一个取得前一个值的作用,问题是出在这里的。
[此贴子已经被作者于2017/11/15 15:37:28编辑过]
|
-- 作者:lizhi
-- 发布时间:2017/11/15 18:51:33
--
如上2楼那样修改代码后,数据还异常如下图,该怎么办?
此主题相关图片如下:1.png
|
-- 作者:FireScript
-- 发布时间:2017/11/16 8:49:40
--
以下是引用lizhi在2017/11/15 18:51:33的发言:
如上2楼那样修改代码后,数据还异常如下图,该怎么办?
此主题相关图片如下:1.png
具体是那个变量值,你觉得是有问题的呢。红绿线对应的值吗?但是看图的话,你标记的位置,值都是有的么。
|
-- 作者:lizhi
-- 发布时间:2017/11/16 10:03:20
--
XGIF:=REF(H,1)>REF(H,2),NODRAW;//新高条件
XDIF:=REF(L,1)<REF(L,2),NODRAW;//新低条件
因为比较的REF(H,1)和REF(H,2),在调整代码顺序之后,第一根K(barpos=1的地方)的显示值对了,但第二根K(barpos=2的地方)的输出显示值明显的大于或者小于第一根K(barpos=1的地方)、第二根K(barpos=2的地方)这两者中的极值!
也就是说:除了第一根K(barpos=1的地方)——从这里开始,在XGIF、XDIF条件首次符合之前——到这里结束,在开始与结束之间的输出的显示数据都不对——输出显示值大于或者小于输出显示位置之前的最高值或最小值。
|
-- 作者:FireScript
-- 发布时间:2017/11/16 10:32:29
--
你这段描述没太明白。第一个K是满足条件的。后面的K的XG的返回值在满足XGIF条件之前(我们先说XGIF,不管XDIF条件),返回值应该都是一个值,也就是第一个K的H值。 这是valuewhen函数的特征。
*我这边注意到一点,你在图上看到的第一个K未必是指标使用的第一个K(bars=1),虽然你在图表上看到是第一个但是真实的数据位置未必是那样。你把barpos的值也输出下。
[此贴子已经被作者于2017/11/16 10:40:39编辑过]
|
-- 作者:lizhi
-- 发布时间:2017/11/16 12:55:41
--
老师看图,还是第二根K线上的值输出的不对!??????我想让XGIF条件首次成立之前的所有的K线处的输出值都是第一根K线的最高值。
此主题相关图片如下:333.jpg
|
-- 作者:wenarm
-- 发布时间:2017/11/16 13:12:06
--
你第一根取得值,是因为去到了最新位置上xgif=1时的结果。
类似形成了一个环状结构。
|
-- 作者:FireScript
-- 发布时间:2017/11/16 13:28:29
--
基于8楼提到的那个问题:
建议不使用valuewhen函数了,可按照以下方式尝试下。
VARIABLE:XG=0; XGIF:REF(H,1)>REF(H,2),NODRAW;//新高条件 temp:=REF(H,1); if XGIF then XG:=temp; IF BARPOS=1 THEN BEGIN XG:=H; END K线位置:BARPOS;
SH:XG;
|