FUND := 10000000; //资金
TC := INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));//计算开仓手数
N := BARSLAST(DATE<>REF(DATE,1))+1;//当天的K线根数
//开仓时段
KTIME := BETWEEN(TIME, 0915, 1430) OR BETWEEN(TIME, 2115, 2230);
//平仓时间
PTIME1 := TIME=1445 OR TIME=2245;
HH := REF(HHV(H,N),N);//昨天的高点
LL := REF(LLV(L,N),N);//昨天的低点
HH1 := REF(HHV(H,N*2),N);//前天的高点
LL1 := REF(LLV(L,N*2),N);//前天的低点
CC := REF(C,N);//昨天的收盘价
CH := MAX(REF(REF(C,N),N),CC);//取前天收盘价和昨天收盘价二者的最大值
CL := MIN(REF(REF(C,N),N),CC);//取前天收盘价和昨天收盘价二者的最小值
RANGE1 := MAX(MAX(MAX(HH-CC,CC-LL),ABS(HH1-CH)),ABS(LL1-CL));//求昨天的高点减去昨天的收盘价,昨天的收盘价减去昨天的最低点,二者的最大值,得出的这个最大值与前天的高点减去CH的绝对值比较,取二者最大值,再用这个最大值与前天的低点减去CL的绝对值比较,取最大值
OO := VALUEWHEN(N=1,O);//今天的开盘价
TOP := OO+0.5*RANGE1;//今天的开盘价加上0.5倍的RANGE1
BOTTOM := OO-0.7*RANGE1;//今天的开盘价减去0.7倍的RANGE1
CROSSUP(C, TOP) AND KTIME, BPK(TC);//最新价上穿TOP,做多
CROSSDOWN(C, BOTTOM) AND KTIME, SPK(TC);//最新价下穿BOTTOM,做空
EVERY(NOT(ISUP), 3), SP(BKVOL);//连续三根K线都不是阳线,卖平
EVERY(NOT(ISDOWN), 3), BP(SKVOL);//连续三根K线都不是阴线,买平
PTIME1, CLOSEOUT;
|