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均不能正确计算出来。
}
请大神帮忙 看看,是不是存在这个问题,如果是,这个问题要怎么解决呢?
你的代码想表达什么意思?
[此贴子已经被作者于2017/5/16 13:58:51编辑过]
hn:ref(hhv(h,n),n+1);//最近两次金叉的高点
这里两个N所处位置的变量大多数时候是不相同。
应该是 hn:ref(hhv(h,前二死叉周期-n),n+1);才对。
所以必须要计算出前面第二次死叉的位置。
麻烦版主再实盘试试。。。
对不起,看来是我错了。实盘验证的结果是对的。那么,请版主解释一下
hm:ref(hhv(h,m1),m1+1);//最近两次死叉的低点
这个,假如M1为3,把这个代码中的M1替换为数字3,结果又是错误的,为什么?请版主解释一下。
另外,如果求第三次和第四次金叉的高点,要怎么求?
barslast求出的结果是一个变化的值,不能用具体值替换,
如果是第n次金叉请用函数sumbars,用请看函数说明 结合自己图上验证
[此贴子已经被作者于2017/5/16 15:50:12编辑过]
按照版主的代码,计算的值也不总是正确的,版主可以将周期一直向前滑动,就会发现问题。
另外,版主的解释有些差强人意,
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应该没什么关系啊。
求版主举例详解,谢谢!!!
barslast返回的是一个序列值,你直接只用一个定值代替。那么在非定位的点,barslast的值并不是在时3了