以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://www.weistock.com/bbs/list.asp?boardid=4) ---- 请教开仓问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=147217) |
-- 作者:jjjfk -- 发布时间:2017/1/22 13:39:28 -- 请教开仓问题 你好,请教个问题: 我编写的系统在多数交易日信号都是没有问题的,信号都正常,但一个月总有那么两三天的开平仓是有问题的;如图所示,开仓信号是没问题的,但居然在当根K线就平了多仓(且随后又在当根K线开了空仓和平了空仓),我排查了很久都找不出原因,真怀疑是不是软件问题,烦请找出“平多仓”原因,因为本次“平多仓”行为在代码里根本找不到相关依据,谢谢。以下是源代码:
//此策略好多执行错误(没达到条件的居然开平仓),BUG日期:
//这里n=0.6,m=60;
a3:=ref(hhv(high,todaybar),1);
a6:=ref(hhv(high,todaybar),enterbars);
a8:=a7-n*abs(a6-a7); //第一次做多止损
//时间定义
//做多止损
if holding=0 and totaldaytrade>=1 and low<=a8 and t1
if holding<0 and totaldaytrade>=1 and high>=a3
//做空条件
//做空止损
if holding=0 and totaldaytrade>=1 and high>=a9 and t1
if holding>0 and totaldaytrade>=1 and low<=a4
//收盘平仓 if holding<0 and t8 |
-- 作者:shq -- 发布时间:2017/1/22 15:25:43 -- 1、本地测试没问题,所有条件均输出在图表上,均为1,故四个开平仓动作是正确触发的; 2、当触发做多条件的buy后,a6、a7、a8你可以输出看下,其实它们的值没有变,并不是你说的“开仓时的日内最高最低点”,enterbars输出为200多,延伸至1月17日的最后一次开仓,a8也一直没变。但是代码执行是自上而下,不可能这时候还去按照开多buy后再计算a6,a7,a8等,所以跟你预想的结果不一样。这个策略还需要进一步完善。
|
-- 作者:jjjfk -- 发布时间:2017/1/22 15:48:27 -- 请问你的意思是说“开仓时的日内最高最低点”编写有问题吗 |
-- 作者:shq -- 发布时间:2017/1/22 16:11:34 -- a6:=ref(hhv(high,todaybar),enterbars); a7:=ref(llv(low,todaybar),enterbars); //a6、a7是开仓时的日内最高最低点 这一段编写没问题,只是,在本案例中,在02:29K线触发开多条件后,之后作比较的a6,a7并不是开仓后的1月18日内的最高最低点,它是17日的两个值,所以后面条件陆续成立,导致平多开空平空。代码编写还需完善
[此贴子已经被作者于2017-1-22 16:12:21编辑过]
|
-- 作者:jjjfk -- 发布时间:2017/1/22 16:20:26 -- 既然a6/a7编写没问题,那他们不就应该代表开仓时的当天最高最低点吗,怎么会跟前一天扯上的呢?该如何编写才能还原本来的意思? |
-- 作者:shq -- 发布时间:2017/1/22 16:29:39 -- 1、代码是自上而下执行,建议你把a6,a7,,a8这些值直接在图表上输出,观察在2:29他们是什么值; 2、尝试把代码顺序换下,比如:先开仓,再是 开仓时的日内最高最低点 系列公式,然后是止损公式。重新调试看下。
|
-- 作者:jjjfk -- 发布时间:2017/1/22 17:17:27 -- 按照你说的,我把顺序都调了一下,所有问题都解决了,非常感谢! |