以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp)
-- 金字塔软件问题提交 (http://222.73.7.161/bbs/list.asp?boardid=2)
---- 测试问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=2&id=54381)
|
-- 作者:投资老友-WAN
-- 发布时间:2013/7/29 11:03:04
-- 测试问题
我最近开发一个模型,加载到图表上一切正常(见第一张图),但是在测试平台上测试时,完全没有成交数据(见第二张图),行情数据和测试平台都是正常的(用其他模型测试验证),请问可能是什么原因?? 此主题相关图片如下:捕获1.jpg
此主题相关图片如下:捕获2.jpg
|
-- 作者:jinzhe
-- 发布时间:2013/7/29 11:07:41
--
测评没有结果,有如下几种可能:
1.没有历史数据
2.测试时间设置错误
3.费率设置错误
|
-- 作者:jsh578
-- 发布时间:2013/7/29 11:13:08
--
有没有类似这样的开仓语句:
IF aa=0 and holding=0 and……
|
-- 作者:投资老友-WAN
-- 发布时间:2013/7/29 11:19:34
--
您说的这三点好像都不是,同样的平台(品种和时间都不变),另外模型测就没问题。检查费率设置也没问题。
|
-- 作者: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编辑过]
|
-- 作者:投资老友-WAN
-- 发布时间:2013/7/29 11:37:23
--
开仓语句是:
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
|
-- 作者:jsh578
-- 发布时间:2013/7/29 11:45:38
--
依我看可能就是出现在你的这个条件判断上 TRADESIGN=0,你把它改成holding试试
我上面的代码,是金字塔的一个bug,曾经和他们反应过,他们说等后续的版本解决,也和他们电话沟通过!
|
-- 作者:投资老友-WAN
-- 发布时间:2013/7/29 15:48:54
--
模型改了一些语句以后,可以测了,但是还是原来不知道原来不能测的原因,问金字塔客服也说不清楚什么问题
|
-- 作者:jinzhe
-- 发布时间:2013/7/29 15:50:16
--
不能测试基本都是从上面几点入手的,如果还检查不出问题,就要从代码入手
|
-- 作者:董小球
-- 发布时间:2013/7/30 15:00:19
--
以下是引用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。 了解了全局变量的运行机制后,应当避免这种情况,比如你写的这段代码应该是为了区分第一次开仓的不同吧,直接用普通变量就行了,不需要全局变量。
|