以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  这是一个BUG吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=153047)

--  作者:jcyluck
--  发布时间:2017/5/16 13:37:07
--  这是一个BUG吗?
INPUT:(P,10,5,30,2),(M,30,10,100,2);

MA10:=MA(CLOSE,P);
MA30:=MA(CLOSE,M);

JCH:=CROSS(MA10,MA30);
SCH:=CROSS(MA30,MA10);

{第一次金叉位置}
JCH1_P:BARSLAST(JCH)+1,NODRAW;
SCH1_P:BARSLAST(SCH)+1,NODRAW;

{第二次金叉位置}
JCH2_P:REF(BARSLAST
(JCH),JCH1_P)+JCH1_P+1,NODRAW;
SCH2_P:REF(BARSLAST(SCH),SCH1_P)+SCH1_P+1,NODRAW;

{最近二次金叉的高点价格}
JCH1_D:REF(HHV(H,JCH1_P-SCH1_P+5),SCH1_P),NODRAW;
JCH2_D:REF(HHV(H,JCH2_P-SCH2_P+5),SCH2_P),NODRAW;

{最近二次死叉的低点价格}
SCH1_D:LLV(L,SCH1_P+5),NODRAW;
SCDEV2_P:=CONST(SCH2_P-JCH1_P+5),NODRAW;
SCH2_D:REF(LLV(L,SCDEV2_P),JCH1_P),NODRAW;
{
当前如果是死叉情况,JCH1_D,JCH2_D,SCH2_D均不能正确计算出来。
}


请大神帮忙 看看,是不是存在这个问题,如果是,这个问题要怎么解决呢?


--  作者:wenarm
--  发布时间:2017/5/16 13:58:43
--  
你的代码想表达什么意思?
[此贴子已经被作者于2017/5/16 13:58:51编辑过]

--  作者:jcyluck
--  发布时间:2017/5/16 14:12:14
--  
求最近两次金叉的高点和最近两次死叉的低点。


--  作者:pyd
--  发布时间:2017/5/16 14:58:45
--  
ma1:ma(c,10);
ma2:ma(c,20);
jc:cross(ma1,ma2);
sc:cross(ma2,ma1);
n:barslast(jc);
m:barslast(sc);
hn:ref(hhv(h,n),n+1);//最近两次金叉的高点
hm:ref(hhv(h,m),m+1);//最近两次死叉的低点

--  作者:jcyluck
--  发布时间:2017/5/16 15:17:32
--  
谢谢!
但结果明显不对:


hn:ref(hhv(h,n),n+1);//最近两次金叉的高点

这里两个N所处位置的变量大多数时候是不相同。
应该是 hn:ref(hhv(h,前二死叉周期-n),n+1);才对。
所以必须要计算出前面第二次死叉的位置。
麻烦版主再实盘试试。。。

--  作者:jcyluck
--  发布时间:2017/5/16 15:38:29
--  
对不起,看来是我错了。实盘验证的结果是对的。
那么,请版主解释一下

hm:ref(hhv(h,m1),m1+1);//最近两次死叉的低点

这个,假如M1为3,把这个代码中的M1替换为数字3,结果又是错误的,为什么?请版主解释一下。
另外,如果求第三次和第四次金叉的高点,要怎么求?



--  作者:pyd
--  发布时间:2017/5/16 15:49:47
--  

barslast求出的结果是一个变化的值,不能用具体值替换,

如果是第n次金叉请用函数sumbars,用请看函数说明 结合自己图上验证

[此贴子已经被作者于2017/5/16 15:50:12编辑过]

--  作者:jcyluck
--  发布时间:2017/5/16 19:58:34
--  
按照版主的代码,计算的值也不总是正确的,版主可以将周期一直向前滑动,就会发现问题。

另外,版主的解释有些差强人意,
n:barslast(jc); 求出n的值是3,
但在
hn:ref(hhv(h,n),n+1);
中,将n用3来替代:
hn:ref(hhv(h,3),3+1);
计算的结果却是不同的。
hn:ref(hhv(h,3),3+1); 这段代码中,只涉及到ref和hhv这两个函数,与barslast应该没什么关系啊。
求版主举例详解,谢谢!!!


--  作者:wenarm
--  发布时间:2017/5/17 9:17:33
--  

barslast返回的是一个序列值,你直接只用一个定值代替。那么在非定位的点,barslast的值并不是在时3了