以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 请教老师 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=169025) |
-- 作者:c100011757 -- 发布时间:2019/3/27 16:38:53 -- 请教老师 VARIABLE:HH:=0;LL:=0; IF NOT(H<=HH&&L>=LL) THEN BEGIN HH:=H; LL:=L; END SL:=IF(H<=HV(H,0)&&L>=LV(L,0),MIN(NEWHBARS(H,1),NEWLBARS(L,1)),IF(H>HV(H,0)&&L>=LV(L,0),NEWLBARS(L,1),IF(H<=HV(H,0)&&L<LV(L,0),NEWHBARS(H,1),NULL))); A:=HH<>REF(HH,1)||LL<>REF(LL,1); P:=BACKSET(REFX(SL,1)>1,REFX(SL,1)-1); H1:=IF(A,HH,NULL); L1:=IF(A,LL,NULL); H2:=IF(P,NULL,H1); L2:=IF(P,NULL,L1); G1:=ISNULL(H2)=0&&H<REF(H,SUMBARS(ISNULL(H2)=0,2)-1)&&REF(H,SUMBARS(ISNULL(H2)=0,2)-1)>REF(H,SUMBARS(ISNULL(H2)=0,3)-1); 其中HV和ISNULL,在系统函数中如何表达呢?
|
-- 作者:FireScript -- 发布时间:2019/3/27 16:43:23 -- hv和hhv等效。 isnull你这里直接用not替换下也能达到相同的效果。
|
-- 作者:c100011757 -- 发布时间:2019/3/27 21:47:58 -- 试过,没用 |
-- 作者:FireScript -- 发布时间:2019/3/28 9:02:42 -- VARIABLE:HH:=0;LL:=0; IF NOT(H<=HH&&L>=LL) THEN BEGIN HH:=H; LL:=L; END SL:=IF(H<=HHV(H,0)&&L>=LlV(L,0),MIN(NEWHBARS(H,1),NEWLBARS(L,1)),IF(H>HHV(H,0)&&L>=LLV(L,0),NEWLBARS(L,1),IF(H<=HHV(H,0)&&L<LLV(L,0),NEWHBARS(H,1),DRAWNULL))); A:=HH<>REF(HH,1) or LL<>REF(LL,1); P:=BACKSET(REFX(SL,1)>1,REFX(SL,1)-1); H1:=IF(A,HH,DRAWNULL); L1:=IF(A,LL,DRAWNULL); H2:=IF(P,DRAWNULL,H1); L2:=IF(P,DRAWNULL,L1); G1:=not(H2)=1&&H<REF(H,SUMBARS(not(H2)=1,2)-1)&&REF(H,SUMBARS(not(H2)=1,2)-1)>REF(H,SUMBARS(not(H2)=1,3)-1); 只能将其中部分函数和表达近似的转换下,但是总体这段代码在金字塔上使用还是有冲突的地方的。比如里面的未来函数只能在序列下稳定使用,但是序列下if语句的判断又和逐K不一样。另外null在金字塔有其他特殊含义,一般用DRAWNULL替换,但是这个函数也很少用。
|
-- 作者:c100011757 -- 发布时间:2019/3/28 9:07:29 -- HV是不包括当前K线的,HHV则不是 |
-- 作者:FireScript -- 发布时间:2019/3/28 9:13:32 -- 是的,金字塔的HHV是包括当前K的。如果你要不包括当前K可以这样做: ref(hhv(h,0),1) 另外我不知道你这里的参数0代表的含义和金字塔是否一致。金字塔这里hhv,llv第二个参数如果是0 则表示从图表上第一个K开始统计。
|
-- 作者:c100011757 -- 发布时间:2019/3/28 10:23:41 -- 好的,谢谢老师,下一个是 ISNULL 判断空值 用法:ISNULL(N);如果N为空值,函数返回1;如果N为非空值,函数返回0。 例:MA5:IFELSE(ISNULL(MA(C,5))=1,C,MA(C,5));//定义五周期均线,K线数量不足五根时,返回当根K线的收盘价
|
-- 作者:FireScript -- 发布时间:2019/3/28 10:38:45 -- 没有判断空值的函数。 但是可以用not ,假设N是空值的话.完整的处理方式是下面这样的: not(N+0=N) 就相当于ISNULL(N)=1 要给变量赋null值的话,前面回复里面说过用DRAWNULL代替下。
|
-- 作者:c100011757 -- 发布时间:2019/3/28 10:57:03 -- G1:=ISNULL(H2)=0&&H<REF(H,SUMBARS(ISNULL(H2)=0,2)-1)&&REF(H,SUMBARS(ISNULL(H2)=0,2)-1)>REF(H,SUMBARS(ISNULL(H2)=0,3)-1); 这句给修改一下老师 |
-- 作者:FireScript -- 发布时间:2019/3/28 11:06:36 -- ISNULL:not(H2+0=H2); G1:=(ISNULL=0)&&H<REF(H,SUMBARS(ISNULL=0,2)-1)&&REF(H,SUMBARS(ISNULL=0,2)-1)>REF(H,SUMBARS(ISNULL=0,3)-1); |