以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]请教如何在日K线上计算N个季度内的HHV?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=3125)

--  作者:jtp
--  发布时间:2010/10/6 15:22:30
--  [求助]程序自动止损后怎么会重复开仓呢

如题。

例如:假设K线定位在2010-9-3的日K线上,如何计算2010-4-1日到2010-9-3日的周期数?从而求出这期间的HHV等。

[此贴子已经被作者于2010-10-6 15:31:16编辑过]

--  作者:admin
--  发布时间:2010/10/6 16:34:47
--  
没有表达清楚,K线定位在2010-9-3的日K线上,这个是什么意思?十字光标?
--  作者:jtp
--  发布时间:2010/10/6 22:11:12
--  
是的,就是打开日K线图,当十字光标移动到2010-9-3时,希望在副图中显示2010-4-1日到2010-9-3日的日线周期数。
--  作者:wattwei
--  发布时间:2010/10/6 22:20:50
--  
 金字塔不支持sysparam(1),这个函数可以取到光标所在位置
--  作者:jtp
--  发布时间:2010/10/6 23:11:23
--  
可以通过RET(H,N)取得多少天之前(不是多少个周期之前)的价格,但我是想取得从某天起到当天这段时间内的HHV(H,N),虽然知道两个日期但无法知道这两个日期之间的周期数,即无法确定N值,所以无法取得HHV值。
--  作者:wattwei
--  发布时间:2010/10/6 23:28:29
--  
nn:=barslast(DATE<1100401);
hh:ref(h,nn);
ll:ref(l,nn);

其中nn表示20100401到今天的K线数。1100401这个值如何确定可查DATE的帮助文档

--  作者:jtp
--  发布时间:2010/10/6 23:43:59
--  

ayear:= year;
amonth:=intpart((month-1)/3)  * 3 + 1;

 

{计算本季度的 HIGH,LOW}
JDDATE:=ayear * 10000 + amonth * 100 + 01 - 19000000; //取得当前日K线所在季度的第一日,比如光标定位到2010-9-3时,JDDATE表示2010-7-1。
BARCOUNT:=barslast(date=JDDATE);//当光标移动到2010-7-1,date=JDDATE,BARCOUNT开始计数。
JDHIGH:=HHV(HIGH,BARCOUNT);
JDLOW:=LLV(LOW,BARCOUNT);

 

{计算5个季度内的低值}
JDDATE5:=IF(AMONTH=1,JDDATE - 20000 -300 +1200, JDDATE - 10000 -300);//取得当前日K线前5个季度的第一日,比如光标定位到2010-9-3时,JDDATE表示2009-4-1。
bar5count:=barslast(date=JDDATE5);//当光标移动到2009-4-1,JDDATE5又表示2008-1-1了,date<>JDDATE5bar5count无法开始计数。

LLV:=LLV(LOW,bar5count);

 

-------------------------------------

蓝色部分没有问题,红色部分永远也不能满足date=JDDATE5这个表达式,因为JDDATE5随着date变化的。

[此贴子已经被作者于2010-10-6 23:52:35编辑过]

--  作者:jtp
--  发布时间:2010/10/7 0:13:26
--  
以下是引用wattwei在2010-10-6 23:28:29的发言:
nn:=barslast(DATE<1100401);
hh:ref(h,nn);
ll:ref(l,nn);

其中nn表示20100401到今天的K线数。1100401这个值如何确定可查DATE的帮助文档

谢谢版主!

为什么通过计算得到的1100401,将其存入变量JDDATE,再调用barslast(DATE<JDDATE)就无法得到结果?如下:

 

ayear:= year;
amonth:=intpart((month-1)/3)  * 3 + 1;

 

{计算本季度的 HIGH,LOW}
JDDATE:=ayear * 10000 + amonth * 100 + 01 - 19000000; //取得当前日K线所在季度的第一日,比如光标定位到2010-9-3时,JDDATE表示2010-7-1。
BARCOUNT:barslast(date<JDDATE);

[此贴子已经被作者于2010-10-7 0:14:25编辑过]

--  作者:wattwei
--  发布时间:2010/10/7 8:52:52
--  
 用楼上的方法,date不可能比JDDATE小,最多是季度初的那一天相等
--  作者:wattwei
--  发布时间:2010/10/7 8:56:32
--  
接8楼,判断季度初,这样试试,barslast(ref(JDDATE,1)<>JDDATE)