以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 周日升级3.52版本后遇到的问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=77043) |
-- 作者:donlee88 -- 发布时间:2015/3/29 11:53:23 -- 周日升级3.52版本后遇到的问题 同样的模型,同样的数据,在模型中如果有同品种调用的语句,就没有办法测试(即测试结果都是0) clzd:STKINDI(\'\',\'wqclzd.仓\',0,17,0),PRECISION0,LINETHICK0,colorwhite; 在模型中增加上述语句(同品种同周期调用,3分钟周期),且clzd在模型中不用任何用途,只是增加个clzd,模型测试结果=0;如果去掉上述语句,模型就能正常测试了。 注1:数据在版本升级前后没有改动,在升级前,有上述语句的模型是可以正常测试的。 注2:模型可以在图形状态下正常运行,就是不能测试 |
-- 作者:wzsunshao -- 发布时间:2015/3/29 17:33:48 -- 前段时间我反应过同样的问题,新版在测试时对STKINDI函数的处理能力明显有不足。 |
-- 作者:王锋 -- 发布时间:2015/3/29 17:53:45 -- 有没有完整可以进行测试的公式范例? 这样我们才可能有针对性的去解决该问题 |
-- 作者:donlee88 -- 发布时间:2015/3/29 20:14:41 -- 公式范例: ////////////////////////////////////////////特殊条件/////////////////////////////////////////////// 小短:=3; aa:=0.01; /////////////////////////////////////////////冬令时////////////////////////////////////////////////// bz:=0;//=1代表冬令时 冬令时:=if(bz=0,000000,010000); cond0:=if(date()<>ref(date(),1),1,0);//夏令时初始时间 cond1:=if((time>010000 and time<=013000 and time-ref(time,1)>8000) or time=010300,1,0);//冬令时初始时间 cond:=if(bz=0,cond0,cond1); /////////////////////////////////////////////常规参数////////////////////////////////////////////////// xx1:=5; N:=barslast(cond),PRECISION0,linethick0,coloryellow;//设置当日起点为N=0 ksx:=wma(c,66),PRECISION4,LINETHICK0,coloryellow;// 200分钟的wma Msx:=MA(CLOSE,380),PRECISion4,LINETHICK0,COLORred;//折算60图的20均线 仓:holding,LINETHICK0,coloryellow;//持仓数量 /////////////////////////////////////////////////开仓条件////////////////////////////////////////////////////// bk31:=longcross(ksx,msx,38); bk3:=if(sum(bk31,38)>0 and ksx>msx+2*aa and c<ksx+xx1*aa,1,0); bkzh1:=if(bk3>0,1,0);//用于开平 sk31:=longcross(msx,ksx,38); sk3:=if(sum(sk31,38)>0 and ksx<msx-2*aa and c>ksx-xx1*aa,1,0); skzh1:=if(sk3>0,1,0);//用于开平 ///////////////////////////////////////////////////////////////////////平仓动作/////////////////////////////////////////////////////////////////////// timexk1:=if(time<>231500+冬令时,1,0); sell(timexk1*n>1 and skzh1>0,仓,limitr,c);//出现反手情况先平仓,增加点差,保证成交 sellSHORT(timexk1*n>1 and bkzh1>0,仓,limitr,c);//出现反手情况先平仓,增加点差,保证成交 /////////////////////////////////////////////////////////////////////////开仓动作////////////////////////////////////////// clzd:STKINDI(\'\',\'wqclzd.仓\',0,17,0),PRECISION0,LINETHICK0,colorwhite; {开多}BUY(bkzh1>0 and 仓<小短 and 小短>0,小短,limitr,c); {开空}BUYSHORT(skzh1>0 and 仓>-小短 and 小短>0,小短,limitr,c); 以上公式,用于测试原油cl00 的3分钟图,取消倒数第三行的clzd,就可以测试,有了clzd,测试结果就是000000 公式wqclzd,没有问题且有200条以上的语句,如果,将公式wqclzd简化到50条语句以下,上述范例就能运行了 这个在改版前,用200条语句的wqclzd是可以正常测试的 |
-- 作者:donlee88 -- 发布时间:2015/3/29 20:22:23 -- 进一步测试,上述的2个模型,在另外2台电脑上进行测试,可行(同样模型,同样设置,同样的数据),唯一区别是第一台电脑上4g内存,第2、3台电脑分别是8g,12g的内存,所以,怀疑是stkindi函数在调用过程中内存不够产生的问题 此问题在改版前是不存在的:)
|
-- 作者:donlee88 -- 发布时间:2015/3/29 20:29:01 -- 多次测试后发现的问题总结: 2个模型,1调用2,同周期同品种,如果在1里面没有调用语句,1 可以正常测试;如果在1里面有调用语句,且不使用调用的结果,仅仅是增加一个调用,只要模型2是复杂的,那么1就没有办法测试(注模型2里面没有调用语句),只要在模型1的调用语句前面加//,测试又是可行的,所以,问题在stkindi函数中 |
-- 作者:王锋 -- 发布时间:2015/3/29 21:51:23 -- 你可以用排除法减小测试数据量后,再看看问题是否还依然存在? 此外新版你是更换新目录安装的还是升级安装的?如果你是更换新目录安装的,建议你检查新安装的是否存在选项上的问题?比如在你测试数据比较大时应该在64位系统下测试,可以使用到最大4G内存,还有虚拟内存选项是否强制勾选以尽可能测试时减小内存占用。 金字塔后面很快也会发布64位版本,届时内存的4G瓶颈将会彻底得到解决 [此贴子已经被作者于2015/3/29 22:29:34编辑过]
|
-- 作者:donlee88 -- 发布时间:2015/3/30 6:12:14 -- 1、原本可以测试3年的,现在只测试20120101-20120401,3个月数据也无法进行; 2、新版本是升级安装的,没有更换目录; 3、一直使用的是win7 64位系统 4、强制使用虚拟内存后,还是无法测试(原来使用的是“自动使用”) 5、关键在于改版前是可以的,就是升级了下,就不可以了。。。。。。。 |
-- 作者:FexTel -- 发布时间:2015/3/30 8:52:33 -- 1,新版增加引用自动补充数据功能,有可能出现在这块上。引用数据量大,补充量导致 2,后续会考虑此功能的合理性,是否做更正。谢谢 |