测试四代码:
//定义仓位
FUND:=10000000;
LOTS:=INTPART(FUND*0.8/(CLOSE+FEE));//计算手数,使每次开仓金额都是800W
//定义ATR
TR1:=MAX(MAX((H-L),ABS(REF(C,1)-H)),ABS(REF(C,1)-L));//算出(当日最高-当日最低)、(当日最高-昨日收盘)的绝对值、(昨日收盘-当日最低)的绝对值,取这3个值中的最大值为TR值
ATR:=MA(TR1,26);//求26个周期内的TR的简单移动平均
//定义均线
MA20:MA(C,20);
//定义DMI指标
TR := SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);//最高价与最低价做差,最高价与前一周期收盘价做差,最低价与前一周期收盘价作差,在上述三个数据中取绝对值最大者,对该最大值做N周期累加求和。。
HD := HIGH-REF(HIGH,1);//最高价与前一周期最高价做差
LD := REF(LOW,1)-LOW;//前一周期最低价与最低价做差
DMP:= SUM(IFELSE(HD>0 && HD>LD,HD,0),14);//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。
DMM:= SUM(IFELSE(LD>0 && LD>HD,LD,0),14);//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。
PDI: DMP*100/TR;
MDI: DMM*100/TR;
ADX: MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);//MDI与PDI差的绝对值与(MDI+PDI)*100做比值,取该比值的M个周期均值。
ADXR: (ADX+REF(ADX,6))/2;
DMI1:=ADX<70;
//定义k线
XYXCD:=MIN(O,C)-L;//下影线长度
k线ST:=ABS(O-C);//k线实体长度
XX:=k线ST<(H-L)*0.5;//星线实体
CXYX:=XYXCD>ATR*0.5;//长下影线
//双针探底形态
上证TDJA1:=CXYX AND XX;//当天星线有长下影线
上证TDJA2:=COUNT(CXYX AND XX,3)>1;//3个周期内满足上证TDJA1的个数大于1
上证TDJA3:=REF(C,1)<REF(MA20,1);//下跌趋势中
上证TD:=上证TDJA1 AND 上证TDJA2 AND 上证TDJA3;//双针探底
上证TD AND DMI1,BK(LOTS);//出现双针探底,并且ADX<70时,买入
BARSBK=1,SP(BKVOL);//一天后卖出
|