我最近开发一个模型,加载到图表上一切正常(见第一张图),但是在测试平台上测试时,完全没有成交数据(见第二张图),行情数据和测试平台都是正常的(用其他模型测试验证),请问可能是什么原因??

此主题相关图片如下:捕获1.jpg


此主题相关图片如下:捕获2.jpg
您说的这三点好像都不是,同样的平台(品种和时间都不变),另外模型测就没问题。检查费率设置也没问题。
RUNMODE:0;
variable:aa=0;
M1:MA(C,5);
M2:MA(C,10);
KD:=REF(CROSS(M1,m2),1); //开多条件
PD:=REF(CROSS(m2,M1),1); //平多条件
IF aa=0 and holding=0 and TIME<=150000 and kd THEN
begin
aa:=1;
buy(1,1,limitr,o);
end
if aa=1 and holding=1 and pd then
begin
aa:=0;
sell(1,1,limitr,c);
end
这位朋友你用这个代码测一下,你只要起始时间不是20100416,你的回测就是零!!!
[此贴子已经被作者于2013/7/29 11:33:06编辑过]
开仓语句是:
IF TRADESIGN=0 and (BPK1 OR BPKS1) THEN BEGIN{开多仓}
BUY(1,ORDERNO,THISCLOSE);
TRADESIGN:=1;
GOTO CONTINUELINE;
END
IF TRADESIGN=1 and (PWIN) THEN BEGIN{平多仓}
SELL(1,HOLDING,THISCLOSE);
TRADESIGN:=0;HHPROFIT:=0;//drawnumber(1,H,FPROFIT,0);
IF (POSC>5 AND P5<P4) THEN BEGIN{如果下穿MA线的同时,也下穿LL线,开空仓}
BUYSHORT(1,ORDERNO,THISCLOSE);
TRADESIGN:=-1;
END
GOTO CONTINUELINE;
END
IF TRADESIGN=0 and (SPK1 OR SPKS1) THEN BEGIN{开空单}
BUYSHORT(1,ORDERNO,THISCLOSE);
TRADESIGN:=-1;
GOTO CONTINUELINE;
END
依我看可能就是出现在你的这个条件判断上 TRADESIGN=0,你把它改成holding试试
我上面的代码,是金字塔的一个bug,曾经和他们反应过,他们说等后续的版本解决,也和他们电话沟通过!
模型改了一些语句以后,可以测了,但是还是原来不知道原来不能测的原因,问金字塔客服也说不清楚什么问题
不能测试基本都是从上面几点入手的,如果还检查不出问题,就要从代码入手
以下是引用jsh578在2013/7/29 11:32:27的发言:
RUNMODE:0;
variable:aa=0;
M1:MA(C,5);
M2:MA(C,10);
KD:=REF(CROSS(M1,m2),1); //开多条件
PD:=REF(CROSS(m2,M1),1); //平多条件
IF aa=0 and holding=0 and TIME<=150000 and kd THEN
begin
aa:=1;
buy(1,1,limitr,o);
end
if aa=1 and holding=1 and pd then
begin
aa:=0;
sell(1,1,limitr,c);
end
这位朋友你用这个代码测一下,你只要起始时间不是20100416,你的回测就是零!!!
[此贴子已经被作者于2013/7/29 11:33:06编辑过]
这个代码运行的问题在于,你使用了全局变量,而全局变量只在第一根K初始化为0,其余的就都不是0了,所以比如你本地第一根K是股指的20100416时,如果你从非0416这一天开始测试也就变成了,aa始终都是等于1的,因此也就没有任何测试结果了,这不是软件BUG。
了解了全局变量的运行机制后,应当避免这种情况,比如你写的这段代码应该是为了区分第一次开仓的不同吧,直接用普通变量就行了,不需要全局变量。