以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=184268)

--  作者:妄言
--  发布时间:2021/2/14 19:29:31
--  出现底背离,第三个底背离才开仓怎么表达
我想底背离开仓,但是忽略前面两个,到第三个底背离才开仓怎么表达呢?
--  作者:FexTel
--  发布时间:2021/2/15 13:20:34
--  
公式编写示范请您等待工作人员节后处理,谢谢
--  作者:FexTel
--  发布时间:2021/2/18 9:59:01
--  
VARIABLE:BLCS=0;  //使用全局变量记录背离的次数

// MACD指标

DIFF:EMA(CLOSE,12)-EMA(CLOSE,26); 
DEA:EMA(DIFF,9); 
MACD:=2*(DIFF-DEA),COLORSTICK; 

//上次金叉对应的指标高点与价格高点

N:=BARSLAST(CROSS(DIFF,DEA))+1; 
N1:=BARSLAST(CROSS(DEA,DIFF))+1; 
DIFF1:=REF(REF(DIFF,N-1),1); 
DIFF2:=REF(REF(DIFF,N1-1),1); 
C1:=REF(REF(C,N-1),1); 
C2:=REF(REF(C,N1-1),1); 

//顶底背离的表现

DBL1:DIFF>DIFF1 AND CROSS(DIFF,DEA) AND C<C1;//底背离 
DBL:DIFF<DIFF2 AND  CROSS(DEA,DIFF) AND C>C2;//顶背离 

IF DBL1 THEN BLCS:=BLCS+1;
IF BLCS=3 THEN BEGIN
BUY();
BLCS:=0;
END


--  作者:vakoth
--  发布时间:2021/2/26 17:13:54
--  
请教,N:=BARSLAST(CROSS(DIFF,DEA))+1; 这句的+1是什么原理?


--  作者:FireScript
--  发布时间:2021/2/26 17:28:50
--  
你这里其实不用管的。这里+1去掉也是可以的,只要把后面的N-1改成N 也就一样了。

原本这种处理是为了传递有效参数的做法。比如hhv的第二个参数是另一个函数的返回值,但是这个函数返回值第一个位置是0.这个就会和需求的效果不一致。 hhv在第二个参数是0 时候是全部统计的意思。所以有时候会这样采取+1做法来纠正下。