能帮忙改一下吗?实现平仓盈亏亏损六百,10个周期不开仓。
VARIABLE:pcyk:=0;
IF ( pcyk-TACCOUNT(30)>600 or TNUMPROFIT(1)<-600) and TEXITBARS<10 THEN//正式
SETTRADESIGN(0);
ELSE
SETTRADESIGN(1);
pcyk:=TACCOUNT(30);
没有必要再使用一个全局变量了吧。而且后台是用GLOBALVARIABLE 来定义全局变量。
IF TNUMPROFIT(1)<-600 and TEXITBARS<10 THEN//正式
SETTRADESIGN(0);
ELSE
SETTRADESIGN(1);
正常这样也就足够了。
你好老师。实际测试时执行的并不顺利。如果是模型内的信号平仓,结果没错。但是如果有手动平仓或者程序止损的话。还是会开仓。
能不能帮忙改一下。兼顾到上面的所有情况。
这个不行,你这相当于半自动了。非当前策略自身的开平仓动作的盈亏等数据,是无法在策略里面用函数提取到的。
并且TACCOUNT(30) 是针对账户所有品种的平仓盈亏。
金字塔肯定有办法实现的。不然VB开发可以吗?请赐教
目前来说这个需求我的确实现不了,VBA相关我这边不是很了解,可以去高级区咨询问下。
如果搞不定我就换个方法,那就帮我看看这个逻辑对不对吧。(后台)
我已经确认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;//正开关
先确认下:你是依据总的平仓盈亏,还是指最近一次的平仓盈亏?如果是前者,TACCOUNT(30) 直接就可以调用到。
[此贴子已经被作者于2018/8/13 13:27:08编辑过]