金字塔公式 金字塔模型策略源码:
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位置书写数字