先贴出止损代码 和出场代码
if holding > 0 then begin
if low < enterprice - 2 * mindiff then sell( holding > 0, order, market ) ;
end
if holding < 0 then begin
if high > enterprice + 2 * mindiff then sellshort( holding < 0, order, market );
end
sell( low < longma, order, market ) ;
sellshort( high > longma, order, market );
以上就两种出场方式,一个2个点固定止损,另外一个是条件止损,,order 为手数,趋势线是longma:=ma(close,120) ; 本打算来试试2个点止损是什么效果,测试之后 问题就来了,,具体如下图所示 :
麻烦老师帮忙解答一下,,到底是哪里出了问题,为什么止损越小,赚钱就越多,,胜率就越高,无法理喻啊,多谢

之前参照老师 给出的意见 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=138570 具体见此帖
很显然,是 这段止损代码出问题了, 即便是 low <= 或者 high >= 也是一样的问题,,,所以未能达到,,超过多少个点立即止损出局的效果,麻烦老师帮忙想一下解决办法,谢谢
[此贴子已经被作者于2016-8-25 22:22:50编辑过]
sell( low < longma, order, market ) ;
sellshort( high > longma, order, market );
这组代码,,测试中也是有 位移现象,,也就是说,,止损点并非是价格大于或小于 趋势线,然后就市价出去成交,,最后是以收盘价的,,,
系统这组 代码 也测试了
if avgenterprice-c > 2 * mindiff then begin
sell(1,holding,market);
end
if c - avgenterprice > 2 * mindiff then begin
sellshort(1,holding,market);
end
缺陷是 信号反复出现和消失,,,,,即便把 C 改为 high 或者low 但是最终的止损效果都未能达到固定止损,,
你这样用开仓价来止损的,下单价位最好用marketr,或者thisclose,能正确的在本周期上获取当前开仓信号的开仓价,用market获取的是上一个开仓价。
以及止损或者平仓语句一定要写在开仓语句后面
意思是说,把 平仓语句写在开仓语句之前可以避免上述情况对么?
if holding > 0 then begin
if low < enterprice - 2 * mindiff then sell( holding > 0, order, market ) ;
end
if holding < 0 then begin
if high > enterprice + 2 * mindiff then sellshort( holding < 0, order, market );
end
sell( low < longma, order, market ) ; sellshort( high > longma, order, market );
这段写在开仓语句之前,,,先平后开? |
我讲了两点,第一点你没看,第二点还看反了,这两点是要同时成立的
以及止损或者平仓语句一定要写在开仓语句后面
是平仓写在开仓后面
老师,,我实在理解不透您说的,,提高沟通教学效率,,您就帮我改改吧,这样改对了我再去慢慢悟这个过程,这样可以节省老师精力,代码就贴下面,麻烦了
开仓语句
if holding = 0 then begin
if Bcondthen buy( 1, order, limitr, max( open, longma ) ), ignorecheckprice;
end
if holding = 0 then begin
if Scond then buyshort( 1, order, limitr, min( open, longma ) ), ignorecheckprice;
end
平仓语句
if holding > 0 then begin
if low < enterprice - 6 * mindiff then sell( holding > 0, order, market ) ;
end
if holding < 0 then begin
if high > enterprice + 6 * mindiff then sellshort( holding < 0, order, market );
end
sell( low <longma, order, market ), ignorecheckprice ;
sellshort( high > longma, order, market ), ignorecheckprice ;
思路是,,进场之后,6个点止损, 或者 多头 跌破 趋势线 longma 立即止损,,,空头 涨过 趋势线 longma 立即止损,,, 麻烦帮忙看看问题出在哪里,怎么修改才能达到这样的效果,,多谢了
if holding = 0 then begin
if Bcondthen buy( 1, order, limitr, max( open, longma ) ), ignorecheckprice;
end
if holding = 0 then begin
if Scond then buyshort( 1, order, limitr, min( open, longma ) ), ignorecheckprice;
end
if holding > 0 then begin
if low < enterprice - 6 * mindiff then sell( holding > 0, order, marketr ) ;
end
if holding < 0 then begin
if high > enterprice + 6 * mindiff then sellshort( holding < 0, order, marketr );
end
sell( low <longma, order, marketr ), ignorecheckprice ;
sellshort( high > longma, order, marketr ), ignorecheckprice ;