测试四代码:
//定义仓位
FUND:=10000000;
LOTS:=INTPART(FUND*0.8/(CLOSE+FEE));//计算手数,使每次开仓金额都是800W
//定义ATR
TR:=MAX(MAX((H-L),ABS(REF(C,1)-H)),ABS(REF(C,1)-L));//算出(当日最高-当日最低)、(当日最高-昨日收盘)的绝对值、(昨日收盘-当日最低)的绝对值,取这3个值中的最大值为ATR
ATR:=MA(TR,26);//求26个周期内的TR的简单移动平均
//定义DMI指标
TR := SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);//14个周期内波幅的总和
HD := HIGH-REF(HIGH,1);//最高价与前一周期最高价做差
LD := REF(LOW,1)-LOW;//前一周期最低价与最低价做差
DMP:= SUM(IFELSE(HD>0 && HD>LD,HD,0),14);//把14个周期内所有大于低点差的高点差值累加
DMM:= SUM(IFELSE(LD>0 && LD>HD,LD,0),14);//把14个周期内所有大于高点差的低点差值累加
PDI: DMP*100/TR;//把高点累加差值限定在0-100之间
MDI: DMM*100/TR;//把低点累加差值限定在0-100之间
ADX: MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);//多空双方力量悬殊的程度:ADX值趋向0,双方趋向势均力敌。ADX值趋向100,某一方实力更强
ADXR: (ADX+REF(ADX,6))/2;
DMI:=ADX>50;
//定义k线
k线ST:=ABS(O-C);//k线实体长度
收益XCD:=H-MAX(O,C);//上影线长度
XYXCD:=MIN(O,C)-L;//下影线长度
上证XST:=k线ST<ATR*0.1;//十字星的实体
上证X:=上证XST AND 收益XCD>0 AND XYXCD>0;//十字星定义
//定义连续十字星
LX上证X1:=上证X;
LX上证X2:=REF(上证X,1);
LX上证X:=LX上证X1 AND LX上证X2;
LX上证X AND ADX>50,BK(LOTS);//出现双连星,并且ADX>50时,买入
BARSBK=1,SP(BKVOL);//1天后,卖出
|