以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  后台测试的一个问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=162102)

--  作者:yin8jun
--  发布时间:2018/3/15 15:10:31
--  后台测试的一个问题
后台测试鲁西化工,中国平安,金禾实业,发现zg值在三个票里不变,这是怎么回事?代码如下:

zg:=zig(4,20);

refzg1:=ref(zg,1);
refzg2:=ref(zg,2);
d1dian:=zg<refzg1 and refzg1>refzg2,noaxis;
d0bars:=barslast(d1dian)+1;
d0:=ref(refzg1,d0bars-1);
d1:=if(sum(l/d0<=0.8,d0bars)=0,ref(d0,d0bars+1),d0);

if islastbar then begin
debugfile(\'D:\\test2\\TEST.TXT\',NUMTOSTR(YEAR*10000+MONTH*100+DAY,0)+\'  :d1:%.2f\',d1);
debugfile(\'D:\\test2\\TEST.TXT\',NUMTOSTR(YEAR*10000+MONTH*100+DAY,0)+\'  :zg:%.2f\',zg);
debugfile(\'D:\\test2\\TEST.TXT\',NUMTOSTR(YEAR*10000+MONTH*100+DAY,0)+\'  :d0:%.2f\',d0);
debugfile(\'D:\\test2\\TEST.TXT\',NUMTOSTR(YEAR*10000+MONTH*100+DAY,0)+\'  :close:%.2f\',close);

end

测试debug中的一段:
...
2018-03-15 15:03:52.003    20170424  :d1:-1.#R
2018-03-15 15:03:52.003    20170424  :zg:35.29
2018-03-15 15:03:52.003    20170424  :d0:-1.#R
2018-03-15 15:03:52.004    20170424  :close:35.46
2018-03-15 15:03:52.007    20170424  :d1:-1.#R
2018-03-15 15:03:52.007    20170424  :zg:35.29
2018-03-15 15:03:52.007    20170424  :d0:-1.#R
2018-03-15 15:03:52.007    20170424  :close:6.08
2018-03-15 15:03:52.007    20170424  :d1:-1.#R
2018-03-15 15:03:52.008    20170424  :zg:35.29
2018-03-15 15:03:52.008    20170424  :d0:-1.#R
2018-03-15 15:03:52.008    20170424  :close:18.72
2018-03-15 15:03:52.009    20170425  :d1:-1.#R
2018-03-15 15:03:52.009    20170425  :zg:35.41
2018-03-15 15:03:52.009    20170425  :d0:-1.#R
2018-03-15 15:03:52.009    20170425  :close:35.77
2018-03-15 15:03:52.010    20170425  :d1:-1.#R
2018-03-15 15:03:52.010    20170425  :zg:35.41
2018-03-15 15:03:52.010    20170425  :d0:-1.#R
2018-03-15 15:03:52.010    20170425  :close:6.34
2018-03-15 15:03:52.010    20170425  :d1:-1.#R
2018-03-15 15:03:52.011    20170425  :zg:35.41
2018-03-15 15:03:52.011    20170425  :d0:-1.#R
2018-03-15 15:03:52.011    20170425  :close:18.80
2018-03-15 15:03:52.012    20170426  :d1:-1.#R
2018-03-15 15:03:52.012    20170426  :zg:35.76
2018-03-15 15:03:52.012    20170426  :d0:-1.#R
2018-03-15 15:03:52.012    20170426  :close:36.78
2018-03-15 15:03:52.013    20170426  :d1:-1.#R
2018-03-15 15:03:52.013    20170426  :zg:35.76
2018-03-15 15:03:52.013    20170426  :d0:-1.#R
2018-03-15 15:03:52.013    20170426  :close:6.31
2018-03-15 15:03:52.013    20170426  :d1:-1.#R
2018-03-15 15:03:52.013    20170426  :zg:35.76
2018-03-15 15:03:52.014    20170426  :d0:-1.#R
2018-03-15 15:03:52.014    20170426  :close:19.08
...



--  作者:FireScript
--  发布时间:2018/3/15 15:17:32
--  
你这个输出是一个非常短暂的时间内输出的结果。你输出更长时间的来看看。 这么短的时间可能比行情分笔来的间隔时间都短。
--  作者:yin8jun
--  发布时间:2018/3/15 20:30:16
--  
上面输出是三天的,2017-04-24,5,6。看第二排的日期。第一排时间是后台测试的当地时间。你在你机器上跑一下看
--  作者:FireScript
--  发布时间:2018/3/16 10:16:32
--  
你这个运行环境是怎么配置的。 比如运行周期,运行设置等。详细说明下。
--  作者:yin8jun
--  发布时间:2018/3/16 22:01:36
--  
后台测试上面说的三只股票,时间为2014.1.1到2018.3.15,日线。K线走完。关闭不间断监控,分笔速率扫描。使用500根K线。
--  作者:yin8jun
--  发布时间:2018/3/19 10:05:09
--  
请问发现问题没?
--  作者:FireScript
--  发布时间:2018/3/19 11:06:06
--  

本地做下测试,但是结果并没有显示值是一样的这种情况。而且zig我输出的值和你也不一样。

你加一行代码输出下品种 试下

DEBUGFILE(\'D:\\test2\\TEST.TXT\',STKNAME,1);


--  作者:yin8jun
--  发布时间:2018/4/20 14:10:19
--  
我加了你说的那行后测试如下,“20170714  :d1:-1.#R”。-1.#R这个值代表什么?

2018-04-20 14:03:18.397    鲁西化工
2018-04-20 14:03:18.411    20170713  :d1:37.88
2018-04-20 14:03:18.425    20170713  :zg:50.83
2018-04-20 14:03:18.445    20170713  :d0:52.50
2018-04-20 14:03:18.469    20170713  :close:51.63
2018-04-20 14:03:18.470    中国平安
2018-04-20 14:03:18.486    20170713  :d1:15.58
2018-04-20 14:03:18.501    20170713  :zg:21.27
2018-04-20 14:03:18.521    20170713  :d0:22.08
2018-04-20 14:03:18.547    20170713  :close:21.37
2018-04-20 14:03:18.547    金禾实业
2018-04-20 14:03:18.566    20170714  :d1:5.74
2018-04-20 14:03:18.579    20170714  :zg:6.92
2018-04-20 14:03:18.599    20170714  :d0:7.33
2018-04-20 14:03:18.625    20170714  :close:7.02
2018-04-20 14:03:18.626    鲁西化工
2018-04-20 14:03:18.643    20170714  :d1:-1.#R
2018-04-20 14:03:18.656    20170714  :zg:52.79
2018-04-20 14:03:18.675    20170714  :d0:-1.#R
2018-04-20 14:03:18.700    20170714  :close:52.77

--  作者:FireScript
--  发布时间:2018/4/20 14:41:49
--  
 那个一般是无效值的缘故。或者因为某些函数没有计算结果导致的。
[此贴子已经被作者于2018/4/20 14:42:08编辑过]

--  作者:yin8jun
--  发布时间:2018/4/20 16:25:02
--  
把数据改为1000就没有这个了。但是放进策略里还是发现有其他的问题。后台精细化测试中国平安,贵州茅台,鲁西化工,金禾实业,日线,2014.1.1到现在。鲁西和金禾实业的输出数据还是错误的,如下:

2018-04-20 16:19:03.236    20170407
2018-04-20 16:19:03.236    鲁西化工  :d1:390.60
2018-04-20 16:19:03.237    鲁西化工  :zg:383.80
2018-04-20 16:19:03.237    鲁西化工  :d0:390.60
2018-04-20 16:19:03.237    鲁西化工  :close:6.00
2018-04-20 16:19:03.237    20170407
2018-04-20 16:19:03.237    金禾实业  :d1:390.60
2018-04-20 16:19:03.237    金禾实业  :zg:383.80
2018-04-20 16:19:03.238    金禾实业  :d0:390.60
2018-04-20 16:19:03.238    金禾实业  :close:19.58
2018-04-20 16:19:03.238    20170407
2018-04-20 16:19:03.238    中国平安  :d1:390.60
2018-04-20 16:19:03.238    中国平安  :zg:383.80
2018-04-20 16:19:03.238    中国平安  :d0:390.60
2018-04-20 16:19:03.239    中国平安  :close:35.88
2018-04-20 16:19:03.245    20170410
2018-04-20 16:19:03.245    贵州茅台  :d1:243.77
2018-04-20 16:19:03.245    贵州茅台  :zg:382.22
2018-04-20 16:19:03.246    贵州茅台  :d0:390.60
2018-04-20 16:19:03.246    贵州茅台  :close:383.41
2018-04-20 16:19:03.246    20170410
2018-04-20 16:19:03.246    鲁西化工  :d1:390.60
2018-04-20 16:19:03.246    鲁西化工  :zg:382.22
2018-04-20 16:19:03.247    鲁西化工  :d0:390.60
2018-04-20 16:19:03.247    鲁西化工  :close:5.96
2018-04-20 16:19:03.247    20170410
2018-04-20 16:19:03.247    金禾实业  :d1:390.60
2018-04-20 16:19:03.247    金禾实业  :zg:382.22
2018-04-20 16:19:03.247    金禾实业  :d0:390.60
2018-04-20 16:19:03.248    金禾实业  :close:19.64


代码如下:
globalvariable:holdh=0;
globalvariable:jycs=0;
globalvariable:kscs=0;


v1:=intpart(100000/open/100)*100;
zg:=zig(4,20);

zt:=(c+0.01)/ref(c,1)>=1.1;

//zg
refzg1:=ref(zg,1);
refzg2:=ref(zg,2);
d1dian:=zg<refzg1 and refzg1>refzg2,noaxis;
d0bars:=barslast(d1dian)+1;

d0:=ref(refzg1,d0bars-1);
d1:=if(sum(l/d0<=0.8,d0bars)=0,ref(d0,d0bars+1),d0);
d1bars:=if(sum(l/d0<=0.8,d0bars)=0,ref(d0bars,d0bars+1)+d0bars,d0bars);

if cross(sum(l/d0<=0.8,d0bars),1) then kscs:=0;

if cross(sum(l/d0<=0.8,d0bars),1) then jycs:=0;
if d1dian then kscs:=0;

ma120:=ma(c,120);

kd:=d1=ref(d1,1) and c>d1 and llv(c,d1bars)/d1>=0.6 and c/d1<1.4,noaxis;
kd2:=sum(zt,3)=0 and h>ref(hhv(h,30),1) and jycs<1 and TBUYHOLDINGEX(\'\',\'\',2)=0 and kscs<1;

if kd2 and kd then begin
tbuy(1,v1,lmt,close);
holdh:=h;
jycs:=jycs+1;
end


enp:=tenterprice;
zs:=0.90;
izhisun:=enp*zs;

//止损
if TBUYHOLDINGEX(\'\',\'\',2)>0 and l/enp<=zs and tenterbars>0 then begin
tsell(1,0,lmt,min(enp*zs,open),0,\'\',\'\');
end

//止损ma120
if TBUYHOLDINGEX(\'\',\'\',2)>0 and c<ma120 and tenterbars>0 and c>enp then begin
tsell(1,0,lmt,min(enp*zs,open),0,\'\',\'\');
if c<enp then kscs:=kscs+1;
end

//多回调:止损+移动止赢
huitiao:=holdh*0.2;//回调20%止损

if TBUYHOLDINGEX(\'\',\'\',2)>0 and tenterbars>0 then 
begin
 if (holdh-l)>=huitiao then begin
 if c<enp then kscs:=kscs+1;
tsell(1,0,lmt,min(holdh-huitiao,open),0,\'\',\'\');

end
end

//最高浮动利润

if TBUYHOLDINGEX(\'\',\'\',2)>0 and tenterbars>0 then 
begin
 if high>holdh then holdh:=h; 
end

if islastbar then begin
rq:=stkname;
DEBUGFILE(\'D:\\test2\\TEST.TXT\',NUMTOSTR(YEAR*10000+MONTH*100+DAY,0),1);
debugfile(\'D:\\test2\\TEST.TXT\',rq+\'  :d1:%.2f\',d1);
debugfile(\'D:\\test2\\TEST.TXT\',rq+\'  :zg:%.2f\',zg);
debugfile(\'D:\\test2\\TEST.TXT\',rq+\'  :d0:%.2f\',d0);
debugfile(\'D:\\test2\\TEST.TXT\',rq+\'  :close:%.2f\',close);
end





[此贴子已经被作者于2018/4/20 16:26:39编辑过]