金字塔公式 金字塔模型策略源码:
HNL:=IF(HIGH>REF(HHV(HIGH,3),1),LOW,0);
L1:=IF(HNL>REF(L,1),REF(L,1),IF(HNL>REF(L,2),REF(L,2),IF(HNL>REF(L,3),REF(L,3),IF(HNL>REF(L,4),REF(L,4),0))));
L2:=IF(L1>REF(L,1),REF(L,1),IF(L1>REF(L,2),REF(L,2),IF(L1>REF(L,3),REF(L,3),IF(L1>REF(L,4),REF(L,4),0))));
L3:=VALUEWHEN(L2>0,L2);
LNH:=IF(LOW<REF(LLV(LOW,3),1),HIGH,666);
H1:=IF(LNH<REF(H,1),REF(H,1),IF(LNH<REF(H,2),REF(H,2),IF(LNH<REF(H,3),REF(H,3),IF(LNH<REF(H,4),REF(H,4),666))));
H2:=IF(H1<REF(H,1),REF(H,1),IF(H1<REF(H,2),REF(H,2),IF(H1<REF(H,3),REF(H,3),IF(H1<REF(H,4),REF(H,4),0))));
H3:=VALUEWHEN(H2>0,H2);
SEL:=VALUEWHEN((CLOSE>H3 and REF(CLOSE,1)<=H3)or(CLOSE<L3 and REF(CLOSE,1)>=L3),IF(CLOSE>H3 and REF(CLOSE,1)<=H3,1,0));
LINE:IF(SEL=1,L3,H3),COLORblue;
//开仓
long:= line<c and time>091400 and time<150500;
if long then
begin
sellshort(holding<0,holding,limitr,c);
buy(holding=0,1,limitr,c);
end
short:=line>c and time>091400 and time<150500;
if short then
begin
sell(holding>0,holding,limitr,c);
buyshort(holding=0,1,limitr,c);
end
sell(time>151200 and holding>0,0,thisclose);
sellshort(time>151200 and holding<0,0,thisclose);
PARTLINE( line<c, line, colorrgb(255,0,0));
PARTLINE( line>c, line, colorrgb(0,255,0));
DRAWNUMBER(ISLASTBAR,LINE,LINE,0,COLORblue);
源码解析:
HNL赋值:如果最高价>昨日3日内最高价的最高值,返回最低价,否则返回0
L1赋值:如果HNL>昨日最低价,返回昨日最低价,否则返回如果HNL>2日前的最低价,返回2日前的最低价,否则返回如果HNL>3日前的最低价,返回3日前的最低价,否则返回如果HNL>4日前的最低价,返回4日前的最低价,否则返回0
L2赋值:如果L1>昨日最低价,返回昨日最低价,否则返回如果L1>2日前的最低价,返回2日前的最低价,否则返回如果L1>3日前的最低价,返回3日前的最低价,否则返回如果L1>4日前的最低价,返回4日前的最低价,否则返回0
L3赋值:VALUEWHEN(L2>0,L2)
LNH赋值:如果最低价<昨日3日内最低价的最低值,返回最高价,否则返回666
H1赋值:如果LNH<昨日最高价,返回昨日最高价,否则返回如果LNH<2日前的最高价,返回2日前的最高价,否则返回如果LNH<3日前的最高价,返回3日前的最高价,否则返回如果LNH<4日前的最高价,返回4日前的最高价,否则返回666
H2赋值:如果H1<昨日最高价,返回昨日最高价,否则返回如果H1<2日前的最高价,返回2日前的最高价,否则返回如果H1<3日前的最高价,返回3日前的最高价,否则返回如果H1<4日前的最高价,返回4日前的最高价,否则返回0
H3赋值:VALUEWHEN(H2>0,H2)
SEL赋值:VALUEWHEN((收盘价>H3 AND 昨收<=H3)OR(收盘价<L3 AND 昨收>=L3),如果收盘价>H3ANDREF(收盘价,1)<=H3,返回1,否则返回0)
输出LINE:如果SEL=1,返回L3,否则返回H3,画蓝色
开仓LONG赋值: LINE<收盘价 AND 时间>091400 AND 时间<150500
逻辑判断 LONG THEN BEGIN SELLSHORT(HOLDING<0,HOLDING,LIMITR,收盘价)
BUY(HOLDING=0,1,LIMITR,收盘价)
SHORT赋值:LINE>收盘价 AND 时间>091400 AND 时间<150500
逻辑判断 SHORT THEN BEGIN SELL(HOLDING>0,HOLDING,LIMITR,收盘价)
BUYSHORT(HOLDING=0,1,LIMITR,收盘价)
ENDSELL(时间>151200 AND HOLDING>0,0,THISCLOSE)
SELLSHORT(时间>151200 AND HOLDING<0,0,THISCLOSE)
PARTLINE( LINE<收盘价, LINE, COLORRGB(255,0,0))
PARTLINE( LINE>收盘价, LINE, COLORRGB(0,255,0))
当满足条件是否最后一个周期时,在LINE位置书写数字