以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 你把全局变量中保留的历史值清空以后在执行测试看下 工具--数据管理器--全局变量中 |