以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]止损是否有问题?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=76093)

--  作者:渴望知识
--  发布时间:2015/3/3 13:21:33
--  [求助]止损是否有问题?

老师好

我单独做了一个系统来测试图表程序,发现一个问题,请指教:

这个使用公式测试系统回测后,图形不对,一开就平,不知道是哪里出了问题。

品种鸡蛋,1分钟或5分钟图表测试,后面附图。

zd:=ma(c,5)>ref(ma(c,5),1)  and holding=0;//开多条件
zk:=ma(c,5)<ref(ma(c,5),1)  and holding=0;//开空条件


BUY(holding=0 and zd and c>o and 090000<time<145500,1,limitr,c); //开多

kcwzl:=valuewhen(zd and ref(holding<=0,1) and holding>0,low);//开多单时的最低价
kdzsjg:kcwzl-3,COLORRED;//多单止损价格
kdzs:=C<kdzsjg ;//多单止损条件
sell(kdzs or c>kdzs+50 and holding>0,0,limitr,c);


此主题相关图片如下:qq图片20150303131957.png
按此在新窗口浏览图片

--  作者:jinzhe
--  发布时间:2015/3/3 13:28:17
--  

信号和测评是一致的,k线图上的信号也是一开就平的,哪里不对了?


--  作者:渴望知识
--  发布时间:2015/3/3 13:34:10
--  
可是并没有满足平多的条件,就被平了?这还对?
[此贴子已经被作者于2015/3/3 13:34:20编辑过]

--  作者:jinzhe
--  发布时间:2015/3/3 13:45:31
--  

哪里不对了?是你自己代码错误

 c>kdzs+50

kdzs这个逻辑判断,不是价格或者数值,得出的结果不是0就是1,

 c>kdzs+50 相当于c>51,你看看白糖的价格,有不满足的情况吗?


--  作者:渴望知识
--  发布时间:2015/3/3 13:49:26
--  
哦,对啊,谢谢了。
--  作者:渴望知识
--  发布时间:2015/3/3 13:56:43
--  

还是有问题啊,我把代码改了,但还是有单子一开就平,这这个问题也没解决啊。

input:tq(10,3,60,1);
abb:=(time0-timetot0(dynainfo(207))<=tq) or not(islastbar);

zd:=ma(c,5)>ref(ma(c,5),1)  and holding=0;//开多条件
zk:=ma(c,5)<ref(ma(c,5),1)  and holding=0;//开空条件


BUY(holding=0 and zd and c>o and 090000<time<145500,1,limitr,c); //开多

kcwzl:=valuewhen(zd and ref(holding<=0,1) and holding>0,low);//开多单时的最低价
kdzsjg:kcwzl-3,COLORRED;//多单止损价格
kdzs:=C<kdzsjg  ;//多单止损条件
sell(kdzs or c>kdzsjg+20 and holding>0,0,limitr,c);

 

 


此主题相关图片如下:qq截图20150303135617.png
按此在新窗口浏览图片

--  作者:jinzhe
--  发布时间:2015/3/3 14:05:21
--  

kcwzl:=valuewhen(zd and ref(holding<=0,1) and holding>0,low);//开多单时的最低价

改成

kcwzl:=ref(low,enterbars);//开多单时的最低价


--  作者:渴望知识
--  发布时间:2015/3/3 14:17:39
--  

我改了,还是有点问题,请看附件:

1、9点半的那单还是被直接平了。

2、9点40那根为什么只是多1个点就平掉?也没到我止损止盈啊?

 

 

input:tq(10,3,60,1);
abb:=(time0-timetot0(dynainfo(207))<=tq) or not(islastbar);

zd:=ma(c,5)>ref(ma(c,5),1)  and holding=0;//开多条件
zk:=ma(c,5)<ref(ma(c,5),1)  and holding=0;//开空条件


BUY(holding=0 and zd and c>o ,1,limitr,c); //开多

kcwzl:=ref(low,enterbars);//开多单时的最低价
kdzsjg:kcwzl-3,COLORRED;//多单止损价格
kdzs:=C<kdzsjg  ;//多单止损条件
sell(kdzs or c>kdzsjg+20 and holding>0,0,limitr,c);


此主题相关图片如下:qq截图20150303141525.png
按此在新窗口浏览图片

--  作者:jinzhe
--  发布时间:2015/3/3 14:25:07
--  

因为条件满足了啊

你自己算算kdzs or c>kdzsjg+20是不是条件满足

具体点,你看看这根k线是不是 c>kdzsjg+20条件满足?

[此贴子已经被作者于2015/3/3 14:25:31编辑过]

--  作者:渴望知识
--  发布时间:2015/3/3 14:34:26
--  

哦,这个是因为有滑点产生了,所以才是条件成立他执行,体现出来就是那个位置了。

谢谢。

有不明白的我再开新贴来问。