以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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个周期不开仓。
VARIABLE:pcyk:=0;
IF (  pcyk-TACCOUNT(30)>600 or TNUMPROFIT(1)<-600)  and TEXITBARS<10 THEN//正式

SETTRADESIGN(0);


ELSE
 SETTRADESIGN(1);

  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)代替最近一次平仓盈亏。