以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  后台程序化移动止损的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=153142)

--  作者:chyhao
--  发布时间:2017/5/17 14:03:55
--  后台程序化移动止损的问题
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//该模型运行于后台程序化模式

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);这个语句删除之后,只想用移动止损平仓,发现居然没有交易信号,请问是什么问题呢?

--  作者:FexTel
--  发布时间:2017/5/18 8:59:05
--  
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10  //开仓里面有个条件,是仓位小于10.你看下你账户栏对应品种的仓位是不是大于10手哦
--  作者:chyhao
--  发布时间:2017/5/18 16:20:29
--  
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )=0,1,LMT,CLOSE,0,ZH1,PZ1 );

我把改成TBUYHOLDINGEX( ZH1,PZ1 ,0 )=0,发现连续几次开多,没有平仓出现,貌似就是止损不发生作用,是什么问题呢?

--  作者:wenarm
--  发布时间:2017/5/18 16:30:22
--  
你可以使用debugfile 将有疑问的地方的条件输出看下,它是不是满足当时的触发条件。
--  作者:chyhao
--  发布时间:2017/5/18 16:35:28
--  
后台精细化回测的哦
--  作者:wenarm
--  发布时间:2017/5/18 17:21:47
--  
那你用debugfile2,应该是可以输出历史的条件值的
--  作者:chyhao
--  发布时间:2017/5/19 9:59:22
--  
debugfile2(\'D:\\TEST.TXT\',\'开仓条件%.2f\',CONDBUY,1);
我尝试了,不能输出历史值


--  作者:wenarm
--  发布时间:2017/5/19 13:32:12
--  

你把全局变量中保留的历史值清空以后在执行测试看下

工具--数据管理器--全局变量中