原因有很多,比如代码简单,历史数据不论怎么变都不影响,比如用旧图表,没有判断holding的,
所以,请举个具体的例子
//声明参数 INPUT : T20(20,15,60,1) ;INPUT : T10(20,10,30,1); //声明变量 POSNUM : =1; //交易数量设置 VARIABLE : TURTLEUNITS=0 ;
//交易次数计数器 VARIABLE : POSITION=0 ;
//仓位状态 0表示没有仓位,1表示持有多头, -1表示持有空头 //准备需要计算的变量 T20HI := REF(HHV(H,T20),1) ;T20LO := REF(LLV(L,T20),1) ; T10HI := REF(HHV(H,T10),1) ;T10LO := REF(LLV(L,T10),1) ; //开始执行时 初始化数据 IF BARPOS=1 THEN BEGIN
//POSITION := 0 ; END //IF //进场条件设置 UZC:REF(L,BARSLAST(H>T20HI)),COLORGREEN,LINETHICK2; {上支撑价格:H大于昨N日新高时当日的最低价} DYL:REF(H,BARSLAST(L<T10LO)),COLORMAGENTA,LINETHICK2; {下压力价格:L小于昨N日新低时当日的最高价} CUZC:=C>UZC AND REF(C,1)<=REF(UZC,1);
//开多平空条件 CDYL:=C<DYL AND REF(C,1)>=REF(DYL,1);
//开空平多条件 //如果当前是没有持仓的状态 IF H>L AND BARPOS>60 THEN BEGIN
//多头进场
IF CUZC AND TURTLEUNITS<3 THEN BEGIN
BUY( 1, POSNUM, LIMITR, UZC),IGNORECHECKPRICE;
POSITION: = 1 ;
TURTLEUNITS := TURTLEUNITS + 1 ;
END //IF
//空头进场
IF CDYL AND TURTLEUNITS<3 THEN BEGIN
BUYSHORT( 1, POSNUM, LIMITR, DYL),colorcyan;
POSITION:= -1 ;
TURTLEUNITS := TURTLEUNITS + 1 ;
END END //IF //如果当前持有多头仓位的状态 IF H>L AND POSITION=1 THEN BEGIN
//多头加仓
//多头离场条件
IF CDYL THEN BEGIN
SELL( 1, TURTLEUNITS, MARKET),colorgreen;
TURTLEUNITS := 0 ;
END
GOTO CONTINUELINE ;
//GOTO CONTINUELINE ; END //IF //如果当前持有空头仓位的状态 IF H>L AND POSITION=-1 THEN BEGIN
//空头加仓
//空头离场条件
IF CUZC THEN BEGIN
SELLSHORT( 1, TURTLEUNITS, MARKET),colorred;
//平仓数量为TURTLEUNITS
TURTLEUNITS := 0 ;
END END //IF //显示账户状态 CONTINUELINE@ 资产:ASSET,LINETHICK0; 可用现金:CASH(0),LINETHICK0; POS:HOLDING,LINETHICK0; 交易次数:TOTALDAYTRADE, LINETHICK0 ; |