以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 止损不能满足需求 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=138649) |
|
-- 作者:2457146251 -- 发布时间:2016/8/25 20:45:27 -- 止损不能满足需求 先贴出止损代码 和出场代码
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个点止损是什么效果,测试之后 问题就来了,,具体如下图所示 :
![]() 麻烦老师帮忙解答一下,,到底是哪里出了问题,为什么止损越小,赚钱就越多,,胜率就越高,无法理喻啊,多谢
|
|
-- 作者:2457146251 -- 发布时间:2016/8/25 22:21:06 -- ![]() 之前参照老师 给出的意见 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=138570 具体见此帖 很显然,是 这段止损代码出问题了, 即便是 low <= 或者 high >= 也是一样的问题,,,所以未能达到,,超过多少个点立即止损出局的效果,麻烦老师帮忙想一下解决办法,谢谢
[此贴子已经被作者于2016-8-25 22:22:50编辑过]
|
|
-- 作者:2457146251 -- 发布时间:2016/8/25 22:47:38 -- 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 但是最终的止损效果都未能达到固定止损,, |
|
-- 作者:jinzhe -- 发布时间:2016/8/26 9:05:26 -- 你这样用开仓价来止损的,下单价位最好用marketr,或者thisclose,能正确的在本周期上获取当前开仓信号的开仓价,用market获取的是上一个开仓价。 以及止损或者平仓语句一定要写在开仓语句后面 |
|
-- 作者:2457146251 -- 发布时间:2016/8/26 9:14:40 -- 回复:(jinzhe)你这样用开仓价来止损的,下单价位最... 意思是说,把 平仓语句写在开仓语句之前可以避免上述情况对么? 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
|
|
-- 作者:jinzhe -- 发布时间:2016/8/26 9:24:25 -- 我讲了两点,第一点你没看,第二点还看反了,这两点是要同时成立的
以及止损或者平仓语句一定要写在开仓语句后面 是平仓写在开仓后面 |
|
-- 作者:2457146251 -- 发布时间:2016/8/26 9:40:36 -- 回复:(jinzhe)我讲了两点,第一点你没看,第二点还... 老师,,我实在理解不透您说的,,提高沟通教学效率,,您就帮我改改吧,这样改对了我再去慢慢悟这个过程,这样可以节省老师精力,代码就贴下面,麻烦了 开仓语句 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 立即止损,,, 麻烦帮忙看看问题出在哪里,怎么修改才能达到这样的效果,,多谢了 |
|
-- 作者:jinzhe -- 发布时间:2016/8/26 9:51:28 -- 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 ;
|
|
-- 作者:2457146251 -- 发布时间:2016/8/26 9:56:30 -- 回复:(jinzhe)if holding = 0 then begin ... 只是把 market 改为 marketr? |
|
-- 作者:jinzhe -- 发布时间:2016/8/26 9:58:19 -- 是 |