以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 帮忙看下代码,怎么运行有问题的? (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=90642) |
-- 作者:c100010592 -- 发布时间:2016/1/24 16:10:51 -- 帮忙看下代码,怎么运行有问题的? //声明参数 INPUT:ATRLEN(20,15,30,1) ,总资金(20,0,10000,10); variable: position := 0 ; MA4:=MA(C,4);//均线定义 MA9:=MA(C,9); MA18:=MA(C,18); //声明变量 NT := 1 ;
//调试信息带时间戳 VARIABLE : _DEBUG = 1 ;
//是否输出前台交易指令 VARIABLE : _TDEBUG = 1 ;
//是否输出后台交易指令 VARIABLE : _DEBUGOUT = 0 ;
//是否输出后台交易的调试信息 VARIABLE : MYENTRYPRICE =0 ;
//开仓价格 VARIABLE : MYEXITPRICE =0 ;
//平仓价格 VARIABLE : POSITION=0 ;
//仓位状态 //0表示没有仓位,1表示持有多头, -1表示持有空头 AVGTR := REF(MA(TR,ATRLEN),1) ; 手数 := FLOOR(总资金*200/(AVGTR*MULTIPLIER ));//计算应开手数 //开始执行时 初始化数据 IF BARPOS=1 THEN BEGIN;
//POSITION := 0 ; END //IF //如果当前是没有持仓的状态 IF POSITION=0 AND H>L THEN BEGIN;
//建立多头进场条件 开多条件:= C>MA4 and MA4>MA9 and MA9>MA18 and position=0 and 手数> 0;
//多头进场
IF 开多条件 THEN BEGIN
MYENTRYPRICE := IF(OPEN> MA4+MINDIFF ,OPEN , MA4 ) ;
BUY( _DEBUG, 手数,LIMITR,MYENTRYPRICE);
POSITION := 1 ;
N := AVGTR ;
BUYORDERTHISBAR := 1;
END //IF
//建立空头进场条件
开空条件:= C<MA4 and MA4<MA9 and MA9<MA18 and position=0 and 手数> 0 ;
//空头进场
IF 开空条件 THEN BEGIN
MYENTRYPRICE:=IF(OPEN< MA4-MINDIFF ,OPEN , MA4-MINDIFF ) ;
BUYSHORT( _DEBUG, 手数,LIMITR,MYENTRYPRICE);
POSITION := -1 ;
N := AVGTR ;
BUYORDERTHISBAR := 1;
END END //IF
//建立多头离场条件
平多条件1:= MA4<MA9 and HOLDING>0;
IF 平多条件1 THEN BEGIN
MYEXITPRICE := IF(OPEN< MA4-MINDIFF ,OPEN , MA4-MINDIFF ) ;
SELL( _DEBUG ,holding,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END
//建立多头止损条件
平多条件2:= (LOW<MYENTRYPRICE-2*N) ;
IF 平多条件2 AND POSITION=1 THEN BEGIN
MYEXITPRICE := IF(OPEN<MYENTRYPRICE-2*N ,OPEN ,MYENTRYPRICE-2*N ) ;
MYEXITPRICE := FLOOR(MYEXITPRICE/MINDIFF)*MINDIFF ;
SELL( _DEBUG ,holding,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END //建立空头离场条件
平空条件1:= MA4>MA9 and HOLDING<0;
IF 平多条件1 THEN BEGIN
MYEXITPRICE := IF(OPEN> MA4+MINDIFF ,OPEN , MA4+MINDIFF ) ;
SELL( _DEBUG ,holding,LIMITR,MYEXITPRICE);
POSITION := 0 ;
END
//建立多头止损条件
平空条件2:= (H>MYENTRYPRICE+2*N) ;
IF 平空条件2 AND POSITION=1 THEN BEGIN
MYEXITPRICE := IF(OPEN>MYENTRYPRICE+2*N ,OPEN ,MYENTRYPRICE+2*N ) ;
MYEXITPRICE := FLOOR(MYEXITPRICE/MINDIFF)*MINDIFF ;
SELL( _DEBUG ,holding,LIMITR,MYEXITPRICE);
POSITION := 0 ;
END //显示账户状态 CONTINUELINE@ 资产:ASSET,LINETHICK0; 可用现金:CASH(0),LINETHICK0; 振幅:N,LINETHICK0; POS:HOLDING,LINETHICK0; 交易次数:TOTALDAYTRADE, LINETHICK0 ; IF _DEBUGOUT>0 THEN BEGIN
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'BARPOS=%.0F\' ,BARPOS,NT ) ;
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'N=%.2F\' ,N ,NT) ;
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'CLOSE=%.2F\' ,C ,NT) ;
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'POSITION=%.0F\' ,POSITION,NT ) ;
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'TURTLEUNITS=%.0F\' ,TURTLEUNITS,NT ) ;
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'MYENTRYPRICE=%.0F\' ,MYENTRYPRICE ,NT) ;
DEBUGFILE2(\'C:\\DEBUGFILE.TXT\',\'MYEXITPRICE=%.0F\' ,MYEXITPRICE ,NT) ; END //IF 当前持仓:HOLDING,COLORGRAY,LINETHICK0; 当前资产:ASSET,NOAXIS,COLORGRAY; 以上是一个克罗均线的代码,但怎么运行有问题呢,运行下来是只有开仓,然后在最后时间点强制平仓,也就是不会自动平仓。
|
-- 作者:jinzhe -- 发布时间:2016/1/25 9:41:52 -- 3个错误 1,平空语句全都写成了sell,需要改成sellshort 2, 下单价格不能成交,要在所有的平仓语句最后加上ignorechek,例如:selLshort( _DEBUG ,holding,LIMITR,MYEXITPRICE),IGNORECHECKPRICE; 3. 平空条件的position判断写错了,要写成position=-1 |
-- 作者:c100010592 -- 发布时间:2016/1/25 10:34:05 -- 第一第二条都改了,第三条,我用的是 HOLDING<0,改好后还是不行,空单不会自动平仓 |
-- 作者:jinzhe -- 发布时间:2016/1/25 10:43:34 -- INPUT:ATRLEN(20,15,30,1) ,总资金(20,0,10000,10);
END
|
-- 作者:c100010592 -- 发布时间:2016/1/25 11:40:11 -- 看运行明细,还是有些问题,比如以下,小时线运行,还有问题,动煤只成交了一笔,TA最后一笔也是异常,其他品种也有TA这样的情况。 时间 名称 类型 交易价/成本价 交易量 收益 幅度%(不计平仓费用) 资产 最大回撤% 2015/01/12 15:00:00 动力煤连续 开空 472.4 16 0.00 2015/12/31 19:00:00 动力煤连续 强制平仓 305.2 16 267,199.97 35.38 467,199.97 17.76 时间 名称 类型 交易价/成本价 交易量 收益 幅度%(不计平仓费用) 资产 最大回撤% 2015/01/09 03:30:00 PTA连续 开空 4650 23 0.00 2015/01/21 15:00:00 PTA连续 平空 4716/4649 23 -7,785.51 -1.44 192,214.50 11.95 2015/01/21 18:00:00 PTA连续 开多 4718 28 0.00 2015/01/23 03:00:00 PTA连续 平多 4763/4719 28 6,061.99 0.93 198,276.50 14.48 2015/01/26 03:00:00 PTA连续 开空 4720 21 0.00 2015/02/04 14:00:00 PTA连续 平空 4792/4719 21 -7,686.01 -1.54 190,590.50 14.48 2015/02/04 15:00:00 PTA连续 开多 4804 17 0.00 2015/02/05 03:00:00 PTA连续 平多 4726/4805 17 -6,732.01 -1.64 183,858.50 17.52 2015/02/09 02:00:00 PTA连续 开多 4780 24 0.00 2015/02/09 14:00:00 PTA连续 平多 4761/4780 24 -2,424.01 -0.41 181,434.50 19.84 2015/02/10 14:00:00 PTA连续 开空 4746 29 0.00 2015/02/13 18:00:00 PTA连续 平空 4798/4745 29 -7,786.51 -1.12 173,648.00 20.75 2015/02/13 19:00:00 PTA连续 开多 4780 29 0.00 2015/02/25 14:00:00 PTA连续 平多 4800/4781 29 2,725.99 0.41 176,374.00 22.27 2015/03/02 03:00:00 PTA连续 开多 4918 18 0.00 2015/03/04 14:00:00 PTA连续 平多 5034/4919 18 10,331.99 2.35 186,706.00 22.27 2015/03/05 03:00:00 PTA连续 开空 4964 15 0.00 2015/04/08 18:00:00 PTA连续 平空 5068/4963 15 -7,890.01 -2.11 178,816.00 22.27 2015/04/08 19:00:00 PTA连续 开多 5058 16 0.00 2015/04/09 15:00:00 PTA连续 平多 4998/5059 16 -4,896.01 -1.20 173,920.00 22.91 2015/04/10 19:00:00 PTA连续 开空 4936 17 0.00 2015/04/14 02:00:00 PTA连续 平空 5028/4935 17 -7,922.01 -1.88 165,998.00 23.88 2015/04/14 14:00:00 PTA连续 开多 5040 22 0.00 2015/04/16 03:00:00 PTA连续 平多 5206/5041 22 18,127.99 3.28 184,126.00 26.40 2015/04/16 14:00:00 PTA连续 开多 5260 17 0.00 2015/04/17 03:30:00 PTA连续 平多 5272/5261 17 917.99 0.22 185,044.00 26.40 2015/04/20 14:00:00 PTA连续 开多 5308 18 0.00 2015/04/22 15:00:00 PTA连续 平多 5408/5309 18 8,891.99 1.87 193,936.00 26.40 2015/04/23 02:00:00 PTA连续 开多 5470 18 0.00 2015/04/23 19:00:00 PTA连续 平多 5454/5471 18 -1,593.01 -0.31 192,343.00 26.40 2015/04/24 18:00:00 PTA连续 开空 5437 17 0.00 2015/05/06 14:00:00 PTA连续 平空 5530/5436 17 -8,007.01 -1.72 184,336.00 26.40 2015/05/06 15:00:00 PTA连续 开多 5580 17 0.00 2015/05/07 14:00:00 PTA连续 平多 5524/5581 17 -4,862.01 -1.01 179,474.00 26.40 2015/05/08 03:30:00 PTA连续 开空 5442 16 0.00 2015/12/31 19:00:00 PTA连续 强制平仓 4462 16 78,303.99 18.00 257,778.00 26.40 |
-- 作者:jinzhe -- 发布时间:2016/1/25 13:24:39 -- 1.补充下数据 2.最后一笔是强制平仓的,这个没什么问题
|
-- 作者:c100010592 -- 发布时间:2016/1/25 15:03:52 -- 因为是运行小时线,最后一笔持仓时间太长,不太可能,而且看了图形,也不可能持这么长时间的仓。 |
-- 作者:jinzhe -- 发布时间:2016/1/25 15:10:42 -- 1.中间缺数据,这个要补充5分钟数据 2.中间的行情的确是没有触发开平仓,当然这个可能性很小 |
-- 作者:c100010592 -- 发布时间:2016/1/25 20:24:01 -- 我其他几个策略,也是载小时线上运行,都回测没问题,所以可能不是数据的问题? |
-- 作者:jinzhe -- 发布时间:2016/1/26 9:07:39 -- 这个只能说明其他品种没缺数据对不对?并不能说明这个品种有数据对不对? [此贴子已经被作者于2016/1/26 9:07:52编辑过]
|