//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//该模型运行于后台程序化模式
ZH1:'1000';
PZ1:'IF00';
VARIABLE:A=0;
//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);
//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落
//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( '','' ,0 )>0 AND EXTGBDATA('a' )=0 THEN BEGIN
EXTGBDATASET( 'a',1 );
END
//使A始终表示监控开始后的最高价
IF DYNAINFO( 7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 THEN BEGIN
EXTGBDATASET( 'a',DYNAINFO( 7));
END
//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA('a' )-DYNAINFO( 7)>5*MINDIFF and EXTGBDATA('a' )>0 THEN BEGIN
TSELL(1,1,MKT );
EXTGBDATASET( 'a',0);
END
//*******************************
我用系统自带的后台移动止损进行测试,测试IF00,1分钟周期,2017年1月1日到2017年5月15日,测试结果显示有交易,但是我把
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);这个语句删除之后,只想用移动止损平仓,发现居然没有交易信号,请问是什么问题呢?
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )=0,1,LMT,CLOSE,0,ZH1,PZ1 );
我把改成TBUYHOLDINGEX( ZH1,PZ1 ,0 )=0,发现连续几次开多,没有平仓出现,貌似就是止损不发生作用,是什么问题呢?
你可以使用debugfile 将有疑问的地方的条件输出看下,它是不是满足当时的触发条件。
那你用debugfile2,应该是可以输出历史的条件值的
debugfile2('D:\TEST.TXT','开仓条件%.2f',CONDBUY,1);
我尝试了,不能输出历史值