以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]ref 与 hhv  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=8913)

--  作者:zzzlondon
--  发布时间:2011/11/11 10:25:17
--  [求助]ref 与 hhv

用论坛上标准的求前一天的最高最低的代码,发现运行出来不对(CU1201,显示前一天最高为57990,实际应为55980)

代码如下

N:=BARSLAST(DATE>REF(DATE,1));
NN:=ref(N,N+1)+1;
highy:=ref(hhv(h,NN),N+1);
lowy:=ref(llv(l,NN),N+1);

//调试

if time=90100 then begin
 aa:=0;
end
aa:=ref(N,1);
bb:=hhv(h,NN);
cc:=ref(hhv(h,NN),N+1);
dd:=ref(hhv(h,NN),1);
ee:=hhv(ref(h,1),NN);

 

调试结果如下图

图片点击可在新窗口打开查看

 

发现ref(hhv(h,NN),1) 和 hhv(ref(h,1),NN) 结果是不一样的,求帮助


--  作者:jinzhe
--  发布时间:2011/11/11 10:30:23
--  

n:=barslast(date<>ref(date,1));

predayhigh:valuewhen(date<>ref(date,1),ref(hhv(h,n+1),1));昨高
predaylow:valuewhen(date<>ref(date,1),ref(llv(l,n+1),1));昨低
predayclose:valuewhen(date<>ref(date,1),ref(c,1));昨收

[此贴子已经被作者于2011-11-11 10:54:24编辑过]

--  作者:zzzlondon
--  发布时间:2011/11/11 10:37:01
--  
以下是引用jinzhe在2011-11-11 10:30:23的发言:
predayhigh:valuewhen(date<>ref(date,1),ref(hhv(h,n+1),1));昨高
predaylow:valuewhen(date<>ref(date,1),ref(llv(l,n+1),1));昨低
predayclose:valuewhen(date<>ref(date,1),ref(c,1));昨收

我用的是金字塔置顶的写法

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332

问题19

 

我不知道你的写法对不对,但是至少没有解决我的写法哪里错了的问题,以及ref与hhv交换后数值为何不同的问题


--  作者:jinzhe
--  发布时间:2011/11/11 11:23:25
--  

NN代表一天的k线数,比如1分钟1天就是270根

ref(hhv(h,NN),n+1)代表n+1个周期前(也就是当日第一根k线)的270周期(一天)内最高价。

hhv(ref(h,1),NN)代表上一周期的270周期内最高价

dd:=ref(hhv(h,NN),1);只会在当日第一根k线上和昨天最高价相等,其余k线不等


--  作者:zzzlondon
--  发布时间:2011/11/11 13:16:44
--  
以下是引用jinzhe在2011-11-11 11:23:25的发言:

NN代表一天的k线数,比如1分钟1天就是270根

ref(hhv(h,NN),n+1)代表n+1个周期前(也就是当日第一根k线)的270周期(一天)内最高价。

hhv(ref(h,1),NN)代表上一周期的270周期内最高价

dd:=ref(hhv(h,NN),1);只会在当日第一根k线上和昨天最高价相等,其余k线不等

事实上截图的地方就是第一根K线,if time=90100 之后断点的

发现hhv(ref(h,1),NN) 和 hhv(ref(h,N+1),NN)数值不等,why

图片点击可在新窗口打开查看

[此贴子已经被作者于2011-11-11 13:32:03编辑过]

--  作者:jinzhe
--  发布时间:2011/11/11 16:05:06
--  

我再研究研究。

[此贴子已经被作者于2011-11-11 16:11:05编辑过]

--  作者:阿火
--  发布时间:2011/11/12 9:47:55
--  

不同位置的NN不一样造成的呗.要一样,数据要一样,NN也要一样。你调试比较这2个数值就行了

 

另外:昨日高点的写法何必那么复杂,如此即可:

NN:=BARSLAST(DATE>REF(DATE,1))+1;
highy:=ref(hhv(h,NN),NN);
lowy :=ref(LLv(l,NN),NN);

[此贴子已经被作者于2011-11-12 9:48:21编辑过]

--  作者:zzzlondon
--  发布时间:2011/11/12 10:21:55
--  
以下是引用leevolvo在2011-11-12 9:47:55的发言:

不同位置的NN不一样造成的呗.要一样,数据要一样,NN也要一样。你调试比较这2个数值就行了

 

调试在同一个bar上的

我把问题化简一下好了:

N:BARSLAST(DATE>REF(DATE,1));

dd:hhv(ref(h,N+1),2);
ee:hhv(ref(h,1),2);

 

当时间是当天第一个K线,即90100时,N应该=0,dd和ee应该相等,但实际不相等,如图

图片点击可在新窗口打开查看

 


--  作者:zzzlondon
--  发布时间:2011/11/17 14:15:21
--  

能解决吗?