以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 实现平仓盈亏亏损六百,10个周期不开仓。 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=164842) |
-- 作者:qq代人发帖 -- 发布时间:2018/8/10 10:32:49 -- 实现平仓盈亏亏损六百,10个周期不开仓。 能帮忙改一下吗?实现平仓盈亏亏损六百,10个周期不开仓。 SETTRADESIGN(0);
pcyk:=TACCOUNT(30); |
-- 作者:FireScript -- 发布时间:2018/8/10 10:44:20 -- 没有必要再使用一个全局变量了吧。而且后台是用GLOBALVARIABLE 来定义全局变量。 IF TNUMPROFIT(1)<-600 and TEXITBARS<10 THEN//正式 SETTRADESIGN(0); ELSE SETTRADESIGN(1); 正常这样也就足够了。
|
-- 作者:ccwxning -- 发布时间:2018/8/10 12:44:31 -- 你好老师。实际测试时执行的并不顺利。如果是模型内的信号平仓,结果没错。但是如果有手动平仓或者程序止损的话。还是会开仓。 能不能帮忙改一下。兼顾到上面的所有情况。
|
-- 作者:FireScript -- 发布时间:2018/8/10 13:14:17 -- 这个不行,你这相当于半自动了。非当前策略自身的开平仓动作的盈亏等数据,是无法在策略里面用函数提取到的。 并且TACCOUNT(30) 是针对账户所有品种的平仓盈亏。
|
-- 作者:ccwxning -- 发布时间:2018/8/10 13:28:23 -- 目前我就是单品种,TNUMPROFIT(1)确实不行。所以想通过TACCOUNT(30)和全局变量来实现。TACCOUNT(30)也不能读取到数值吗?可有其他办法推荐。 |
-- 作者:ccwxning -- 发布时间:2018/8/10 13:36:15 -- 金字塔肯定有办法实现的。不然VB开发可以吗?请赐教 |
-- 作者:FireScript -- 发布时间:2018/8/10 15:11:28 -- 目前来说这个需求我的确实现不了,VBA相关我这边不是很了解,可以去高级区咨询问下。 |
-- 作者:ccwxning -- 发布时间:2018/8/11 21:22:48 -- 如果搞不定我就换个方法,那就帮我看看这个逻辑对不对吧。(后台) 我已经确认TACCOUNT(30)是可以取到数的。 GLOBALVARIABLE:pcyk:=0; GLOBALVARIABLE:KSZQ:=0; IF ( pcyk-TACCOUNT(30)>600 ) and KSZQ<10 THEN KSZQ:=KSZQ+1; // 平仓时间小于50周期,周期计数+1 ELSE KSZQ:=0;// 平仓时间大于50周期,周期计数清零 IF ( pcyk-TACCOUNT(30)>600 ) and KSZQ<10 THEN pcyk:=pcyk;//平仓时间小于50周期,pcyk赋值旧的平仓盈亏 ELSE pcyk:=TACCOUNT(30);//如果过了50个周期pcyk赋值新的平仓盈亏 IF ( pcyk-TACCOUNT(30)>600 ) and KSZQ <10 THEN SET2:=0; //反开关 ELSE SET2:=1;//正开关 |
-- 作者:FireScript -- 发布时间:2018/8/13 13:25:53 -- 先确认下:你是依据总的平仓盈亏,还是指最近一次的平仓盈亏?如果是前者,TACCOUNT(30) 直接就可以调用到。 [此贴子已经被作者于2018/8/13 13:27:08编辑过]
|
-- 作者:ccwxning -- 发布时间:2018/8/13 15:27:03 -- 用pcyk-TACCOUNT(30)代替最近一次平仓盈亏。 |