用交易盈亏NUMPROFIT(1)能在图表正确显示信号,但公式测试时并没用显示出,只是显示旧程序信号。为何?
测试对象:股指连续,测试时间为2011.10.26,分析周期为1分钟。注:蓝色的加的部分。
公式举例:
原来的程序:
//资金管理
持仓:=holding;
上次开仓价:=ENTERPRICE;
时价差:=C-上次开仓价;
平仓历时:=EXITBARS;
当日:=DATE=REF(DATE,平仓历时),LINETHICK0;
//多头
开多条件1:=CROSS( MA(C,5) ,MA(C,25)) ;
IF 开多条件1 THEN
BEGIN
开多1:BUY (持仓=0,1,THISCLOSE),COLORRED;//开多仓
END
开多条件2:=CROSS( MA(C,20) ,MA(C,10)) AND 当日上笔盈大;
IF 开多条件2 THEN
BEGIN
开多2:BUY (持仓=0,1,THISCLOSE),COLORWHITE;//开多仓
END
IF -时价差>=10 THEN
BEGIN
SELL( 持仓>0 ,0,THISCLOSE),COLORGREEN;//多头止损
END
//多头止盈条件
平多条件:=CROSS( MA(C,30) ,MA(C,25));
IF 平多条件 THEN
BEGIN
SELL (持仓>0,0,THISCLOSE),COLORGREEN;
END
//尾盘清空
IF TIME>=151400 THEN BEGIN
SELL(HOLDING>0,0,MARKET);
SELLSHORT(HOLDING<0,0,MARKET);
END
加多交易盈亏的程序
//资金管理
持仓:=holding;
上次开仓价:=ENTERPRICE;
时价差:=C-上次开仓价;
平仓历时:=EXITBARS;
当日:=DATE=REF(DATE,平仓历时),LINETHICK0;
交易盈亏:NUMPROFIT(1),LINETHICK0;
当日上笔盈大:当日 AND 交易盈亏/300>=10,LINETHICK0;
//多头
开多条件1:=CROSS( MA(C,5) ,MA(C,25)) ;
IF 开多条件1 THEN
BEGIN
开多1:BUY (持仓=0,1,THISCLOSE),COLORRED;//开多仓
END
开多条件2:=CROSS( MA(C,20) ,MA(C,10)) AND 当日上笔盈大;
IF 开多条件2 THEN
BEGIN
开多2:BUY (持仓=0,1,THISCLOSE),COLORWHITE;//开多仓
END
IF -时价差>=10 THEN
BEGIN
SELL( 持仓>0 ,0,THISCLOSE),COLORGREEN;//多头止损
END
//多头止盈条件
平多条件:=CROSS( MA(C,30) ,MA(C,25));
IF 平多条件 THEN
BEGIN
SELL (持仓>0,0,THISCLOSE),COLORGREEN;
END
//尾盘清空
IF TIME>=151400 THEN BEGIN
SELL(HOLDING>0,0,MARKET);
SELLSHORT(HOLDING<0,0,MARKET);
END
加了“交易盈亏”函数后在图标上,分别在10:36和13:59显示有“开多2”的信号。
但公式测试结果和旧公式是一样的,没用上面的显示信号。
请问为何,是“交易盈亏”NUMPROFIT(1)的问题吗?
是的,在图表上有显示信号,但公式测试不出来。但我又用"交易盈亏"NUMPROFIT()函数,如何解决?
您的策略里只有多仓,
多仓时 NUMPROFIT(1)/300基本等同与EXITPRICE-ENTERPRICE.
您试试用后面的代替前面的,在测评里,应该是正常的.
回复 FLY
上面是我临时设计的一个公式,实际情况是我们公司有一个完整的公式在做实盘交易。
但我想有所突破,必须要调用"交易盈亏"numprofit(),就出现在图表有信号,但测试无信号。
再用EXITPRICE-ENTERPRICE 是行不通的,因为第二次开仓后,ENTERPRICE是第二开仓价了
举例 2700开 2730平,2740再开,ENTERPRICE 是2740不再是2700.
您的意思我知道,暂时,用NUMPROFIT在测评里是有问题的,需要以后版本修正,所以,您暂时不能使用
基于您的策略是平仓后,再开仓的(而非有多仓,再加多仓的).给您推荐的,在这种情况下这两种写法是完全等同的
我给您推荐的是一个备用方案